我正在尝试基于 GCV 优化 LOESS 拟合的跨度值。下面是我正在使用的代码。
gcv.calc <- function(span){
for (sp in span)
{
fit <- loess(y ~ x, data = df, span = sp)
res <- residuals(fit)
sse <- sum(res ^ 2)
## Calculate trace of Hat Matrix
H <- X %*% (solve(t(X) %*% X)%*% t(X)) ### solve() calculates the inverse of a matrix
traceMat <- sum(diag(H))
GCV <- (n * sse) / (n - traceMat) ^ 2
cal[[length(cal)+1]] = GCV
}
return(cal)
}
span <- seq(from = 0. 1, to = 0.5, by = 0.01)
output <- gcv.calc(span)
我想结合黄土平滑,以便自由度随着跨度的变化而调整,并最小化自由度以使 GCVS 尽可能低。
如何将正则化参数和平滑约束结合到帽子矩阵中?