代码+视频,手动绘制logistic回归预测模型校准曲线(Calibration curve)(1)

校准曲线图表示的是预测值和实际值的差距,作为预测模型的重要部分,目前很多函数能绘制校准曲线。
一般分为两种,一种是通过Hosmer-Lemeshow检验,把P值分为10等分,求出每等分的预测值和实际值的差距.

在这里插入图片描述
另外一种是calibration函数重抽样绘制连续的校准图

在这里插入图片描述
今天我们来视频演示第一种,手动绘制的好处在于加深你对绘图的理解,而且能个性化的进一步处理图形。第一种绘图本质就是我们的折线图,

R语言手动绘制logistic回归预测模型校准曲线(Calibration curve)(1)

代码

library(ggplot2)
library(rms)
#公众号:零基础说科研,公众号回复:早产数据,可以获得数据
bc<-read.csv("E:/r/test/zaochan.csv",sep=',',header=TRUE)
######
bc$race<-ifelse(bc$race=="black",1,ifelse(bc$race=="white",2,3))
bc$smoke<-ifelse(bc$smoke=="nonsmoker",0,1)
bc$race<-factor(bc$race)
bc$ht<-factor(bc$ht)
bc$ui<-factor(bc$ui)
#########
fit<-glm(low ~ age + lwt + race + smoke + ptl + ht + ui + ftv,
         family = binomial("logit"),
         data = bc)
#得出预测概率
pr1 <- predict(fit,type = c("response"))#得出预测概率
p = pr1
##使用order函数对P值排序,这里注意一下,order§排的是位置
sor <- order(p)
#P值按order来排列
p <- p[sor]
#Y值也按order来排列
y = bc[, "low"]
y <- y[sor]
###把P值分为10个等分区间
groep <- cut2(p, g = 10) #来自rms包
###计算每个等分的P值和Y值
meanpred <- round(tapply(p, groep, mean), 3)
meanobs <- round(tapply(y, groep, mean), 3)
##绘图
plot(meanpred, meanobs)
###修饰一下
plot(meanpred, meanobs,xlab = "Predicted risk", 
     ylab = "Observed risk", pch = 16, ps = 2, xlim = c(0, 1), 
     ylim = c(0, 1), cex.lab = 1.2, cex.axis = 1.1, 
     las = 1)
abline(0, 1, col = "grey", lwd = 1, lty = 1)
######使用PredictABEL包的plotCalibration函数来验证一下我们计算的正确性
library(PredictABEL)
plotCalibration(data = bc,
                cOutcome = 2,#结果在第几行就选几
                predRisk = pr1,
                groups = 10,
                rangeaxis = c(0,1))
#########
source("E:/r/test/ggfit.R")

#gg2<-function(data,p,y,group=1,leb) 

y1<-bc[, "low"]
  
plot1<-gg2(bc,pr1,y1)

ggplot(plot1, aes(x=meanpred, y=meanobs)) + 
  geom_errorbar(aes(ymin=meanobs-1.96*se, ymax=meanobs+1.96*se), width=.02)+
  annotate(geom = "segment", x = 0, y = 0, xend =1, yend = 1)+
  expand_limits(x = 0, y = 0) + 
  scale_x_continuous(expand = c(0, 0)) + 
  scale_y_continuous(expand = c(0, 0))+
  geom_point(size=3, shape=21, fill="white")+
  xlab("预测概率")+
  ylab("实际概率")


gg3(bc,pr1,y1)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在R中,calibrate函数是rms包中的一个函数,用于绘制logistic回归模型的校正曲线校正曲线用于评估模型的预测准确性,并显示观测值的平均预测概率与实际发生的事件之间的关系。 下面是使用calibrate函数绘制logistic回归校正曲线的简单示例: ```R library(rms) # 假设你已经拟合了一个logistic回归模型,命名为"model" # model <- lrm(formula, data) # 使用calibrate函数绘制校正曲线 calibration <- calibrate(model, method = "boot", B = 200) plot(calibration) ``` 上述代码中,你需要先拟合一个logistic回归模型,并将其命名为"model"。然后使用calibrate函数来计算校正曲线,其中method参数指定了计算校正曲线的方法,这里选择了"boot",表示使用自助法(bootstrap)进行计算。B参数指定了bootstrap重采样的次数。 最后,使用plot函数绘制校正曲线图形。 绘制完成后,你将会得到一个校正曲线图形。该图形将显示出观测值的平均预测概率与实际发生事件之间的关系。你可以通过观察曲线是否接近理想的对角线来评估模型的预测准确性。如果曲线与对角线接近,表示模型的预测准确性较好。如果曲线偏离对角线,表示模型存在预测偏差。 此外,你还可以通过观察图形中的曲线上的点来获取更多信息。这些点表示不同的预测概率区间,并显示实际发生事件的比例。在理想情况下,这些点应该在对角线上均匀分布。 根据校正曲线的形状和点的分布,你可以进一步解读模型的预测准确性和潜在的偏差。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值