我对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)
也许我应该使用margins选项,但我不理解结果,因为在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")