您可以繪製一個樣條曲線使用smooth.spline
和lines
:
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
這是因爲人工重複採樣的。 smooth.spline
使用交叉驗證來決定給出樣條的自由度的數量,但它更傾向於不使用重複的x
值(因爲總會有自舉重採樣)。你可以通過選擇自己的自由度來解決這個問題,但這可能是很好的。
多個自舉曲線?請讓你的例子[reproducible](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)和你的問題明確。 – mnel
書中或圖書網站上沒有代碼。你是否熟悉軟件包:boot? –