【问题标题】:How to run one way ANOVA in R如何在 R 中运行单向方差分析
【发布时间】:2019-09-08 17:58:09
【问题描述】:

我有一个如下所示的数据集:

> print(mydata)
                col1                 col2                col3
1               0.819               0.851               0.874
2               0.972               0.703               0.821
3               0.891               0.790               0.951
4               0.839               0.799               0.819

我想知道col1col2col3 这三个组之间是否存在显着差异。对于这个问题,我的猜测是最好的方法是运行anova 测试。

请在下面找到我用来生成数据集、运行测试和 R 显示的错误的脚本:


> mydata <- data.frame(col1, col2, col3)
> accuracymetrics <- as.vector(mydata)
> anova(accuracymetrics)

UseMethod("anova") 中的错误:'anova' 没有适用的方法 应用于“data.frame”类的对象

这是我第一次在 R 中运行这样的分析,如果这个问题对论坛不感兴趣,请多多包涵。感谢您提供任何解决此错误的意见!

【问题讨论】:

  • 查看anova 函数的帮助页面:“object 一个包含模型拟合函数(例如,lm 或 glm)返回的结果的对象。”它的目的是在模型上调用,而不是在数据框上调用。这反映在您的错误消息中。
  • significant differences 是什么意思。通常您执行 t 检验来查看样本的均值是否相同(假设它们来自正态分布)或 kolmogorov-smirnov 检验来查看它们是否来自相同的分布。方差分析通常基于回归模型。
  • @LyzanderR 在这里,我需要在两个以上的组之间进行比较,所以根据ncbi.nlm.nih.gov/pmc/articles/PMC3916511 我需要使用方差分析。
  • 所以,这就是 t 检验

标签: r statistics anova


【解决方案1】:

如果我对您的理解正确,您所说的三个组就是您数据中的三个列。 如果是这种情况,您需要做两件事:

首先,将您的数据从宽格式重新调整为长格式,使其看起来像这样

group | value
------------
grp1  | 0.819
grp1  | 0.972

这可以通过tidyr 包轻松完成

library(tidyr)
longdata <- gather(mydata, group, value)

第二:你必须使用aov而不是anova

res.aov <- aov(value ~ group, data = longdata)
summary(res.aov)

Here你可以找到更多细节。 希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多