メモ:分散分析:2要因分散分析対応なし
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
メモ:分散分析:2要因分散分析対応なし [2015/12/27 17:38] – 作成 Wiki Editor | メモ:分散分析:2要因分散分析対応なし [2015/12/28 12:44] (現在) – Wiki Editor | ||
---|---|---|---|
行 25: | 行 25: | ||
| 3| 男| 日本| | | 3| 男| 日本| | ||
| ... |||| | | ... |||| | ||
+ | |||
+ | |||
+ | > ID <- rep(1:30); | ||
+ | > SEX <- c(rep(" | ||
+ | > CN <- rep(c(rep(" | ||
+ | > SCORE <- c(3, | ||
+ | > df <- data.frame(ID=ID, | ||
+ | > df | ||
+ | ID SEX CN SCORE | ||
+ | 1 | ||
+ | 2 | ||
+ | 3 | ||
+ | 4 | ||
+ | 5 | ||
+ | 6 | ||
+ | 7 | ||
+ | 8 | ||
+ | 9 | ||
+ | 10 10 男 韓国 | ||
+ | 11 11 男 米国 | ||
+ | 12 12 男 米国 | ||
+ | 13 13 男 米国 | ||
+ | 14 14 男 米国 | ||
+ | 15 15 男 米国 | ||
+ | 16 16 女 日本 | ||
+ | 17 17 女 日本 | ||
+ | 18 18 女 日本 | ||
+ | 19 19 女 日本 | ||
+ | 20 20 女 日本 | ||
+ | 21 21 女 韓国 | ||
+ | 22 22 女 韓国 | ||
+ | 23 23 女 韓国 | ||
+ | 24 24 女 韓国 | ||
+ | 25 25 女 韓国 | ||
+ | 26 26 女 米国 | ||
+ | 27 27 女 米国 | ||
+ | 28 28 女 米国 | ||
+ | 29 29 女 米国 | ||
+ | 30 30 女 米国 | ||
+ | |||
+ | 2要因以上の分散分析の場合、タイプ1平方和では問題がでる。タイプ1平方和だと、要因を検討する順序によって、平方和が変化する。それに対応するため、SPSSではタイプ3平方和が使われる。Rでタイプ3平方和を計算するにはcarパッケージのAnova()関数が使えるが、その際、対比の方法を適切に設定してやる必要がある。Rでは、カテゴリ変数は適切にダミー変数に変換されるが、その変換方式によって平方和の計算が変わってくる。タイプ3平方和を適切に計算するには、contrastsをcontr.sumに変更しておく必要がある(1行目)。contrastsの2番目に指定した要素は、順序カテゴリカル変数の場合の指定。今回は無関係。 | ||
+ | |||
+ | > res.lm <- lm(SCORE ~ SEX*CN, df); | ||
+ | > Anova(res.lm, | ||
+ | Anova Table (Type III tests) | ||
+ | | ||
+ | Response: SCORE | ||
+ | Sum Sq Df F value Pr(>F) | ||
+ | (Intercept) 537.63 | ||
+ | SEX | ||
+ | CN 0.47 2 | ||
+ | SEX: | ||
+ | Residuals | ||
+ | |||
+ | まず、lm()関数で推定し、その結果を分散分析する。lm()関数では、性別と国に加えて、両者の交互作用も含めて検討する。 | ||
+ | |||
+ | 結果は、主効果は有意ではないが、交互作用が有意になっている。なので、単純主効果の検討に入る。単純主効果の検討にはいろいろ方式があるようだ。SPSSでは、第1要因ごとに群分けしたデータで第2要因について分散分析を行うが、誤差項のとりかたは群ごとの分散分析の誤差平方和および自由度の合計として検討している。なので、Rで同様の分析を行うにはやや複雑になる。単純に、第1要因ごとに群分けして第2要因について分散分析を行うだけで済ましている場合も見かける。ここでは、SPSSと同じ分析を行うことが主眼なので、面倒でもやってみよう。 | ||
+ | |||
+ | 追記:せっかく計算したが、実は上記の分散分析表の誤差平方和(Residuals)の値であった。 | ||
+ | # | ||
+ | > dfsub1 <- subset(df, CN==" | ||
+ | > dfsub2 <- subset(df, CN==" | ||
+ | > dfsub3 <- subset(df, CN==" | ||
+ | | ||
+ | # | ||
+ | > res.anova1 <- anova(lm(SCORE ~ SEX, dfsub1)); | ||
+ | > res.anova2 <- anova(lm(SCORE ~ SEX, dfsub2)); | ||
+ | > res.anova3 <- anova(lm(SCORE ~ SEX, dfsub3)); | ||
+ | | ||
+ | # | ||
+ | > errSS <- res.anova1$" | ||
+ | # | ||
+ | > errDF <- res.anova1$Df[2]+res.anova2$Df[2]+res.anova3$Df[2]; | ||
+ | | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | > F1 <- (res.anova1$" | ||
+ | > F2 <- (res.anova2$" | ||
+ | > F3 <- (res.anova3$" | ||
+ | | ||
+ | # | ||
+ | > round(1-pf(F1, | ||
+ | [1] 0.01 | ||
+ | > round(1-pf(F2, | ||
+ | [1] 0.645 | ||
+ | > round(1-pf(F3, | ||
+ | [1] 0 | ||
+ | 要因数が多いと面倒だが、手順は単純なのでうまく関数にまとめておけば、便利そうだ。 | ||
+ | |||
+ | 単純主効果について検討できたところで、SPSSでは各水準における多重比較が行なわれるが、この推定値の求め方がよくわからない。いきなり有意確率が表示されているが、おそらくペアごとにt検定を行った結果であると思われる。しかし、通常通りt検定を実施しても同一の結果とならない。ここは、やはり群ごとにサブデータを作って分散分析を行う方法の方が、簡便のようだ。。(しかし気になる)。 | ||
メモ/分散分析/2要因分散分析対応なし.1451205497.txt.bz2 · 最終更新: 2015/12/27 17:38 by Wiki Editor