我对 R 包的“边距”有疑问。我正在估计一个逻辑模型:
modelo1 <- glm(VD ~ VE12 + VE.cont + VE12:VE.cont + VC1 + VC2 + VC3 + VC4, family="binomial", data=data)
其中:
VD2
是二分变量(1 种疾病/0 不是疾病)
VE12
是二分暴露变量(值为 0 和 1)
VE.cont
连续暴露变量
VCx
(其余变量)是混杂变量。
我的目标是获得每个组VD2
的值向量的预测疾病概率( ) ,但通过变量进行调整。换句话说,我想获得组间和组间的剂量反应线,但假设每个剂量反应线的分布相同(即没有混淆)。VE.cont
VE12
VCx
VD2
VE.cont
VE12
VCx
按照本文的命名法(https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4052139/)我认为我应该做一个可以用stata完成的“边际标准化”(方法1),但我不确定如何使用 R 来做到这一点。我正在使用这种语法(使用 R):
cdat0 <- cplot(modelo1, x="VE.cont", what="prediction", data = data[data[["VE12"]] == 0,], draw=T, ylim=c(0,0.3))
cdat1 <- cplot(modelo1, x="VE.cont", what="prediction", data = data[data[["VE12"]] == 1,], draw=marg"add", col="blue")
但我不确定我是否做得对,因为这种方法给出的结果与使用没有混淆变量和函数的模型相似predict.glm
。
modelo0 <- glm(VD2 ~ VE12 + VE.cont + VE12:VE.cont, family="binomial", data=data)
也许,我应该使用边距选项,但我不理解结果,因为在列VE.cont
中获得的值不在概率标度中(0 到 1 之间)。
x <- c(1,2,3,4,5)
margins::margins(modelo1, at=list("VE.cont"=x, "VE12"=c(0,1)), type="response")