gpt4 book ai didi

r - 在R中绘制多元Logistic回归模型的结果

转载 作者:行者123 更新时间:2023-12-04 12:17:49 25 4
gpt4 key购买 nike

我想绘制一个多变量logistic回归分析(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

上面的模型是我想运行的模型的简化版本,但是原理是相同的。 我想绘制二进制结果变量和连续暴露之间的关系,而与混杂因素无关。

获得以上解决方法或查看我感兴趣的关系的另一种方法,将非常好。非常感谢。

最佳答案

set.seed(12345)
dataset <- expand.grid(Temp = rnorm(30), Age = runif(10))
dataset$Truth <- with(dataset, plogis(2 * Temp - 3 * Age))
dataset$Sample <- rbinom(nrow(dataset), size = 1, prob = dataset$Truth)
model <- glm(Sample ~ Temp + Age, data = dataset, family = binomial)
newdata <- expand.grid(
Temp = pretty(dataset$Temp, 20),
Age = pretty(dataset$Age, 5))
newdata$Sample <- predict(model, newdata = newdata, type = "response")
library(ggplot2)
ggplot(newdata, aes(x = Temp, y = Sample)) + geom_line() + facet_wrap(~Age)
ggplot(newdata, aes(x = Temp, y = Sample, colour = Age, group = Age)) + 
geom_line()

关于r - 在R中绘制多元Logistic回归模型的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com