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

如何在R中基于卡方检验结果绘制Coefplot优化数据可视化?

在R中用Coefplot可视化卡方检验结果

我来帮你梳理下结合你已完成的卡方检验,用Coefplot做可视化的具体步骤:

1. 把列联表转换成R可识别的格式

你给出的表格数据,我们先转成矩阵格式方便后续分析:

# 构建列联表矩阵
X2 <- matrix(c(11,21,18,19,8,
               6,7,14,10,2,
               9,22,19,8,0,
               7,16,10,5,4,
               9,13,10,8,3,
               14,20,10,10,4),
             nrow = 6, byrow = TRUE,
             dimnames = list(c("5_min_blank", "Boldstyle", "Boldstyle_pause", 
                               "Breaststroke", "Breaststroke_pause", "Diving"),
                             c("1", "2", "3", "5", "6")))

2. 执行你已完成的卡方检验

你之前运行的代码没问题,这里再贴出来方便对照:

fit.swim <- chisq.test(X2, simulate.p.value = TRUE, B = 10000)

运行后会得到Pearson卡方检验的结果,包含统计量、模拟p值等关键信息。

3. 用Coefplot可视化标准化残差

Coefplot本身常用于回归系数展示,但对于列联表的卡方检验,我们可以通过可视化标准化残差,直观看到每个单元格的观测值与预期值的偏离程度——这也是卡方检验里判断差异显著性的核心指标。

步骤3.1 安装并加载coefplot包

如果还没安装这个包,先执行安装命令:

install.packages("coefplot")
library(coefplot)

步骤3.2 整理标准化残差数据

我们需要把卡方检验输出的标准化残差整理成Coefplot能识别的格式:

# 提取标准化残差
std_res <- as.vector(fit.swim$stdres)
# 生成每个单元格的标签(声音类型+类别)
cell_labels <- expand.grid(rownames(X2), colnames(X2))
cell_labels <- paste(cell_labels$Var1, cell_labels$Var2, sep = "_")
# 转换成数据框
res_data <- data.frame(Variable = cell_labels, Value = std_res)

步骤3.3 绘制Coefplot

这里加了一些参数让图更清晰:

coefplot(res_data, 
         title = "声音类型-类别组合的标准化残差可视化",
         xlab = "标准化残差值",
         ylab = "声音类型-类别组合",
         pointSize = 3,  # 调整点的大小
         lineSize = 1,   # 调整置信区间线的粗细
         verticalLine = 0)  # 添加0基准线,方便对比正负偏离

小提示

  • 标准化残差的绝对值如果大于2,一般认为该单元格的观测值与预期值存在显著差异,在图里一眼就能看出来
  • 正的残差表示该单元格的观测数比预期多,负的则表示观测数比预期少

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:46:11