AOV分析誤差項我有一個數據幀「DF」修正了作爲R
str(df)
'data.frame': 120 obs. of 5 variables:
$ id : Factor w/ 30 levels "1","2","3","4",..: 1 1 1 1 7 7 7 7 13 13 ...
$ GroupID : Factor w/ 5 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
$ score : num 0.00667 0.48125 0.61538 0.55714 0.23077 ...
$ Control1: Factor w/ 2 levels "0","1": 1 1 2 2 1 1 2 2 1 1 ...
$ Control2: Factor w/ 2 levels "0","1": 1 2 1 2 1 2 1 2 1 2 ...
我有30名受試者(以便ID從1到30),在5組分(組ID從1到5 )。當我將兩個變量Control1和Control2分別設置爲0和1(因此有4種組合:00,01,10,11)時,每個組運行4個實驗。對於每個實驗我記錄一個值(變量'分數')。
因此,主題1,2..6屬於組1,主題7,8..12屬於組2,依此類推。 Control1和Control2是實驗條件,例如,Control1 == 0表示在實驗過程中關閉燈光,Control2 == 1表示在實驗過程中打開聲音,'score'是我在實驗中從每個對象測量的值。
現在我想用'aov'函數分析數據。我想告訴R,Control1和Control2是固定效應變量,GroupID是隨機變量。我想看看GroupID和Control1和Control2的交互,以及GroupID和Control1,GroupID和Control2等之間的交互。
所以我做:
> summary (aov (score ~ GroupID * Control1 * Control2 + Error(id/(Control1 * Control2)), data = df))
Error: id
Df Sum Sq Mean Sq F value Pr(>F)
GroupID 4 2.004 0.5010 6.189 0.00132 **
Residuals 25 2.024 0.0809
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Error: id:Control1
Df Sum Sq Mean Sq F value Pr(>F)
Control1 1 0.4955 0.4955 13.50 0.00114 **
GroupID:Control1 4 0.3832 0.0958 2.61 0.05974 .
Residuals 25 0.9177 0.0367
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Error: id:Control2
Df Sum Sq Mean Sq F value Pr(>F)
Control2 1 0.4132 0.4132 21.261 0.000102 ***
GroupID:Control2 4 0.0982 0.0246 1.263 0.310568
Residuals 25 0.4858 0.0194
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Error: id:Control1:Control2
Df Sum Sq Mean Sq F value Pr(>F)
Control1:Control2 1 0.3741 0.3741 23.899 4.97e-05 ***
GroupID:Control1:Control2 4 0.1689 0.0422 2.698 0.0538 .
Residuals 25 0.3914 0.0157
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
請看控制1的F值。它顯示值'13.50',它是控制1的平方和(0.4955)除以殘差平方和(0.9177),然後與殘差自由度(25)相乘的結果。但我想控制1的F比應計算爲:控制1的總和平方(0.4955)除以組ID:控制1的總和平方(0.3822)然後乘以組ID的自由度:控制1(4),所以它應該是5.186。另外,關鍵的F值應該根據自由度4而不是25來計算。所以在這種情況下,它並不重要。
我的同事爭辯說,問題可能在於,R明白GroupID是固定效應,而不是隨機效應,但她不知道R.無論如何,這只是一種建議。
那麼,如何告訴R如上所述計算F比?
我的完整數據:
df
id GroupID score Control1 Control2
1 1 1 0.006666667 0 0
2 1 1 0.481250000 0 1
3 1 1 0.615384615 1 0
4 1 1 0.557142857 1 1
5 7 2 0.230769231 0 0
6 7 2 0.428571429 0 1
7 7 2 0.218750000 1 0
8 7 2 0.260000000 1 1
9 13 3 0.328571429 0 0
10 13 3 0.412500000 0 1
11 13 3 1.000000000 1 0
12 13 3 0.976923077 1 1
13 19 4 0.256250000 0 0
14 19 4 0.576923077 0 1
15 19 4 0.714285714 1 0
16 19 4 0.573333333 1 1
17 25 5 0.353846154 0 0
18 25 5 0.446666667 0 1
19 25 5 0.885714286 1 0
20 25 5 0.525000000 1 1
21 2 1 0.027272727 0 0
22 2 1 0.050000000 0 1
23 2 1 0.153846154 1 0
24 2 1 0.142857143 1 1
25 8 2 0.161538462 0 0
26 8 2 0.578571429 0 1
27 8 2 0.430000000 1 0
28 8 2 0.727272727 1 1
29 14 3 0.585714286 0 0
30 14 3 0.490000000 0 1
31 14 3 0.836363636 1 0
32 14 3 0.792307692 1 1
33 20 4 0.630000000 0 0
34 20 4 0.738461538 0 1
35 20 4 0.221428571 1 0
36 20 4 0.254545455 1 1
37 26 5 0.092307692 0 0
38 26 5 0.227272727 0 1
39 26 5 0.235714286 1 0
40 26 5 0.410000000 1 1
41 3 1 0.071428571 0 0
42 3 1 0.472727273 0 1
43 3 1 0.527272727 1 0
44 3 1 0.312500000 1 1
45 9 2 0.154545455 0 0
46 9 2 0.168750000 0 1
47 9 2 0.154545455 1 0
48 9 2 0.114285714 1 1
49 15 3 0.187500000 0 0
50 15 3 0.645454545 0 1
51 15 3 0.700000000 1 0
52 15 3 0.845454545 1 1
53 21 4 0.236363636 0 0
54 21 4 0.636363636 0 1
55 21 4 0.750000000 1 0
56 21 4 0.850000000 1 1
57 27 5 0.472727273 0 0
58 27 5 0.350000000 0 1
59 27 5 0.393750000 1 0
60 27 5 0.336363636 1 1
61 4 1 0.015384615 0 0
62 4 1 0.600000000 0 1
63 4 1 0.460000000 1 0
64 4 1 0.458823529 1 1
65 10 2 0.600000000 0 0
66 10 2 0.511764706 0 1
67 10 2 0.414285714 1 0
68 10 2 0.515384615 1 1
69 16 3 0.576470588 0 0
70 16 3 0.600000000 0 1
71 16 3 0.715384615 1 0
72 16 3 0.820000000 1 1
73 22 4 0.250000000 0 0
74 22 4 0.500000000 0 1
75 22 4 0.647058824 1 0
76 22 4 0.684615385 1 1
77 28 5 0.230000000 0 0
78 28 5 0.238461538 0 1
79 28 5 0.200000000 1 0
80 28 5 0.321428571 1 1
81 5 1 0.427272727 0 0
82 5 1 0.716666667 0 1
83 5 1 0.792307692 1 0
84 5 1 0.630000000 1 1
85 11 2 0.092307692 0 0
86 11 2 0.720000000 0 1
87 11 2 0.500000000 1 0
88 11 2 0.790909091 1 1
89 17 3 0.400000000 0 0
90 17 3 1.000000000 0 1
91 17 3 1.000000000 1 0
92 17 3 1.000000000 1 1
93 23 4 0.600000000 0 0
94 23 4 0.684615385 0 1
95 23 4 0.630000000 1 0
96 23 4 0.572727273 1 1
97 29 5 0.353846154 0 0
98 29 5 0.490909091 0 1
99 29 5 0.470000000 1 0
100 29 5 0.325000000 1 1
101 6 1 0.109090909 0 0
102 6 1 0.558333333 0 1
103 6 1 0.320000000 1 0
104 6 1 0.090909091 1 1
105 12 2 0.026666667 0 0
106 12 2 0.418181818 0 1
107 12 2 0.416666667 1 0
108 12 2 0.254545455 1 1
109 18 3 0.245454545 0 0
110 18 3 0.833333333 0 1
111 18 3 0.836363636 1 0
112 18 3 0.946666667 1 1
113 24 4 0.508333333 0 0
114 24 4 0.646666667 0 1
115 24 4 0.581818182 1 0
116 24 4 0.609090909 1 1
117 30 5 0.866666667 0 0
118 30 5 0.745454545 0 1
119 30 5 0.481818182 1 0
120 30 5 0.775000000 1 1
如果你知道如何手動計算,爲什麼你需要R來爲你做?如果我正確地閱讀你的問題,這對我來說似乎是一個邊緣案例。 –
另外,通常最好使用'dput(df)'來顯示數據,而不是像現在那樣打印'df'。 –
Hi @Alex,但計算所有東西(平方和,自由度以及所有這些東西的總和......)會很痛苦。我相信Excel甚至可以做到,但R可以以更好的方式完成。 – mamatv