提问人:beginner 提问时间:11/5/2023 最后编辑:jpsmithbeginner 更新时间:11/6/2023 访问量:49
在 R 中计算 p 值的 t.test 中出错
Error in t.test for p-value calculation in R
问:
我有一个包含信息的数据帧mat
mat <- structure(list(ids = c("id1", "id2", "id3", "id4", "id5", "id6",
"id7", "id8", "id9", "id10", "id11", "id12", "id13", "id14",
"id15", "id16", "id17", "id18", "id19", "id20"), Group = c("A",
"A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "C", "C", "C",
"C", "C", "C", "A", "A", "B"), number = c(2L, 2L, 3L, 2L, 2L,
44L, 172L, 34L, 78L, 27L, 31L, 55L, 23L, 34L, 14L, 18L, 25L,
2L, 2L, 12L)), class = "data.frame", row.names = c(NA, -20L))
我正在尝试计算组之间的差异。尝试使用如下所示,但我最终出现错误:t.test
t.test(Group, number, data=mat)
它说错误t.test(Group, number, data = mat) : object 'Group' not found
并且还尝试过:
t.test(Group ~ number, data=mat)
Error in t.test.formula(Group ~ number, data = mat) :
grouping factor must have exactly 2 levels
可能是什么问题,如何从 t.test 中获取 p 值?
答:
1赞
Anderson N. Barbosa
11/6/2023
#1
如果您的目标是计算学生的 t 检验,则 @jay.sf 是正确的。该测试比较两个组之间的均值,并且您尝试使用的分组列具有两个以上的组。
因此,如果您只想对两个特定组(例如 A 和 B)执行学生的 t 检验,则可以使用以下示例作为基础:
# Create filtered dataframes for the groups of interest
mat_group_A <- subset(mat, Group == "A")
mat_group_B <- subset(mat, Group == "B")
# Perform the t-test only for the groups you've specified (in pairs)
t.test(mat_group_A$number, mat_group_B$number)
现在,如果您打算比较所有组之间的所有均值,那么使用方差分析更明智。这将减少分析中的错误。请记住,方差分析会告知您在比较中是否存在显着差异。要确定这些差异在哪里,您需要进行事后测试,例如Tukey测试。下面的脚本完成了我提到的:
# Calculate ANOVA
anova.result <- aov(number ~ Group, data = mat)
# Display the ANOVA result
summary(anova.result)
# Compare means between the groups (Tukey Post-hoc Test)
TukeyHSD(anova.result)
评论
1赞
thelatemail
11/6/2023
如果您使用 formula 方法,也可以将参数直接传递给 -subset=
t.test()
t.test(number ~ Group, data=mat, subset=(Group %in% c("A","B")))
评论
aov(number ~ Group, mat) |> summary()
number ~ Group