我正在尝试使用apply系列函数进行并行计算,代码如下。目标是使silum_矩阵的每一列都适合我的规范,当我检查
dim((simul_[,1]))
我得到"NULL“,这会导致应用函数出现问题。完整的代码如下:
## Library
lib_vec = c("MSGARCH", "matrixStats", "parallel")
invisible(lapply(lib_vec, f_install_load_lib))
## seed
set.seed(1234)
MSGARCH包中的MSGARCH模型规范
MSGARCH_spec <- CreateSpec(variance.spec = list(model = c("sGARCH", "sGARCH")),
distribution.spec = list(distribution = c("norm",
"norm")),
switch.spec = list(do.mix = FALSE, K = NULL),
constraint.spec = list(fixed = list(),
regime.const = NULL),
prior = list(mean = list(), sd = list()))
MSGARCH拟合: sp500_logrets只是对数返回。
MSgarch_fit <- FitML(data = sp500_logrets, spec = MSGARCH_spec)
模拟MSGARCH Log_returns
nsim <- 100 # number of simulations
nahead <- 1000 # size of each simualtion
MS_simul <- simulate(MSgarch_fit, nsim = nsim, nahead = nahead, n.start = 500,
nburn = 100)
simul_ <- MS_simul$draw # retrieving the simulated data
并行计算设置
n_cores <- detectCores()
cl <- makeCluster(n_cores[1] - 1)
通过并行计算将每个模拟与应用函数进行拟合
fitt_ <- parSapply(cl, X = simul_, MARGIN = 2, FUN = FitML, spec = MSGARCH_spec)
stopCluster(cl)
我得到的错误是:
7 nodes produced errors; first error: unused argument (MARGIN = base::quote(2))
我想我很迷茫,非常感谢任何人的帮助:)
发布于 2020-09-27 18:58:21
错误非常明显:
7 nodes produced errors; first error: unused argument (MARGIN = base::quote(2))
parSapply()
/ sapply()
中没有参数MARGIN
。你可能把apply()
搞错了。
https://stackoverflow.com/questions/64086736
复制相似问题