首页 > 解决方案 > 如何在 R 中运行单向方差分析

问题描述

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

> 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

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

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


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

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

这是我第一次在 R 中进行这样的分析,如果这个问题对论坛不感兴趣,请耐心等待。感谢您提供解决此错误的任何输入!

标签: rstatisticsanova

解决方案


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

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

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)

在这里您可以找到更多详细信息。希望这可以帮助。


推荐阅读