从0开始学习R语言--Day37--CMH检验

对于有多个特征的数据,我们一般的处理方式是构建特征函数,计算每个特征向量的系数,从而将其影响纳入到研究量中,但对于简单的问题,也这样做的话未免有点小题大做。这时我们可以考虑用CMH来分析变量在每个特征下的影响,这个方法可以通过分层控制不同的无关特征和变量,凸显变量真实的关联关系。

以下是一个例子:

R 复制代码
set.seed(123)
n <- 500  # 增大样本量
Age <- sample(c("Young", "Middle", "Old"), n, replace = TRUE, prob = c(0.3, 0.4, 0.3))
Drug <- sample(c("A", "B"), n, replace = TRUE)

# 改进:药物B在Old组更可能有效,但允许例外
Effect <- ifelse(
  (Drug == "B" & Age == "Old" & runif(n) > 0.2) |  # 80% 有效
    (Drug == "A" & Age == "Young" & runif(n) > 0.3) | # 70% 有效
    (Age == "Middle" & Drug == "B" & runif(n) > 0.6) | # Middle组B药40%有效
    (runif(n) > 0.9),  # 10% 的全局随机有效
  "Improved", 
  "Not Improved"
)
df <- data.frame(Age, Drug, Effect)
head(df)

# 三维列联表(Age × Drug × Effect)
table_array <- table(df$Drug, df$Effect, df$Age)
table_array

# 使用mantelhaen.test()
result <- mantelhaen.test(table_array)
result


library(ggplot2)
ggplot(df, aes(x = Drug, fill = Effect)) +
  geom_bar(position = "fill") +
  facet_wrap(~ Age) +
  labs(y = "Proportion") +
  theme_minimal()

输出:

R 复制代码
, ,  = Middle

   
    Improved Not Improved
  A       15           84
  B       51           59

, ,  = Old

   
    Improved Not Improved
  A        7           63
  B       60           18

, ,  = Young

   
    Improved Not Improved
  A       52           24
  B        5           62 
	Mantel-Haenszel chi-squared test with continuity correction

data:  table_array
Mantel-Haenszel X-squared = 12.072, df = 1, p-value = 0.000512
alternative hypothesis: true common odds ratio is not equal to 1
95 percent confidence interval:
 0.4232736 0.8208328
sample estimates:
common odds ratio 
        0.5894378

从输出可以看到,在Middle和Old组药物B更有效,Young组则是药物A,而检验的结果p为0.0005,说明在调查年龄分组后,药物与疗效的关系十分显著,而公共比值则意味着使用药物B的患者获得改善的几率是药物A的0.59倍。

相关推荐
Bathwind-w1 小时前
FOC开发工具学习
学习
Coder_Boy_2 小时前
DDD从0到企业级:迭代式学习 (共17章)之 四
java·人工智能·驱动开发·学习
deng-c-f2 小时前
Linux C/C++ 学习日记(49):线程池
c++·学习·线程池
HyperAI超神经3 小时前
【vLLM 学习】Prithvi Geospatial Mae
人工智能·python·深度学习·学习·大语言模型·gpu·vllm
TL滕4 小时前
从0开始学算法——第十八天(分治算法)
笔记·学习·算法
思成不止于此5 小时前
【MySQL 零基础入门】MySQL 约束精讲(一):基础约束篇
数据库·笔记·sql·学习·mysql
小黄人软件5 小时前
【过度滥用眼】真正的理解,从闭眼开始:如何把“眼睛视觉依赖”降到最低,把大脑效率提到最高。【最少用眼的工作与学习体系】
学习
老华带你飞6 小时前
建筑材料管理|基于springboot 建筑材料管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·spring
L.fountain6 小时前
图像自回归生成(Auto-regressive image generation)实战学习(一)
人工智能·深度学习·学习·计算机视觉·图像自回归
TL滕7 小时前
从0开始学算法——第十八天(分治算法练习)
笔记·学习·算法