根据EwoutW.Steyerberg的临床预测模型,我们有以下几点:
校准图在x轴上有预测,在y轴上有结果。一条身份线有助于定位:完美的预测应该在45°线上。对于线性回归,校准图的结果是简单的散点图。对于二进制结果,图中只包含y轴的0和1值。概率不是直接观察到的。然而,平滑技术可以用来估计结果的观测概率(p(y= 1))与预测概率之间的关系。所观察到的0/1结果被0到1之间的值所代替,方法是将受试者的结果值与相似的预测概率相结合,例如使用黄土算法。
我用二元结果拟合了一个logistic回归模型。下面是一个示例代码。校准曲线看起来很奇怪,因为样品太小了。我主要想知道这个方法是否正确。
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()

发布于 2020-07-13 22:41:59
你错过的只是平滑的部分,如果情节。如果你想用glm来绘制曲线,那么你必须用样条来表示。
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()然而,我注意到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)) +
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()我还想提到弗兰克·哈雷尔的rms方案。有许多有用的功能来拟合和验证模型,包括校准图。下面的代码绘制校准曲线并提供其他统计数据。
library(rms)
val.prob(fitted(model),tibble_ex$event)https://stackoverflow.com/questions/52156633
复制相似问题