1

我对 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.contVE12VCxVD2VE.contVE12VCx

按照本文的命名法(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")

这是我想获得的图形示例:

4

0 回答 0