geom_abline 用于逻辑回归 (ggplot2)
geom_abline for logistic regression (ggplot2)
很抱歉,如果这个问题很简单,但是,我找不到解决问题的方法。我想用 ggplot2 绘制逻辑回归线。问题是我不能使用 geom_abline
因为我没有原始模型,只有每条回归线的斜率和截距。我已经将这种方法用于线性回归,并且它适用于 geom_abline
,因为您可以为函数提供多个斜率和截距。
geom_abline(data = estimates, aes(intercept = inter, slope = slo)
其中 inter
和 slo
是具有多个值的向量。
如果我尝试使用逻辑回归系数的相同方法,我将得到错误的回归线(线性)。我正在尝试使用 geom_line,但是,我无法使用函数 predict
生成预测值,因为我没有原始模型对象等。
有什么建议吗?
提前致谢,
古斯塔沃
如果模型有 logit link,那么您可以仅使用截距 (coefs[1]
) 和斜率 (coefs[2]
) 绘制预测:
library(ggplot2)
n <- 100L
x <- rnorm(n, 2.0, 0.5)
y <- factor(rbinom(n, 1L, plogis(-0.6 + 1.0 * x)))
mod <- glm(y ~ x, binomial("logit"))
coefs <- coef(mod)
x_plot <- seq(-5.0, 5.0, by = 0.1)
y_plot <- plogis(coefs[1] + coefs[2] * x_plot)
plot_data <- data.frame(x_plot, y_plot)
ggplot(plot_data) + geom_line(aes(x_plot, y_plot), col = "red") +
xlab("x") + ylab("p(y | x)") +
scale_y_continuous(limits = c(0, 1)) + theme_bw()
编辑
这里是根据之前的代码在同一图表上绘制 k
预测概率线的一种方法:
library(reshape2)
k <- 5L
intercepts <- rnorm(k, coefs[1], 0.5)
slopes <- rnorm(k, coefs[2], 0.5)
x_plot <- seq(-5.0, 5.0, by = 0.1)
model_predictions <- sapply(1:k, function(idx) {
plogis(intercepts[idx] + slopes[idx] * x_plot)
})
colnames(model_predictions) <- 1:k
plot_data <- as.data.frame(cbind(x_plot, model_predictions))
plot_data_melted <- melt(plot_data, id.vars = "x_plot", variable.name = "model",
value.name = "y_plot")
ggplot(plot_data_melted) + geom_line(aes(x_plot, y_plot, col = model)) +
xlab("x") + ylab("p(y | x)") +
scale_y_continuous(limits = c(0, 1)) + theme_bw()
很抱歉,如果这个问题很简单,但是,我找不到解决问题的方法。我想用 ggplot2 绘制逻辑回归线。问题是我不能使用 geom_abline
因为我没有原始模型,只有每条回归线的斜率和截距。我已经将这种方法用于线性回归,并且它适用于 geom_abline
,因为您可以为函数提供多个斜率和截距。
geom_abline(data = estimates, aes(intercept = inter, slope = slo)
其中 inter
和 slo
是具有多个值的向量。
如果我尝试使用逻辑回归系数的相同方法,我将得到错误的回归线(线性)。我正在尝试使用 geom_line,但是,我无法使用函数 predict
生成预测值,因为我没有原始模型对象等。
有什么建议吗?
提前致谢, 古斯塔沃
如果模型有 logit link,那么您可以仅使用截距 (coefs[1]
) 和斜率 (coefs[2]
) 绘制预测:
library(ggplot2)
n <- 100L
x <- rnorm(n, 2.0, 0.5)
y <- factor(rbinom(n, 1L, plogis(-0.6 + 1.0 * x)))
mod <- glm(y ~ x, binomial("logit"))
coefs <- coef(mod)
x_plot <- seq(-5.0, 5.0, by = 0.1)
y_plot <- plogis(coefs[1] + coefs[2] * x_plot)
plot_data <- data.frame(x_plot, y_plot)
ggplot(plot_data) + geom_line(aes(x_plot, y_plot), col = "red") +
xlab("x") + ylab("p(y | x)") +
scale_y_continuous(limits = c(0, 1)) + theme_bw()
编辑
这里是根据之前的代码在同一图表上绘制 k
预测概率线的一种方法:
library(reshape2)
k <- 5L
intercepts <- rnorm(k, coefs[1], 0.5)
slopes <- rnorm(k, coefs[2], 0.5)
x_plot <- seq(-5.0, 5.0, by = 0.1)
model_predictions <- sapply(1:k, function(idx) {
plogis(intercepts[idx] + slopes[idx] * x_plot)
})
colnames(model_predictions) <- 1:k
plot_data <- as.data.frame(cbind(x_plot, model_predictions))
plot_data_melted <- melt(plot_data, id.vars = "x_plot", variable.name = "model",
value.name = "y_plot")
ggplot(plot_data_melted) + geom_line(aes(x_plot, y_plot, col = model)) +
xlab("x") + ylab("p(y | x)") +
scale_y_continuous(limits = c(0, 1)) + theme_bw()