我正在尝试使用灵敏度包从我的参数和模型输出中计算sobol灵敏度指数。软件包中的sobolSmthSpl这个功能应该可以做到这一点,但我一直在收到错误消息
Error: $ operator is invalid for atomic vectors
In addition: Warning message:
In parallel::mclapply(1:ncol(Y), function(i) smooth.spline(X[, i], :
all scheduled cores encountered errors in user code*
我已经使变量的类与示例相同,但是无法消除错误。有没有人曾经使用过此功能或遇到过类似的问题?
这是函数的代码
function (Y, X)
{
ANS = list()
ANS[["call"]] = match.call()
ANS[["X"]] = X
ANS[["Y"]] = Y
par.names = colnames(X)
if (is.null(colnames(X)))
par.names = paste0("X", 1:ncol(X))
X = normalize(X)
Y = Y - mean(Y)
Y = sapply(1:ncol(X), function(i) return(Y[order(X[, i])]))
X = sapply(1:ncol(X), function(i) return(X[order(X[, i]),
i]))
SMTH = optSmooth(Y, X, c(-2, 2))
SA.tab = t(sapply(SMTH, est.Si))
colnames(SA.tab) = c("Si", "se", "q0.05")
rownames(SA.tab) = par.names
ANS[["S"]] = SA.tab
class(ANS) = "sobolSmthSpl"
return(ANS)
}