Вам необходимо split
исходный фрейм данных, а не серия xts
, списком с элементами Group
и Category
.Затем запустите тесты для каждого результирующего члена списка.
sp <- split(data_df, list(data_df$Group, data_df$Category))
res <- lapply(sp, function(DF) {
err <- tryCatch(
adf.test(DF[['Spending']], nlag = 1),
error = function(e) e)
})
Теперь посмотрите, какие были ошибки, и сохраните остальные.
keep <- !sapply(res, inherits, "error")
OK <- res[keep]
ERR <- res[!keep]
Наконец, извлеките результаты type?
в матрицу.
Type1 <- do.call(rbind, lapply(OK, '[[', 'type1'))
Type2 <- do.call(rbind, lapply(OK, '[[', 'type2'))
Type3 <- do.call(rbind, lapply(OK, '[[', 'type3'))
rownames(Type1) <- names(OK)
rownames(Type2) <- names(OK)
rownames(Type3) <- names(OK)
Type1
# lag ADF p.value
#1.111 0 -0.71919548 0.41178921
#2.111 0 -2.03281443 0.04332142
#3.111 0 0.14723783 0.67762240
#1.121 0 -0.04341668 0.62275779
#2.121 0 -1.78744138 0.07322266
#3.121 0 -0.45198372 0.50518454
Значение по умолчанию nlag
.
В приведенном выше коде я использовал nlag = 1
.
В документации aTSA::adf.test
сказано (обратите внимание наопечатка) что задержка по умолчанию используется для вычисления статистики теста.
Мы используем значение по умолчанию nlag = floor (4 * (length (x) / 100) ^ (2/9)) для вычисления статистики теста.
ToДля этого код станет следующим.
res_b <- lapply(sp, function(DF) {
err <- tryCatch(
adf.test(DF[['Spending']]),
error = function(e) e)
})
keep <- !sapply(res, inherits, "error")
OK_b <- res_b[keep]
ERR_b <- res_b[!keep]
Type1_b <- do.call(rbind, lapply(OK_b, '[[', 'type1'))
Type2_b <- do.call(rbind, lapply(OK_b, '[[', 'type2'))
Type3_b <- do.call(rbind, lapply(OK_b, '[[', 'type3'))
rownames(Type1_b) <- sapply(names(OK), paste, unique(Type1_b[, 'lag']), sep = '.')
rownames(Type2_b) <- sapply(names(OK), paste, unique(Type2_b[, 'lag']), sep = '.')
rownames(Type3_b) <- sapply(names(OK), paste, unique(Type3_b[, 'lag']), sep = '.')
Type1_b
# lag ADF p.value
#1.121.0 0 -0.04341668 0.62275779
#1.121.1 1 0.37003728 0.74173735
#1.121.2 2 NaN NaN
#2.121.0 0 -1.78744138 0.07322266
#2.121.1 1 -1.16668314 0.25338650
#2.121.2 2 NaN NaN
#3.121.0 0 -0.45198372 0.50518454
#3.121.1 1 0.03268111 0.64465644
#3.121.2 2 NaN NaN