修复R

时间:2015-10-28 15:08:49

标签: r anova

我有一个数据框" df"

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组(GroupID从1到5)。每组运行4次实验,当我将两个变量Control1和Control2分别设置为0和1时(因此有4种组合:00,01,10,11)。对于每个实验,我都会记录一个值(变量'得分')。

因此,科目1,2..6属于第1组,科目7,8..12属于第2组,依此类推。 Control1和Control2是实验条件,例如,Control1 == 0表示在实验过程中关灯,Control2 == 1表示在实验过程中打开声音,并得分'是我在实验中从每个主题测量的值。

现在我想用' 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

请查看Control1的F值。它显示了值
 13.50',这是控制1的和平方(0.4955)除以残差和的平方(0.9177)的结果,然后乘以残差的自由度(25)。

但是我希望Control1的F比应该计算为:Control1的总和平方(0.4955)除以GroupID的Sum Square:Control1(0.3822)然后乘以GroupID的自由度:Control1(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

1 个答案:

答案 0 :(得分:0)

这是一个答案,但不是解决方案。"

aov是执行ANOVA的lm函数的包装器。处理随机效果不是设计。因此,正如我在评论中提到的,您的应用程序是一个边缘案例。

如果您希望编写自定义代码来处理此边缘情况,那么您非常欢迎。 SO不是一个免费的开发服务,或者最近在我提到的关于C ++的一个问题中提到的那样;不,我们不是在为你编写代码。遗憾"