You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中对多分类变量组间频率差异进行显著性检验的问题

两组颜色偏好频率差异检验的正确解法

为啥用ANOVA会报错?

ANOVA和线性回归只适用于连续数值型因变量(比如身高、考试分数),但你的Colors是分类变量(红、蓝这类字符串/因子),强行用aov时R会尝试把分类变量转成数值,这过程中就会产生NA,直接触发报错。

正确方法:卡方独立性检验

要检验两组分类变量的频率差异,得用卡方检验——这就是专门干这个的工具,用来判断两个分类变量是否有关联(也就是组间颜色偏好的分布是否不一样)。

步骤1:先把数据转成因子类型

确保Colors和Group都是因子格式,避免后续出问题:

all_data$Colors <- factor(all_data$Colors)
all_data$Group <- factor(all_data$Group)

步骤2:做原始频数的列联表

先搞个不带百分比的纯频数表(卡方检验要用到原始数):

color_table <- table(all_data$Colors, all_data$Group)
print(color_table)

输出应该和你tabpct里的原始数一致:

Grp 1 Grp 2
Red          3     2
Blue        19    10
Yellow       1     2
Green        4     5
Purple       1     2
Orange     145   106
Pink         1     1
Brown       52    72

步骤3:跑卡方检验

chi_test <- chisq.test(color_table)
print(chi_test)
  • 如果输出的p值小于0.05,说明两组的颜色偏好整体分布有显著差异。
  • 注意:你这里很多单元格的期望频数小于5(比如Red、Yellow这些),可以加simulate.p.value = TRUE来模拟更靠谱的p值:
chi_test_sim <- chisq.test(color_table, simulate.p.value = TRUE)
print(chi_test_sim)

找出具体哪几种颜色差异显著

卡方检验只能告诉你整体有差异,要定位到具体颜色,用这两种方法:

方法1:看标准化残差

标准化残差绝对值大于2的单元格,说明这个颜色的实际频数和期望频数差得特别大,也就是组间差异显著:

print(chi_test$stdres)

看你给的数据,Orange和Brown的残差肯定会偏离0,对应两组间的比例差异(比如Grp1选Orange的更多,Grp2选Brown的更多)。

方法2:两两检验(加Bonferroni校正)

对每个颜色单独做两组比例检验,然后用Bonferroni校正p值(避免多次检验导致假阳性):

# 初始化空向量存p值
p_values <- c()
color_names <- rownames(color_table)

# 遍历每个颜色
for (color in color_names) {
  # 提取当前颜色的两组频数
  freq <- color_table[color, ]
  # 拼2x2的列联表(当前颜色vs其他所有颜色)
  temp_table <- matrix(c(freq[1], sum(color_table[,1]) - freq[1],
                         freq[2], sum(color_table[,2]) - freq[2]),
                       nrow = 2, byrow = TRUE)
  # 用Fisher精确检验(适合小样本)
  test <- fisher.test(temp_table)
  p_values <- c(p_values, test$p.value)
}

# Bonferroni校正p值
corrected_p <- p.adjust(p_values, method = "bonferroni")

# 整理成表格看结果
result_df <- data.frame(Color = color_names,
                        原始p值 = p_values,
                        校正后p值 = corrected_p)
print(result_df)

校正后p值小于0.05的颜色,就是两组间差异显著的类别。


内容的提问来源于stack exchange,提问作者Sophia L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:05:28