我有一个包含信息的数据框
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 值?
因此,如果您只想对两个特定组(例如 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)