方差分析 - 比较 R 中的 3 组
ANOVA - comparing 3 groups in R
我正在尝试分析一个研究项目的数据集,但 运行 遇到了很多问题,并且无法在网上找到直接相关的答案。
我曾使用过其他统计程序,但我是 R 的新手。我在弄清楚如何调整我的数据集以最好地回答问题方面遇到了最困难的时间。
在这项研究中,参与者被要求回答有关他们展示的图片的问题,这些图片是表现出 3 种情绪(快乐、愤怒、悲伤)的面孔 - 我现在想比较每个问题的答案图片。意思是我想看看这三组之间是否存在差异。
我过去曾使用 1 向方差分析来执行此操作 - 在 minitab 中,我会将图像放入 3 个因子 (1,2,3),然后在它旁边的列中给出给定问题的分数.因此,特定图片和特定问题的分数将水平排列。
Image pleasing
1 1 3
2 1 2
3 1 1
4 1 1
5 1 1
6 1 2
这也是我在 R 中设置它的方式 - 但是当我尝试 运行 方差分析时我不能,因为图像仍然是 Integer 的 class 而不是一个因素。因此它给了我这个:
> Paov <- aov(Image ~ pleasing)
> summary(Paov)
Df Sum Sq Mean Sq F value Pr(>F)
pleasing 1 0.7 0.6546 0.978 0.323
Residuals 813 544.3 0.6696
26 observations deleted due to missingness
然后 post-hoc Tukey 的测试毫无意义。在 minitab 中,它能够向我显示与每张图像相关的平均评分,然后告诉我它们有何显着差异。如何使图像成为 R 中的一个因素?那么我怎样才能正确地比较这三组的分数呢?
鉴于您的数据描述,这里提供了一种执行方差分析和 Tukey 检验的方法。首先,一些不太随机的数据(将给出 "interesting" 结果):
set.seed(40)
dat <- data.frame(Image = factor(rep(1:3, each=10)),
Pleasing = c(sample(1:2, 10, replace=T),
sample(c(1,3), 10, replace=T),
sample(2:3, 10, replace=T)))
head(dat)
# Image Pleasing
# 1 1 2
# 2 1 2
# 3 1 2
# 4 1 1
# 5 1 1
# 6 1 1
aov
很简单。请注意,如果您的变量在数据框中,则必须使用 data
(不建议使用 attach
):
dat.aov <- aov(Pleasing ~ Image, data=dat)
summary(dat.aov)
# Df Sum Sq Mean Sq F value Pr(>F)
# Image 2 7.2 3.600 6.568 0.00474 **
# Residuals 27 14.8 0.548
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
现在对于 Tukey,在 R 中有不同的方法。我喜欢使用包 multcomp
因为它提供了更多的结果信息:
library(multcomp)
tukey <- cld(glht(dat.aov, linfct = mcp(Image = "Tukey")), decreasing = TRUE)
tukey$mcletters$Letters
# 1 2 3
# "b" "ab" "a"
语法看起来相当复杂,因为在 multcomp 中,您使用一般线性假设函数 (glht
),在其中执行多重比较 (mcp
),然后提取紧凑字母显示Tukey 结果 (cld
).
您甚至可以绘制 Tukey 结果,尽管箱线图对于此类数据看起来不太好:
最后一点,重要的是要提到我对连续数据(实验实验室测量)使用这种分析,我不确定它对您的分类数据(1-3 表达式选择)是否正确。
我正在尝试分析一个研究项目的数据集,但 运行 遇到了很多问题,并且无法在网上找到直接相关的答案。 我曾使用过其他统计程序,但我是 R 的新手。我在弄清楚如何调整我的数据集以最好地回答问题方面遇到了最困难的时间。
在这项研究中,参与者被要求回答有关他们展示的图片的问题,这些图片是表现出 3 种情绪(快乐、愤怒、悲伤)的面孔 - 我现在想比较每个问题的答案图片。意思是我想看看这三组之间是否存在差异。
我过去曾使用 1 向方差分析来执行此操作 - 在 minitab 中,我会将图像放入 3 个因子 (1,2,3),然后在它旁边的列中给出给定问题的分数.因此,特定图片和特定问题的分数将水平排列。
Image pleasing
1 1 3
2 1 2
3 1 1
4 1 1
5 1 1
6 1 2
这也是我在 R 中设置它的方式 - 但是当我尝试 运行 方差分析时我不能,因为图像仍然是 Integer 的 class 而不是一个因素。因此它给了我这个:
> Paov <- aov(Image ~ pleasing)
> summary(Paov)
Df Sum Sq Mean Sq F value Pr(>F)
pleasing 1 0.7 0.6546 0.978 0.323
Residuals 813 544.3 0.6696
26 observations deleted due to missingness
然后 post-hoc Tukey 的测试毫无意义。在 minitab 中,它能够向我显示与每张图像相关的平均评分,然后告诉我它们有何显着差异。如何使图像成为 R 中的一个因素?那么我怎样才能正确地比较这三组的分数呢?
鉴于您的数据描述,这里提供了一种执行方差分析和 Tukey 检验的方法。首先,一些不太随机的数据(将给出 "interesting" 结果):
set.seed(40)
dat <- data.frame(Image = factor(rep(1:3, each=10)),
Pleasing = c(sample(1:2, 10, replace=T),
sample(c(1,3), 10, replace=T),
sample(2:3, 10, replace=T)))
head(dat)
# Image Pleasing
# 1 1 2
# 2 1 2
# 3 1 2
# 4 1 1
# 5 1 1
# 6 1 1
aov
很简单。请注意,如果您的变量在数据框中,则必须使用 data
(不建议使用 attach
):
dat.aov <- aov(Pleasing ~ Image, data=dat)
summary(dat.aov)
# Df Sum Sq Mean Sq F value Pr(>F)
# Image 2 7.2 3.600 6.568 0.00474 **
# Residuals 27 14.8 0.548
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
现在对于 Tukey,在 R 中有不同的方法。我喜欢使用包 multcomp
因为它提供了更多的结果信息:
library(multcomp)
tukey <- cld(glht(dat.aov, linfct = mcp(Image = "Tukey")), decreasing = TRUE)
tukey$mcletters$Letters
# 1 2 3
# "b" "ab" "a"
语法看起来相当复杂,因为在 multcomp 中,您使用一般线性假设函数 (glht
),在其中执行多重比较 (mcp
),然后提取紧凑字母显示Tukey 结果 (cld
).
您甚至可以绘制 Tukey 结果,尽管箱线图对于此类数据看起来不太好:
最后一点,重要的是要提到我对连续数据(实验实验室测量)使用这种分析,我不确定它对您的分类数据(1-3 表达式选择)是否正确。