R - AOV 在 group_by 上下文中使用时会抛出"could not find function 'Error'"



我正在尝试运行一个重复测量ANCOVA。下面的代码可以正常工作:

tidy(aov(FA ~ sex * study + Error(PartID), data = DTI.TRACTlong))

其中FA是连续测量,性别和学习是研究表明的因素(时间1或时间2),PartID是个体id。但是,我必须针对两种不同的条件(协调与不协调)对许多区域(ROI)运行此分析。使用tidyverse和group_by(见下文)似乎很容易做到这一点,但它会在Error(.$PartID)中抛出错误:could not find function "Error"。知道这里发生了什么吗?为什么单独使用Error函数时可以识别,而将tidyverse与group_by一起使用时却不能识别?

group_by(harmonize,ROI) %>%
do(tidy(aov(.$FA ~ .$GOBS_Gender * .$study + Error(.$PartID))))

指定data并删除.$

library(broom)
library(dplyr)
...
group_by(harmonize,ROI) %>%
do(tidy(aov(FA ~ sex * study + Error(PartID), data = .)))

另一种选择可能是使用tonest_by

library(tidyr)
...
nest_by(harmonize, ROI) %>%
mutate(out = list(tidy(aov(FA ~ sex * study + Error(PartID), data = data)))) %>%
select(-data) %>%
unnest(c(out))

使用可重复的示例

> data(npk)
> npk$grp <- rep(c('a', 'b'), each = 12)

-方法

> npk %>% 
group_by(grp) %>% 
do(tidy(aov(yield ~  N*P*K + Error(block), data = .)))
# A tibble: 18 x 8
# Groups:   grp [2]
grp   stratum term         df   sumsq  meansq statistic  p.value
<chr> <chr>   <chr>     <dbl>   <dbl>   <dbl>     <dbl>    <dbl>
1 a     block   N:P:K         1  69.0    69.0      3.12    0.328  
2 a     block   Residuals     1  22.1    22.1     NA      NA      
3 a     Within  N             1 119.    119.       6.89    0.0786 
4 a     Within  P             1   0.270   0.270    0.0156  0.908  
5 a     Within  K             1  58.1    58.1      3.36    0.164  
6 a     Within  N:P           1  12.2    12.2      0.705   0.463  
7 a     Within  N:K           1  23.4    23.4      1.35    0.329  
8 a     Within  P:K           1  44.6    44.6      2.58    0.207  
9 a     Within  Residuals     3  51.8    17.3     NA      NA      
10 b     block   N:P:K         1  29.3    29.3      0.431   0.630  
11 b     block   Residuals     1  67.9    67.9     NA      NA      
12 b     Within  N             1  73.0    73.0     57.3     0.00478
13 b     Within  P             1  21.3    21.3     16.7     0.0264 
14 b     Within  K             1  38.2    38.2     29.9     0.0120 
15 b     Within  N:P           1   8.52    8.52     6.68    0.0814 
16 b     Within  N:K           1  31.5    31.5     24.7     0.0156 
17 b     Within  P:K           1  47.3    47.3     37.1     0.00888
18 b     Within  Residuals     3   3.82    1.27    NA      NA 

-group_modify @andrew reece

> npk %>% 
group_by(grp) %>% 
group_modify(~aov(yield ~  N*P*K + Error(block), data = .) %>% 
tidy)
# A tibble: 18 x 8
# Groups:   grp [2]
grp   stratum term         df   sumsq  meansq statistic  p.value
<chr> <chr>   <chr>     <dbl>   <dbl>   <dbl>     <dbl>    <dbl>
1 a     block   N:P:K         1  69.0    69.0      3.12    0.328  
2 a     block   Residuals     1  22.1    22.1     NA      NA      
3 a     Within  N             1 119.    119.       6.89    0.0786 
4 a     Within  P             1   0.270   0.270    0.0156  0.908  
5 a     Within  K             1  58.1    58.1      3.36    0.164  
6 a     Within  N:P           1  12.2    12.2      0.705   0.463  
7 a     Within  N:K           1  23.4    23.4      1.35    0.329  
8 a     Within  P:K           1  44.6    44.6      2.58    0.207  
9 a     Within  Residuals     3  51.8    17.3     NA      NA      
10 b     block   N:P:K         1  29.3    29.3      0.431   0.630  
11 b     block   Residuals     1  67.9    67.9     NA      NA      
12 b     Within  N             1  73.0    73.0     57.3     0.00478
13 b     Within  P             1  21.3    21.3     16.7     0.0264 
14 b     Within  K             1  38.2    38.2     29.9     0.0120 
15 b     Within  N:P           1   8.52    8.52     6.68    0.0814 
16 b     Within  N:K           1  31.5    31.5     24.7     0.0156 
17 b     Within  P:K           1  47.3    47.3     37.1     0.00888
18 b     Within  Residuals     3   3.82    1.27    NA      NA      

-nest_by方法
> npk %>%
nest_by(grp) %>% 
mutate(out = list(tidy(aov(yield ~  N*P*K + Error(block), 
data = data)))) %>%
select(-data) %>% 
unnest(out)
# A tibble: 18 x 8
# Groups:   grp [2]
grp   stratum term         df   sumsq  meansq statistic  p.value
<chr> <chr>   <chr>     <dbl>   <dbl>   <dbl>     <dbl>    <dbl>
1 a     block   N:P:K         1  69.0    69.0      3.12    0.328  
2 a     block   Residuals     1  22.1    22.1     NA      NA      
3 a     Within  N             1 119.    119.       6.89    0.0786 
4 a     Within  P             1   0.270   0.270    0.0156  0.908  
5 a     Within  K             1  58.1    58.1      3.36    0.164  
6 a     Within  N:P           1  12.2    12.2      0.705   0.463  
7 a     Within  N:K           1  23.4    23.4      1.35    0.329  
8 a     Within  P:K           1  44.6    44.6      2.58    0.207  
9 a     Within  Residuals     3  51.8    17.3     NA      NA      
10 b     block   N:P:K         1  29.3    29.3      0.431   0.630  
11 b     block   Residuals     1  67.9    67.9     NA      NA      
12 b     Within  N             1  73.0    73.0     57.3     0.00478
13 b     Within  P             1  21.3    21.3     16.7     0.0264 
14 b     Within  K             1  38.2    38.2     29.9     0.0120 
15 b     Within  N:P           1   8.52    8.52     6.68    0.0814 
16 b     Within  N:K           1  31.5    31.5     24.7     0.0156 
17 b     Within  P:K           1  47.3    47.3     37.1     0.00888
18 b     Within  Residuals     3   3.82    1.27    NA      NA      

相关内容

最新更新