【发布时间】:2012-07-02 18:13:37
【问题描述】:
我想绘制针对特定自变量调整(即独立于模型中包含的混杂因素)与结果(二元)关系的多元逻辑回归分析 (GLM) 的结果。
我看到一些帖子推荐使用以下方法,使用predict 命令后跟curve,这是一个示例;
x <- data.frame(binary.outcome, cont.exposure)
model <- glm(binary.outcome ~ cont.exposure, family=binomial, data=x)
plot(cont.exposure, binary.outcome, xlab="Temperature",ylab="Probability of Response")
curve(predict(model, data.frame(cont.exposure=x), type="resp"), add=TRUE, col="red")
但是,这似乎不适用于多元回归模型。当我添加“年龄”(任意 - 可以是任何相同长度的变量)作为混杂变量时,出现以下错误;
> x <- data.frame(binary.outcome, cont.exposure, age)
> model <- glm(binary.outcome ~ cont.exposure + age, family=binomial, data=x)
> plot(cont.exposure, binary.outcome, xlab="Temperature",ylab="Probability of Response")
> curve(predict(model, data.frame(cont.exposure=x), type="resp"), add=TRUE, col="red")
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
variable lengths differ (found for 'age')
In addition: Warning message:
'newdata' had 101 rows but variable(s) found have 698 rows
上面的模型是我想跑的模型的简化版,但是原理是一样的; 我想绘制二元结果变量与连续暴露之间的关系,不受混杂因素的影响。。
如果能找到解决上述问题的方法,或者另一种方法来查看我感兴趣的关系,那就太好了。非常感谢。
【问题讨论】:
-
你可以看看
car包中的crPlots函数。 -
@BenBarnes 对此表示感谢。我查看并快速使用了数据,但该函数无法识别我正在执行逻辑回归。但是,如果我使用线性回归(即,我的曝光现在是我的结果,我的二元变量是自变量),那么我确实得到了我想要的。你会发布这个作为我接受的答案,还是我应该接受?
-
我要支持蒂埃里的回答!
-
@Luke 你有没有找到解决这个问题的好方法?正如您在评论中指出的那样,接受的答案有点错过了问题的意图。
-
@colin 很遗憾没有,在过去的几年里我没有看到任何东西可以做我真正追求的事情。你有什么建议吗?
标签: r plot regression