在R中绘制多个引导曲线

在R中绘制多个引导曲线,r,R,我想知道如何在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")) dat2您可以使用smooth.spline和line绘制样条曲线: plot.spline = fu

我想知道如何在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"))

dat2您可以使用
smooth.spline
line
绘制样条曲线:

plot.spline = function(x, y, ...) {
    s = smooth.spline(x, y, 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", ], 10, col="blue")
最终结果:

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

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

这是因为引导重采样<代码>平滑。样条曲线
使用交叉验证来确定给定样条曲线的自由度,但它不希望使用重复的
x
值来确定自由度(因为引导重采样总是有效的)。您可以通过选择自己的自由度数来解决这个问题,但这可能适合于此目的。

什么是多重自举曲线?请把你的例子和问题说清楚。书中或书的网站上没有代码。您熟悉package:boot吗?我从测试中看到,在
smooth.spline
调用中设置
cv=NA
会消除警告,并且似乎不会影响平滑操作。在阅读了帮助之后,对于使用这种方法可能会带来的任何潜在问题,我有点不知所措。有什么想法吗?@thelatemail:当我用
cv=NA
运行它时,所有的曲线都被直线所取代——这对你来说不会发生吗?类似地,设置
cv=FALSE
会导致自由度过多,曲线也太参差不齐。我不知道我做了什么,但在某些地方我混淆了函数。我现在得到的结果和你一样。把它记为一个漫长的两个星期,一直都在发生。我猜这是ELS的做法,所以我认为这是正确的选择。