看板 R_Language 關於我們 聯絡資訊
先解決MS不正確的問題。 因為不平衡設計而採用 Type III SS 時, 必須將類別變數轉換成正交的虛擬變數。 不過,R 內建的虛擬變數轉換方式是 simple contrast (在 R 中稱為 contr.treatment), 而 simple contrast 並不是正交的。 R 有內建其它常用的正交轉換方式, 包括 contr.sum 和 contr.helmert。 回到例子,正確的方式是。 contrasts(A) <- contr.sum # 更變虛擬變數 contrasts(B) <- contr.sum m <- aov(Y~A*B) library(car) Anova(m, type=3) # Type III SS 即可得到正確的 MS。 至於如何設立隨機因子就先不談,還蠻複雜的。 ※ 引述《DrRd (就這樣吧)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 新手(沒寫過程式,R 是我的第一次) : [問題敘述]: : 要進行type III的變異數分析 : 共有A、B兩個因子,其中A是固定效果,B是隨機效果 : 網路上有看到可以用car裡面的Anova(,type=3) : 但它沒有讓我指定何者為固定何者為隨機 : 算出來的結果也不正確 : 請問除了手算之外,有其他的套件可以算嗎? : [程式範例]: : aov.result = aov(Y~A*B) : summary(aov.result) : Df Sum Sq Mean Sq F value Pr(>F) : A 2 222.6 111.30 5.532 0.00711 ** : B 1 0.1 0.14 0.007 0.93447 : A:B 2 76.4 38.18 1.898 0.16169 : Residuals 45 905.4 20.12 : --- : Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 : 用aov得到的結果A效果的F值是除上Residuals得到的 : 但是因為B是隨機效果,所以A的F值應該是要除以A:B : 目前我是都用手算來得到A效果的真正的F值 : 我在網路上看到說可以用car:::Anova : 所以我改用 : >library(car) : >Anova(aov.result,type=3) : Anova Table (Type III tests) : Response: Y : Sum Sq Df F value Pr(>F) : (Intercept) 544.44 1 27.0598 4.683e-06 *** : A 22.03 2 0.5475 0.5822 : B 47.45 1 2.3584 0.1316 : A:B 76.37 2 1.8979 0.1617 : Residuals 905.40 45 : --- : Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 : 改用這個之後Sum Sq都變了 : 也許是因為不等格的關係? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.37.172 ※ 編輯: andrew43 來自: 122.117.37.172 (05/06 04:13)