R 中 p 值计算的 t.test 中的错误

问题描述 投票:0回答:1

我有一个包含信息的数据框

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 值?

r statistics grouping factors t.test
1个回答
0
投票
如果您的目标是计算学生的 t 检验,@jpsmith 是正确的。该测试比较两组之间的平均值,并且您尝试使用的分组列包含两个以上的组。

因此,如果您只想对两个特定组(例如 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)
    
© www.soinside.com 2019 - 2024. All rights reserved.