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

使用dplyr运行chisq_test时提示group未找到的问题求助

问题解决:针对每日x/y组的卡方检验修正

你的代码核心问题是未正确传递卡方检验所需的频数变量(value),且参数调用逻辑错误,导致无法识别变量或无法进行有效检验。以下是修正方案:

错误原因分析

  1. chisq_test(day, group) 完全未用到你需要检验的核心数据(各组总数value),且day在group_by(day)后是每个子组的常数向量,无法用于卡方检验。
  2. 你需要的是拟合优度卡方检验:检验每日x组和y组的观测总数是否与期望分布(如1:1比例)存在显著差异,必须基于value列的频数数据进行计算。

修正代码

library(dplyr)
library(rstatix)
library(tidyr)

# 你的原始数据构造代码(保留)
x <- c(5,17,31,9,17,10,30,28,16,29,14,34)
y <- c(1,2,3,4,5,6,7,8,9,10,11,12)
day <- as.character(c(1,2,3,4,5,6,7,8,9,10,11,12))

df1 <- data.frame(x, y, day)
df2 <- reshape2::melt(df1, id.vars='day')
colnames(df2)[2] = "group"

# 修正后的每日卡方检验代码
df2 %>%
  group_by(day) %>%
  summarise(
    # 对每组的value频数做拟合优度检验,期望x/y组比例为1:1
    chisq_result = list(chisq_test(x = value, p = c(0.5, 0.5)))
  ) %>%
  unnest(chisq_result) %>%
  add_significance("p")

代码说明

  • group_by(day):按日期分组,确保每个日期单独检验。
  • chisq_test(x = value, p = c(0.5, 0.5)):针对每个日期的x/y组总数(value),检验其是否符合1:1的期望分布;若你有其他期望比例,可修改p参数(如c(0.6, 0.4))。
  • unnest(chisq_result):将嵌套的检验结果展开为数据表格式,方便查看。
  • add_significance("p"):为p值添加显著性标记(如*、**等)。

替代方案(若需独立性检验)

若你的实际需求是检验日期与分组的独立性(而非每日单独检验x/y差异),可先将数据转换为宽格式,再构造列联表进行检验:

df_wide <- df2 %>% tidyr::pivot_wider(names_from = group, values_from = value)
chisq_test(df_wide, x = day, y = x, y2 = y)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:40:27