【问题标题】:How to perform single factor ANOVA in R with samples organized by column?如何使用按列组织的样本在 R 中执行单因素方差分析?
【发布时间】:2012-12-21 18:49:53
【问题描述】:

我有一个数据集,其中样本按列分组。以下示例数据集类似于我的数据格式:

a = c(1,3,4,6,8)
b = c(3,6,8,3,6)
c = c(2,1,4,3,6)
d = c(2,2,3,3,4)

mydata = data.frame(cbind(a,b,c,d))

当我使用上述数据集在 Excel 中执行单因素方差分析时,我得到以下结果:

我知道 R 中的一个典型格式如下:

group  measurement
a      1
a      3
a      4
.      .
.      .
.      .
d      4

在 R 中执行 ANOVA 的命令是使用 aov(group~measurement, data = mydata)如何在 R 中使用按列而不是按行组织的样本执行单因素方差分析? 换句话说,如何使用 R 复制 excel 结果?非常感谢您的帮助。

【问题讨论】:

  • 你弄错了 anova 命令...aov(measurement ~ group...

标签: r anova


【解决方案1】:

您以长格式堆叠它们:

mdat <- stack(mydata)
mdat
   values ind
1       1   a
2       3   a
3       4   a
4       6   a
5       8   a
6       3   b
7       6   b
snipped output

> aov( values ~ ind, mdat)
Call:
   aov(formula = values ~ ind, data = mdat)

Terms:
                 ind Residuals
Sum of Squares  18.2      65.6
Deg. of Freedom    3        16

Residual standard error: 2.024846 
Estimated effects may be unbalanced

鉴于警告,使用lm 可能更安全:

> anova(lm(values ~ ind, mdat))
Analysis of Variance Table

Response: values
          Df Sum Sq Mean Sq F value Pr(>F)
ind        3   18.2  6.0667  1.4797 0.2578
Residuals 16   65.6  4.1000               
> summary(lm(values~ind, mdat))

Call:
lm(formula = values ~ ind, data = mdat)

Residuals:
   Min     1Q Median     3Q    Max 
 -3.40  -1.25   0.00   0.90   3.60 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   4.4000     0.9055   4.859 0.000174 ***
indb          0.8000     1.2806   0.625 0.540978    
indc         -1.2000     1.2806  -0.937 0.362666    
indd         -1.6000     1.2806  -1.249 0.229491    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 2.025 on 16 degrees of freedom
Multiple R-squared: 0.2172, Adjusted R-squared: 0.07041 
F-statistic:  1.48 on 3 and 16 DF,  p-value: 0.2578 

请不要问我为什么 Excel 给出不同的答案。在统计数据方面,Excel 通常被证明是非常不可靠的。 Excel 有责任解释为什么它不能提供与 R 相当的答案。

编辑以响应 cmets:Excel 数据分析包 ANOVA 过程会创建一个输出,但它不会为该过程使用 Excel 函数,因此当您更改派生它的数据单元格中的数据时,然后点击F9,或等效的菜单重新计算命令,输出部分不会有任何变化。这个和其他用户和数值问题的来源记录在 David Heiser 评估 Excel 统计计算问题的各个页面中:http://www.daheiser.info/excel/frontpage.html Heiser 开始了他的努力,现在至少有十年之久,期望微软会对这些错误负责,但他们一直忽视他和其他人在识别错误​​和建议更好的程序方面所做的努力。 BD McCullough 编辑的June 2008 issue of "Computational Statistics & Data Analysis" 中还有一个 6 节的特别报告,涵盖了 Excel 的各种统计问题。

【讨论】:

  • 通常当你对这样的大错误说坏软件时,这是你的错 :-) 结果是不同的,因为你使用愚蠢的默认处理对比。通过summary(lm(values ~ 0 + ind, mdat))关闭它们
  • 我指的是 F 统计量。确实,估计值可能会因不同的对比而显得不同。并且当我按照您的建议更改公式时,我仍然得到与 Excel 发布的答案不同的答案,正如通过计算头部 4.4+.8 中的平均值可以预测的那样,不等于 Excel 对“组 b”的平均值的估计'。
  • 这只是因为他可能打错了,如果你把它改成b = c(3,6,8,3,8),它给出的平均值是 5.6,方差是 6.3,F 统计量和 p 值也会突然拟合。
  • 既然您已经改变了关于差异起源的理论,为什么不花时间调查一下我最初的主张:Excel 因其统计方法中报告的错误而臭名昭著。使用以下术语在 Google 上进行搜索:“excel 中的统计错误”。你会看到我不是在“说坏话”,而是在报告广为人知、有据可查的担忧。
  • 好吧,我想我现在已经证明 Excel 在这种情况下给出了与 R 相同的结果。我的观点是,当您在 Excel 中看到错误时,很可能是您的错误 :-) 它可能是 Excel,但在这种情况下您太快了
猜你喜欢
  • 2018-11-10
  • 2022-01-19
  • 1970-01-01
  • 2012-01-09
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多