1

我正在尝试基于 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 尽可能低。

如何将正则化参数和平滑约束结合到帽子矩阵中?

4

0 回答 0