我是R.的新手。最近我一直在努力实现一个多重的RBF插值过程。我使用“优化”来尝试最小化平方误差(SSE)以找到最佳拟合。然而,我遇到的一个问题是权重(w)在循环完成后显示NA值。所以我放置了一个断点并尝试调试。我查看了几次迭代,w矩阵在函数中很好。如果我切换到全局环境,w矩阵仍然显示NA值。有什么建议?
以下是我使用的代码:
SSE <- function(epsilon) {
for (lin in 1:N) {
for (col in 1:N) {
Phi[lin,col] <- 0
for (RD in 1:C){
Phi[lin,col] <- Phi[lin,col] + (CalibScen[lin,RD]-CalibScen[col,RD])^2 *
Scale_factor[RD,1]^2
}
Phi[lin,col] <- rbf.multi(sqrt(Phi[lin,col]),epsilon)
}
}
w <- solve(Phi, Calibdata)` #Solve for RBF weights
# determine sum squared error
for (j in 1:N) {
for (k in 1:N){
SumDiff[k] <-0
for (RD in 1:C){
SumDiff[k] <- SumDiff[k] + (CalibScen[j,RD]-CalibScen[k,RD])^2 *
Scale_factor[RD,1]^2
}
rbf[k] <- rbf.multi(sqrt(SumDiff[k]),epsilon)
}
Est[j] <- t(w)%*%rbf
SquaredError[j] <- ((Calibdata[j] - Est[j]))^2
}
SSE <- sum(SquaredError[j])
}
best_epsilon <- optimize(SSE,c(0.1,2.0),maximum = FALSE, tol = 0.001)