忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

aov関数の方がいろんな用途に使えて便利そうなのだが、タイプ1平方和を計算する。
なので、carパッケージのAnova関数を勉強しようと思っていた。
タイプIIかタイプIIIかは議論の分かれるところらしく、別に個人的にはタイプIIでもよいと思う。
しかし、上述のとおりaovではタイプIしか出ない…と思っていたのだが、基本に返って (今頃)
Jonathan Baronの解説を読んでみると、SASやSPSSで平方和の指定をデフォルトのタイプ3からタイプ2にすれば、RとSASやSPSSは同じ結果になるよ、と書いてある。
「RでSASやSPSSと同じ出力が欲しい!」という人はそういう回答を求めてないと思うのだが…

ということは、非釣合型の分散分析でもaovでOKじゃないか、と思ったので上記HPの解説とanovakunのタイプ2指定の出力を比較してみた。

上記HP、6.8.1 Example 1: Mixed Models Approach to Within-Subject Factors (Hays, 1988, Table 13.21.2, p. 518)のUnbalanced (Nonorthogonal) Designs セクションより
以下転載

#データ生成
data1<-c(49,47,46,47,48,47,41,46,43,47,46,45,48,46,47,45,49,44,44,45,42,45,45,40,49,46,47,45,49,45,41,43,44,46,45,40,45,43,44,45,48,46,40,45,40,45,47,40)
### 交互作用ありにしたいときは以下を使う (適当にデータをいじったもの)
###data1<-c(49,10,46,47,48,47,41,46,43,5,46,5,48,46,47,45,100,44,44,45,42,45,45,40,49,46,47,45,49,45,41,43,44,46,100,40,45,43,44,45,48,46,40,45,10,45,10,40)
## 見やすくした (上記HPのコードを少し修正した。HPのままこぴぺするとエラーになる)
matrix(data1, ncol= 4, dimnames = list(paste("subj", 1:12), c("Shape1.Color1", "Shape2.Color1" ,"Shape1.Color2", "Shape2.Color2"))) 
## anovakunでも検証するためにデータフレームにした
datkun <- data.frame(matrix(data1, ncol= 4, dimnames = list(paste("subj", 1:12), c("Shape1.Color1", "Shape2.Color1" ,"Shape1.Color2", "Shape2.Color2"))))
# aov用のデータフレーム作成
Hays.df <- data.frame(rt = data1, subj = factor(rep(paste("subj", 1:12, sep=""), 4)), shape = factor(rep(rep(c("shape1", "shape2"), c(12, 12)), 2)), color = factor(rep(c("color1", "color2"), c(24, 24))))
# 非釣合型のデータにするため、grp変数を付け加える
Hays.df$grp <- factor(rep(c(1,1,1,1,1,1,1,1,2,2,2,2), 4))
## anovakun用のデータフレームにも付け加える
grp <- c(1,1,1,1,1,1,1,1,2,2,2,2)
datkun <- data.frame(cbind(grp, datkun))
# aovで分析
summary(aov(rt ~ grp*color*shape + Error(subj/(color+shape)), data=Hays.df))
## HPの記述は誤差項のカッコをつけわすれている; summary(aov(rt ~ grp*color*shape + Error(subj/shape+color), data=Hays.df))
# anovakunで分析
anovakun(datkun, "AsBC", 2, 2, 2, type2=T)

出力は全く同じになった。

結論: もうaovでやろう。lm, glmを使ったとき、気が向いたらAnovaを使おう。あと、そろそろまじめに平方和について勉強しよう
最近知ったのだが、anova関数はそもそも尤度を使ってモデル比較をするための関数らしい。知らないことが多いものだ

誤差項はスラッシュを使うよりも以下の形にしたほうが見やすい出力になる
被験者*対応がある要因をs:aとする。
後は足していくだけ
s:a + s:b + s:a:b

PR
Comment
Trackback
Trackback URL

Comment form
Title
Color & Icon Vodafone絵文字 i-mode絵文字 Ezweb絵文字  
Comment
Name
Mail
URL
Password
プロフィール
HN:
tao
HP:
性別:
非公開
職業:
会社員
趣味:
アウトドア、自転車、ジョギング、英語学習
自己紹介:
・千葉在住のサラリーマンです。データ分析っぽいことが仕事。
・今年英検1級取得。今はTOEIC高得点を目指して勉強中。
・興味のあることは野球、アウトドア、英語学習、統計、プログラミング、PC関係などなど。
ブログ内検索
freead
順位表
プロ野球データFreak
セリーグ順位表
パリーグ順位表