首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从anova中访问多个因变量的pvalue,并将结果存储在文档txt中

从anova中访问多个因变量的pvalue,并将结果存储在文档txt中
EN

Stack Overflow用户
提问于 2020-03-03 21:36:42
回答 1查看 29关注 0票数 0

我有一个包含100个观察值和>200个变量的数据帧

代码语言:javascript
复制
SUBJ_ID  GROUP AGE GENDER V1  V2 V3  V4...
SUB1     1      11   1    345 245 456 333
SUB2     1     13    1    333 256 345 324
SUB3     0     19    0    345 366 234 256

我设法在dv上做了一个ancova,使用Group作为分组因素,使用年龄和性别作为协变量,以便了解在控制或年龄和性别作为协变量时,哪些意味着组之间的显著差异,我是这样做的:

代码语言:javascript
复制
> my_aov <- lapply(4:ncol, function(x) aov(df[,x] ~ Group + Age_consent
> + Gender, data = df)) 

我在这里存储了ancova的摘要:

代码语言:javascript
复制
> aov.summaries <- (my_aovsub, summary) 

我的问题是: boh my_aov和aov.summaries的结果是一个列表的列表。我想要访问Pvalue,以便查看哪一个是有意义的,并对它们进行多次比较。

我该怎么做呢?

ancova结果示例(数字已更改):

代码语言:javascript
复制
[[235]]
             Df    Sum Sq  Mean Sq F value Pr(>F)  
Group         1    904   904   0.300 0.6788  
Age_consent   1   358  368   1.217 0.4568  
Gender        1  196      1916   5.314 0.0447 *
Residuals   145 4366  309                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

另外,如何将“不能”强制为data.frame的对象保存在txt文件中?

EN

回答 1

Stack Overflow用户

发布于 2020-03-03 23:10:54

这里有一个更好的答案。你可以有很多方法来提取它,但我认为这至少能达到你的目标:

代码语言:javascript
复制
library('dplyr')

make_aov = function(x){
  form = paste(
    colnames(iris)[x],
    '~ Species'
  ) %>% 
    as.formula()
  aov(
    form, 
    data = iris
  )
}


my_aov = lapply(
  1:4, 
  make_aov
)

get_pvalue = function(i){
  tibble(
    variable = colnames(iris)[i],
    p_value = anova(my_aov[[i]])$`Pr(>F)`[1]
  )
}

pval_table = lapply(
  1:4,
  get_pvalue
) %>% 
  bind_rows()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60508493

复制
相关文章

相似问题

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