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

如何对行数不同的两个数据表执行Pearson卡方检验?

解决方案:用非参数检验替代卡方检验

首先,你的场景用Pearson卡方检验完全不合适——卡方检验要么用于列联表的分类数据交叉分析,要么要求两个输入向量长度完全一致(对应配对设计),但你这里是两组独立样本(Ost和West的行数不同),且因变量是数值型的长期失业人数,得换适配的方法。

针对你的需求(验证Ost组的Langzeitarbeitslose显著高于West组,且数据不服从正态分布),最适合的是Mann-Whitney U检验(Wilcoxon秩和检验),这是独立样本非参数检验的标准方案,不需要正态分布假设。

方法1:不考虑地区匹配的独立样本检验

如果两个数据集是独立抽样(无需按地区一一对应),直接合并数据并加上分组标签即可做检验:

# 构造合并数据集
combined_data <- data.frame(
  Langzeitarbeitslose = c(Ost_data$Langzeitarbeitslose, West_data$Langzeitarbeitslose),
  Group = rep(c("Ost", "West"), c(nrow(Ost_data), nrow(West_data)))
)

# 执行单侧Mann-Whitney U检验(验证Ost组数值更高)
wilcox.test(Langzeitarbeitslose ~ Group, data = combined_data, alternative = "greater")

alternative = "greater"指定了单侧检验,完全对应你“Ost组数值显著高于West组”的假设。

方法2:按地区匹配的配对样本检验

如果两个数据集的Raumeinheit是一一对应的(比如每个地区在两组数据中都有记录),可以用配对样本的非参数检验——Wilcoxon符号秩检验,这样能消除地区差异的影响:

# 按地区合并数据集,仅保留两组都存在的地区
matched_data <- merge(Ost_data, West_data, by = "Raumeinheit", suffixes = c("_Ost", "_West"))

# 执行单侧配对检验(验证Ost组数值更高)
wilcox.test(matched_data$Langzeitarbeitslose_Ost, matched_data$Langzeitarbeitslose_West, alternative = "greater", paired = TRUE)

补充:为什么卡方检验不行?

你用chisq.test报错的直接原因是函数要求两个输入向量长度相同,但Ost_data(76行)和West_data(324行)长度不匹配。更关键的是,卡方检验是用来分析分类变量的关联,不是用来比较两组数值型变量的大小差异的,就算长度一致,用在这里也逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:26:28