R语言finalfit包逻辑回归OR值反转方法(仿Stata风格)
解决finalfit中Logistic回归OR值反向的问题
在finalfit中,OR值的方向由因子变量的参照组设定决定,你遇到的是参照组与目标对比组倒置的情况,以下两种方法可以实现类似Stata的OR反转效果:
方法1:调整因子变量的参照组(推荐)
直接将需要作为基准的组别设为因子的参照组,finalfit会自动输出该基准组对比其他组的OR值:
library(finalfit) # 将hospital的参照组指定为hospital_1(你的基准组) colon_s$hospital <- relevel(colon_s$hospital, ref = "hospital_1") # 重新运行回归分析 colon_s %>% finalfit("mort_5yr", c("hospital", "sex.factor"))
此时输出的hospital_2对应的OR值就是其相对于hospital_1的比值,即你需要的1/12.36≈0.08(或你举例的0.8)。
方法2:手动反转已生成的OR及置信区间
如果已经得到了反向的结果,不想重新拟合模型,可以直接对目标行的OR值和置信区间取倒数,注意反转后置信区间的上下限需要交换:
# 先获取原分析结果 result_df <- colon_s %>% finalfit("mort_5yr", c("hospital", "sex.factor")) # 定位到hospital_2的行,反转OR和置信区间 target_row <- result_df$label == "hospital_2" result_df[target_row, c("OR", "Lower CI", "Upper CI")] <- 1 / result_df[target_row, c("OR", "Lower CI", "Upper CI")] # 交换置信区间的上下限 result_df[target_row, c("Lower CI", "Upper CI")] <- rev(result_df[target_row, c("Lower CI", "Upper CI")]) # 查看调整后的结果 print(result_df)
内容的提问来源于stack exchange,提问作者Johan
相关产品推荐
相关产品推荐

