试图找到三次平滑样条的预测误差

时间:2019-04-17 11:21:55

标签: r prediction

我正在尝试比较三种模型,即knn,三次样条和三次平滑样条。我正在使用postResample函数,但是它不适用于平滑样条曲线。我怀疑这是因为它不是“模型”,但是我一直在搜索,并且找不到其他方法来获取预测错误。

dataset <- read.table("https://www.uio.no/studier/emner/matnat/math/STK2100/v19/mandatoryassignments-exam/data.dat")

set.seed(1)
samplesize <- round(nrow(dataset)/2)
samp <- sample(seq_len(nrow(dataset)), size = samplesize)
training <- dataset[samp, ]
test <- dataset[-samp, ]
training <- training[order(training$x),]
test <- test[order(test$x),]

attach(training)
library(caret)
ctrl <- trainControl(method="cv",number = 5)
knn <- train(y ~ x, data = training, metric = "Rsquared", method = "knn", trControl = ctrl)
knn
y.pred = predict(knn,newdata = training)
plot(training)
lines(x, y.pred, col='red')


require(splines)
cub.splines = lm(y ~ bs(x, knots = c(-3,-0.8,0.2,2.6)), data = training)
cub.splines
y.splines = predict(cub.splines, newdata = training)
lines(x, y.splines, col='green')

smooth.splines = smooth.spline(x,y, cv = TRUE)
smooth.splines
y.smooth = predict(smooth.splines, newdata = training)
lines(x, y.smooth$y, col='blue')

knn.test = predict(knn, newdata = test)
spline.test = predict(cub.splines, newdata = test)
smooth.test = predict(smooth.splines, newdata = test)

postResample(pred=knn.test, obs=test$y)
postResample(pred=spline.test, obs=test$y)
postResample(pred=smooth.test, obs=test$y)

0 个答案:

没有答案
相关问题