根据Ewout W. Steyerberg的临床预测模型,我们得出以下结论:
校准图在x轴上有预测,而结果在 y轴。身份认同有助于定位:完美 预测应该在45°线上。对于线性回归, 校准图会生成一个简单的散点图。对于二进制 结果,该图仅包含y轴的0和1值。 没有直接观察到概率。但是,平滑技术 可以用来估计观察到的结果概率(p (y = 1))与预测概率的关系。观察到0/1 通过合并结果将结果替换为0到1之间的值 具有相似预测概率的受试者的值,例如使用 黄土算法。
我正在为具有二进制结果的逻辑回归模型拟合。以下是示例代码。校准曲线看起来很奇怪,因为样品很小。我主要想知道方法是否正确。
library(tidyverse)
tibble_ex <- tibble(
event = c(1, 0, 1, 0, 0, 1),
weight = c(100, 200, 110, 210, 220, 105)
)
model <- glm(event ~ weight, family = 'binomial', data = tibble_ex)
tibble_ex <- tibble_ex %>%
mutate(pred = predict(model, type = 'response'))
tibble_ex %>%
arrange(pred) %>%
ggplot(aes(x = pred, y = event)) +
stat_smooth(method = 'glm', method.args = list(family = binomial), se = F) +
geom_abline()
答案 0 :(得分:0)
如果情节,您只是缺少平滑部分。如果要使用glm绘制曲线,则必须将其用于样条曲线。
EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
但是,我注意到Steyerberg和Harrell更喜欢使用黄土平滑处理。
tibble_ex %>%
arrange(pred) %>%
ggplot(aes(x = pred, y = event)) +
scale_y_continuous(limits = c(0, 1), breaks = seq(0, 1, by = 0.2)) +
scale_x_continuous(limits = c(0, 1), breaks = seq(0, 1, by = 0.2)) +
stat_smooth(method = "glm", formula = y ~ ns(x,1), size = 1) +
geom_abline()
我还想参考Frank Harrell的rms软件包。有许多有用的功能可以拟合和验证模型,包括校准图。下面的代码绘制了校准曲线并提供了其他统计信息。
tibble_ex %>%
arrange(pred) %>%
ggplot(aes(x = pred, y = event)) +
scale_y_continuous(limits = c(0, 1), breaks = seq(0, 1, by = 0.2)) +
scale_x_continuous(limits = c(0, 1), breaks = seq(0, 1, by = 0.2)) +
geom_smooth(aes(x = pred, y = event), color = "red", se = F, method = "loess") +
# you can use stat_smooth in place of geom_smooth
geom_abline()