r - Stata vs. R:Delta 方法为 logit 模型的相对风险 SE 提供了不同的结果
问题描述
我一直在尝试估计 logit 回归(使用相对风险)中协变量的条件平均处理效果以及用于推理目的的标准误差。delta 方法对于计算这些处理效果的标准误差是必要的。我一直在尝试使用 Stata 用户编写的命令重新创建这些结果adjrr
,以计算 R 中标准误差和置信区间的相对风险。
Stata 中的adjrr
命令计算调整后的相对风险(我的项目感兴趣的条件平均处理效果),它是使用 delta 方法的 SE。R 中的deltamethod
命令应该会产生相同的结果,但事实并非如此。
如何在 R 中复制来自 Stata 的结果?
我使用了以下自行生成的数据:(https://migariane.github.io/DeltaMethodEpiTutorial.nb.html)。
R代码如下:
generateData <- function(n, seed){
set.seed(seed)
age <- rnorm(n, 65, 5)
age65p <- ifelse(age>=65, T, F)
cmbd <- rbinom(n, size=1, prob = plogis(1 - 0.05 * age))
Y <- rbinom(n, size=1, prob = plogis(1 - 0.02* age - 0.02 * cmbd))
data.frame(Y, cmbd, age, age65p)
}
# Describing the data
data <- generateData(n = 1000, seed = 777)
str(data)
logfit <- glm(Y ~ age65p + cmbd, data = data, family = binomial)
summary(logfit)
p1 <- predict(logfit, newdata = data.frame(age65p = T, cmbd = 0), type="response")
p0 <- predict(logfit, newdata = data.frame(age65p = F, cmbd = 0), type="response")
rr <- p1 / p0
rr
0.8123348 #result
library(msm)
se_rr_delta <- deltamethod( ~(1 + exp(-x1)) / (1 + exp(-x1 -x2)), coef(logfit), vcov(logfit))
se_rr_delta
0.6314798 #result
Stata代码(使用相同的数据):
logit Y i.age65p i.cmbd
adjrr age65p
//results below
R1 = 0.3685 (0.0218) 95% CI (0.3259, 0.4112)
R0 = 0.4524 (0.0222) 95% CI (0.4090, 0.4958)
ARR = 0.8146 (0.0626) 95% CI (0.7006, 0.9471)
ARD = -0.0839 (0.0311) 95% CI (-0.1449, -0.0229)
p-value (R0 = R1): 0.0071
p-value (ln(R1/R0) = 0): 0.0077
解决方案
推荐阅读
- shell - 如何提取其第二列存在于其他文件中的行?
- vba - 在 VBA 中编写逻辑测试时遇到问题
- android - config.ini 中的系统映像文件夹不存在
- php - 是否可以将另一个表中的按钮连接到另一个表以获取数据?
- javascript - 使用 Angular 7 在混合应用程序中加载 Angularjs 包
- android - 在 Button 和扩展 Button 的自定义类 MyButton 之间进行转换时出错
- coverity - 覆盖率扫描(静态代码分析)中的 REVERSE_INULL 和 FORWARD_NULL 错误有什么区别?
- r - 大于内存操作:空间连接与 R
- ios - UITableviewCell 在 CarPlay 中未占用完整宽度
- php - 如何在托管的 symfony 3.4 项目上修复 /login_check “此页面无法正常工作”