加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在R中绘制多个Bootstrap曲线

发布时间:2020-12-18 00:30:24 所属栏目:安全 来源:网络整理
导读:我想知道如何在R中绘制这些多个自举曲线. 我的代码就像 dat2 - read.delim("bone.data",sep ="t",header= TRUE)y - dat2[,4]x - dat2[,2]plot(x,y,xlab="age",ylab="BMD",col=ifelse(dat2[,3]=="female","red","blue")) 多个Bootstrap曲线如本书左下角的图8
我想知道如何在R中绘制这些多个自举曲线.
我的代码就像
dat2 <- read.delim("bone.data",sep ="t",header= TRUE)
y <- dat2[,4]
x <- dat2[,2]
plot(x,y,xlab="age",ylab="BMD",col=ifelse(dat2[,3]=="female","red","blue"))

多个Bootstrap曲线如本书左下角的图8.2所示.
ESL

名为Bone Mineral Density的数据可以从这个网站获得:
data

该文件的直接链接是:here

解决方法

您可以使用smooth.spline和lines绘制样条曲线:
plot.spline = function(x,...) {
    s = smooth.spline(x,cv=TRUE)
    lines(predict(s),...)
}

因此,要执行引导,根据本书中的说明,您可以使用替换从数据中随机采样行,并在重新采样数据上调用plot.spline:

bootstrap.curves = function(dat,nboot,...) {
    for (i in 1:nboot) {
        subdata = dat[sample(NROW(dat),replace=TRUE),]
        plot.spline(subdata$age,subdata$spnbmd,...)
    }
}

因此,您可以使用此功能为男性和女性运行单独的图:

bootstrap.curves(dat2[dat2$gender == "female",],10,col="red")
bootstrap.curves(dat2[dat2$gender == "male",col="blue")

最终结果:

注意:此代码将产生许多警告(而不是错误),如下所示:

1: In smooth.spline(x,cv = TRUE) :
  crossvalidation with non-unique 'x' values seems doubtful

这是因为引导程序重新取样. smooth.spline使用交叉验证来确定给出样条曲线的自由度数,但是它不希望使用重复的x值(因为实际上总是会有自举重新采样).你可以通过选择你自己的自由度来解决这个问题,但这可能就此而言很好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读