r - R根据列值对数据框执行多个卡方检验
问题描述
我有一个带有计数的数据框,我想为chisq.test
变量 Cluster 的每个值执行一个。所以基本上,我需要 4 个列联表(对于“A”、“B”、“C”、“D”),其中行 = 类别,列 = 药物,值 = 总计。随后 achisq.test
应该为所有 4 个表格运行。
示例数据框
df <- data.frame(Cluster = c(rep("A",8),rep("B",8),rep("C",8),rep("D",8)),
Category = rep(c(rep("0-1",2),rep("2-4",2),rep("5-12",2),rep(">12",2)),2),
Drug = rep(c("drug X","drug Y"),16),
Total = as.numeric(sample(20:200,32,replace=TRUE)))
解决方案
首先,用于xtabs()
生成分层列联表。
tab <- xtabs(Total ~ Category + Drug + Cluster, df)
tab
# , , Cluster = A
#
# Drug
# Category drug X drug Y
# >12 92 75
# 0-1 33 146
# 2-4 193 95
# 5-12 76 195
#
# etc.
然后用于apply()
对每个层进行 Pearson 卡方检验。
apply(tab, 3, chisq.test)
# $A
#
# Pearson's Chi-squared test
#
# data: array(newX[, i], d.call, dn.call)
# X-squared = 145.98, df = 3, p-value < 2.2e-16
#
# etc.
此外,您可以对条件独立性执行 Cochran-Mantel-Haenszel 卡方检验。
mantelhaen.test(tab)
# Cochran-Mantel-Haenszel test
#
# data: tab
# Cochran-Mantel-Haenszel M^2 = 59.587, df = 3, p-value = 7.204e-13
推荐阅读
- angular - Asp.net core 3.1 & Angular:请求的小问题
- php - 被 CORS 策略阻止:“Access-Control-Allow-Origin”标头包含多个值
- sql - 如何在 Json 中通过 KEY 获取 VALUE?
- r - 如何在ggplot中的轴标签内设置不同的颜色
- java - 插入现有行/选择非空字段
- c++ - 随着时间的推移将矩阵函数与 Boost 集成 / 计算 C++ 中的可控性 Gramian
- python-pptx - 如何使用 python 读取 PowerPoint SmartArt 数据?Python-PPTX
- java - Java class.getRessource().getPath() 在 URL 的开头添加了一个奇怪的 '/'
- javascript - JSON 文件让 20 款最常玩的游戏出现在我的首页
- scala - 如何检查函数是否在Scala中是部分的?