R 单向方差分析(仅获得 1 个 DF 并期望 2 个 DF)

R One-Way ANOVA (getting only 1 DF and expecting 2 DFs)

我正在研究 UCLA 网站上的单向方差分析示例 http://www.ats.ucla.edu/stat/r/faq/posthoc.htm。 当我 运行 命令 a1 <-aov(write ~ ses) 时,我的输出与示例输出不同。我特别烦恼的是,当我 运行 命令 summary(a1) 时,我在 ses 上的 DF 是 1 并且有三个 ses 类别 (1,2,3) 所以我期待 2 个 DF这就是网站上的示例所显示的内容。我检查了 'write' 列和 'ses' 列的数据,计数和平均值似乎与示例匹配,但 aov(write ~ ses) 的结果不匹配。有什么改变吗?为什么我只得到1个DF

hsb2 <- read.table("http://www.ats.ucla.edu/stat/data/hsb2.csv", sep=",", header=TRUE)
a1 <- aov(write ~ ses, data = hsb2)
summary(a1)
#              Df Sum Sq Mean Sq F value Pr(>F)   
# ses           1    770   769.8   8.908 0.0032 **
# Residuals   198  17109    86.4         

您正在学习的页面有错误,因为它没有告诉您如何正确输入数据。 ses变量应该是一个因子,从他们给我们的数据可以看出,读入的是数字:

str(hsb2$ses)

如果我们将其转换为因数,我们会得到与示例相同的答案:

hsb2$ses <- as.factor(hsb2$ses)
a1 <- aov(write ~ ses, data=hsb2)
summary(a1)

             Df Sum Sq Mean Sq F value  Pr(>F)   
ses           2    859   429.4    4.97 0.00784 **
Residuals   197  17020    86.4                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

此外,大多数 R 用户非常不鼓励使用附加。