gpt4 book ai didi

r - 如何对 loess 函数使用留一法交叉验证?

转载 作者:行者123 更新时间:2023-12-04 04:36:26 27 4
gpt4 key购买 nike

我的结果是 NA。我做错了什么?

data(Boston, package='MASS')

x <- Boston$dis
y <- Boston$nox
n <- length(x)
cvs <- rep(0, n)

for(i in 1:n){
xi <- x[-i]
yi <- y[-i]
d <- loess(yi~xi, span=0.2, degree=2)
cvs[i] <- (y[i] - predict(d, newdata=data.frame(xi=x[i])))^2
}

mean(cvs)

最佳答案

mean(cvs,na.rm=TRUE)
[1] 0.003753745

plot(y~x)
lines( d$x[order(d$x)], d$fitted[order(d$x)])
which(is.na(d$fitted[order(d$x)]) )
#integer(0)

您可以看到 NA 位于 x 范围的极端:
#add as debugging code
if(is.na(cvs[i]) ) {print(i);print(x[i])}}
[1] 354
[1] 12.1265
[1] 373
[1] 1.1296

range(x)
#[1] 1.1296 12.1265

但我还是不明白为什么:
(y[ which(is.na(cvs)) ]-predict(d, x[ which(is.na(cvs)) ] ))^2
[1] 3.218139e-06 3.742504e-04

关于r - 如何对 loess 函数使用留一法交叉验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19696452/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com