【问题标题】:How to extract p values from a vector with multiple anova如何从具有多个方差分析的向量中提取 p 值
【发布时间】:2020-06-05 00:15:53
【问题描述】:

使用 R,我使用以下脚本创建了一个具有 39 个方差分析的向量

w3<-lapply(split(q1, q1$taxa), aov, formula=trig ~ d)

我可以通过 summary(w3$"type") 分别从它们中提取 p 值,但我怎样才能一次为所有 39 个提取 p 值,最好将所有 p 值写入单独的数据框中?

此外,可以使用

为每个单独的 anova 创建一个包含摘要的列表
e7<-lapply(w3, FUN=summary) 

但是有没有办法用这个列表中的 p 值制作一个数据框?

【问题讨论】:

    标签: r extract anova


    【解决方案1】:

    您可以使用sapply 迭代每个方差分析并提取 p 值。

    sapply(w3, function(x) summary(x)[[1]][["Pr(>F)"]][[1]])
    

    使用mtcars 的可重现示例

    w3 <- lapply(split(mtcars, mtcars$cyl), aov, formula=mpg ~ am) 
    sapply(w3, function(x) summary(x)[[1]][["Pr(>F)"]][[1]])
    
    #     4      6      8 
    #0.0892 0.2209 0.8662 
    

    【讨论】:

    • 非常感谢,如果我在这个分析中应用几个自变量,我无法提取第二个之后的 p 值(第二个我可以提取,只需将最后一个 1 替换为 2),你会吗请解释我做错了什么? (错误是:摘要中的错误(x)[[1]][["Pr(>F)"]][[3]]:下标越界)
    • 如果没有可重复的数据,很难提供帮助,因为我不知道您在 w3 中有什么结构。你可以分享 dput(w3) 吗?您收到该错误是因为 [[2]][[3]] 对于某些数据没有值。
    • 数据表非常大,所以我不确定是否可以将其粘贴在这里,但为了简化它是带有 anova 模型的列表,如果我使用 {summary} 函数获取其中一个看起来像这样: Df Sum Sq Mean Sq F value Pr(>F) d 8 12.10 1.5126 7.557 1.02e-08 *** 丰度 1 0.05 0.0467 0.233 0.630 d:abundance 8 1.43 0.1789 0.894 0.523
    • 为什么需要用 2 替换最后一个 1?这应该始终保持为[[1]]。当您按原样运行sapply(w3, function(x) summary(x)[[1]][["Pr(&gt;F)"]][[1]]) 时会发生什么?
    • 它给出了第一个自变量的 p 值非常好,我只是想让它适用于多元方差分析,并为 d*abundance 提取 p 值,非常感谢你帮助我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2023-01-15
    • 2021-06-24
    相关资源
    最近更新 更多