R语言使用BOOT重抽样获取回归方程系数95%可信区间(1)

bootstrap自采样目前广泛应用与统计学中,其原理很简单就是通过自身原始数据抽取一定量的样本(也就是取子集),通过对抽取的样本进行统计学分析,然后继续重新抽取样本进行分析,不断的重复这一过程N(大于500次以上)次,然后得到N个统计结果,然后进行区间分析,得到最终结果。
在这里插入图片描述
bootstrap自采样对于小样本数据计算效果较好,也可以在线性方程中通过bootstrap自采样计算并绘制出可信区间。本期我们将通过R语言演示BOOT重抽样进行回归方程系数的可信区间计算。
我们先导入数据和R包

library(boot)
bc<-read.csv("E:/r/test/zaochan.csv",sep=',',header=TRUE)
bc <- na.omit(bc)

在这里插入图片描述
这是一个关于早产低体重儿的数据(公众号回复:早产数据,可以获得该数据),低于2500g被认为是低体重儿。数据解释如下:low 是否是小于2500g早产儿,age 母亲的年龄,lwt 末次月经体重,race 种族,smoke 孕期抽烟,ptl 早产史(计数),ht 有高血压病史,ui 子宫过敏,ftv 早孕时看医生的次数
bwt 新生儿体重数值。
先把分类变量转成因子

bc$race<-ifelse(bc$race=="black",1,ifelse(bc$race=="white",2,3))
bc$smoke<-ifelse(bc$smoke=="nonsmoker",0,1)
bc$low<-factor(bc$low)
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)
summary(fit)

在这里插入图片描述
在这里R已经把标准误计算出来了,我们等会使用BOOT计算和它进行个比较。进行BOOT之前要先写个简单的function,非常简单就是用function包住回归方程就可以了

model_coef <- function(data,index){
  coef(glm(low ~ age + lwt + race + smoke + ptl + ht + ui + ftv,
           family = binomial("logit"),
           data =bc,subset =index))
  }

写好以后我们要调试一下function看写得对不对,写不对的话重抽样不可能成功。我们对代码取了一个子集,其实也相当于1次重抽样

model_coef(bc,1:100)

在这里插入图片描述
OK,写得function没问题后就可以重抽样了。Data为抽样的数据,statistic为抽样的函数,R为抽样的次数,我这里抽500次。

results <- boot(data=bc, statistic=model_coef, R=500)

在这里插入图片描述
把结果导出,它这里是按1-10排序的,自己对照一下就可以了,t2是age这个变量,有了标准误就可以轻易计算可信区间了。

print(results)

在这里插入图片描述
还可以查看它的抽样分布

plot(results)

在这里插入图片描述
本章先介绍一个简单的抽样模型,再慢慢深入,BOOT重抽样内容预计3个章节介绍完。

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天桥下的卖艺者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值