首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对分组数据迭代执行方差分析(使用ezANOVA

对分组数据迭代执行方差分析(使用ezANOVA
EN

Stack Overflow用户
提问于 2020-03-05 01:24:42
回答 1查看 33关注 0票数 1

创建sample_data:

代码语言:javascript
复制
norm_power <- rnorm(2298) 
phoneme <- c("t", "v", "s", "p")
intensity <- c("loud", "soft")
unique_ID <- as.factor(rep(c("elec1", "elec2", "elec3", "elec4", "elec5", "elec6", "elec7",
                   "elec8", "elec9", "elec10"), length.out = 2298))

Subject <- as.factor(rep(c("DBS1", "DBS2", "DBS3", "DBS4"), length.out = 2298))    
sample_data <- data.frame(norm_power, unique_ID, Subject, stringsAsFactors = FALSE)    
sample_data$intensity[sample(1:nrow(sample_data), nrow(sample_data), FALSE)] <- rep(intensity, c(1149,1149))    
sample_data$phoneme[sample(1:nrow(sample_data), nrow(sample_data), FALSE)] <- rep(phoneme, c(574, 574, 575, 575))

我正在尝试对样本数据的多个子集执行方差分析并提取系数-参见上文。当我将数据集过滤成单独的电极(即"elec1")时,我能够得到一个结果(参见输出):

代码语言:javascript
复制
sample_data_elec1 <- filter(sample_data, unique_ID == "elec1")

output <-ezANOVA(dv = norm_power, within=.(phoneme, intensity), wid=Subject, data=sample_data_elec1)

然而,当我试图一次在sample_data的多个“子集”上完成类似的操作时,我只为所有操作生成NAs。参见下面的'anova_data‘:

代码语言:javascript
复制
get_coefs <-function(d){

  output <-ezANOVA(dv = norm_power, within=.(phoneme, intensity), wid=Subject, data=d)

  tibble('phoneme_F' = output[["ANOVA"]][[4]][1], "phoneme_pval" = output[["ANOVA"]][[5]][1], 
         "intensity_F" = output[["ANOVA"]][[4]][2], "intensity_pval" = output[["ANOVA"]][[5]][2], 
         "interact_F" = output[["ANOVA"]][[4]][3], "interact_pval"= output[["ANOVA"]][[5]][3])
}

anova_data <- sample_data %>% 
  group_by(unique_ID) %>% 
  do({get_coefs(.)}) %>% 
  ungroup()

提前感谢您的帮助-请让我知道,如果我可以进一步澄清!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 07:24:19

您会得到这个错误,因为您正在运行重复测量anova的测试。它有一个非常严格的设计,使用来自this website的示例

代码语言:javascript
复制
library(ez)
bilingual=read.delim("http://coltekin.net/cagri/R/data/bilingual.txt")
# this works
ezANOVA(data=bilingual,dv=mlu,wid=.(subj),
within=.(language, age), between=gender)

你可以看到,对于每个受试者,你实际上只有一次测量之前/之后或每个因素的组合。

代码语言:javascript
复制
table(bilingual$age,bilingual$language,bilingual$subj)

, ,  = 1


              home.only school
  firstgrade          1      1
  preschool           1      1
  secondgrade         1      1

, ,  = 2


              home.only school
  firstgrade          1      1
  preschool           1      1
  secondgrade         1      1

返回到您的示例,您需要使用within_full,因为您有多个度量,您的一些示例数据集可以工作,但您可以看到有一些抱怨,这是理所当然的,因为该设计不适用于此测试:

代码语言:javascript
复制
output <-ezANOVA(dv = norm_power,between=.(phoneme, intensity), within_full=.(phoneme, intensity), wid=.(Subject), data=droplevels(sample_data_elec1))

而且,根据重复测量,您还缺少我在上面为您填写的间隔效果。现在,如果您的研究或测试不是针对repeated measure anova的,那么只需将您想要测试的所有变量放在以下各项之间:

代码语言:javascript
复制
output <-ezANOVA(dv = norm_power,between=.(phoneme, intensity), wid=.(Subject), data=droplevels(sample_data_elec1))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60531554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档