mtsdi 中的 arima 方法
arima method in mtsdi
我有一个大型数据集(超过 2000 行和 2000 个变量),其中有很多缺失值。我正在使用 R 的 mtsdi 包的 mnimput
函数来估算所有缺失值。这是我的代码
formula = data
imput_out <- mnimput(formula,data, by = NULL, log = FALSE, log.offset = 1,
eps = 1e-3, maxit = 1e2, ts = TRUE, method = "arima", ar.control = list(order = c(1,1,1), period = 4, f.eps = 1e-6, f.maxit = 1e3, ga.bf.eps = 1e-6,verbose = TRUE, digits = getOption("digits")))
但是我收到一个错误
Error in o[1:3, j] : incorrect number of dimensions
请帮帮我。
您必须真正深入到包源中才能发现这里发生了什么。
ar.control 被放入一个变量 o 中,该变量 o 由您放入公式中的第 j 列迭代。所以如果你的公式看起来像 ~c31+c32+c33
你的 ar 术语需要是 3 列的 (p,d,q) 值
为了便于编辑,我在 ar.control 参数之外分配了它
arcontrol<-list(order=cbind(c(1,0,0),c(0,0,1),c(1,0,0)), period=NULL)
mnimput(formula,data,eps=1e-3,ts=TRUE, method="arima", ar.control=arcontrol
如果你有兴趣,这里是包源
function (xn, o, s, eps, maxit)
{
rows <- dim(xn)[1]
cols <- dim(xn)[2]
models <- as.list(rep(NA, cols))
ar.pred <- matrix(NA, nrow = rows, ncol = cols)
for (j in 1:cols) {
if (is.null(s)) {
order <- o[1:3, j]
seasonal <- list(order = c(0, 0, 0), period = NA)
}
else {
order <- o[1:3, j]
seasonal <- list(order = o[4:6, j], period = s)
}
models[[j]] <- arima(xn[, j], order = order, seasonal = seasonal,
xreg = NULL, optim.control = list(maxit = maxit,
reltol = eps))
ar.pred[, j] <- xn[, j] - residuals(models[[j]])
}
retval <- list(ar.pred = ar.pred, models = models)
return(retval)
}
我有一个大型数据集(超过 2000 行和 2000 个变量),其中有很多缺失值。我正在使用 R 的 mtsdi 包的 mnimput
函数来估算所有缺失值。这是我的代码
formula = data
imput_out <- mnimput(formula,data, by = NULL, log = FALSE, log.offset = 1,
eps = 1e-3, maxit = 1e2, ts = TRUE, method = "arima", ar.control = list(order = c(1,1,1), period = 4, f.eps = 1e-6, f.maxit = 1e3, ga.bf.eps = 1e-6,verbose = TRUE, digits = getOption("digits")))
但是我收到一个错误
Error in o[1:3, j] : incorrect number of dimensions
请帮帮我。
您必须真正深入到包源中才能发现这里发生了什么。
ar.control 被放入一个变量 o 中,该变量 o 由您放入公式中的第 j 列迭代。所以如果你的公式看起来像 ~c31+c32+c33
你的 ar 术语需要是 3 列的 (p,d,q) 值
为了便于编辑,我在 ar.control 参数之外分配了它
arcontrol<-list(order=cbind(c(1,0,0),c(0,0,1),c(1,0,0)), period=NULL)
mnimput(formula,data,eps=1e-3,ts=TRUE, method="arima", ar.control=arcontrol
如果你有兴趣,这里是包源
function (xn, o, s, eps, maxit)
{
rows <- dim(xn)[1]
cols <- dim(xn)[2]
models <- as.list(rep(NA, cols))
ar.pred <- matrix(NA, nrow = rows, ncol = cols)
for (j in 1:cols) {
if (is.null(s)) {
order <- o[1:3, j]
seasonal <- list(order = c(0, 0, 0), period = NA)
}
else {
order <- o[1:3, j]
seasonal <- list(order = o[4:6, j], period = s)
}
models[[j]] <- arima(xn[, j], order = order, seasonal = seasonal,
xreg = NULL, optim.control = list(maxit = maxit,
reltol = eps))
ar.pred[, j] <- xn[, j] - residuals(models[[j]])
}
retval <- list(ar.pred = ar.pred, models = models)
return(retval)
}