Я написал функцию, которая выполняет моделирование аримы, выводит таблицу коэффициентов и p-значений, ранжирует p-значения и возвращает модель аримы без значимых переменных.
Функция принимает два входа, объекты временного ряда и фрейм данных.
Вот код:
backward_stepwise<-function(x, y){
repeat{
arima_result<-auto_arima(x)
arima_pvals<-p_calc(arima_result)
arima_outputs<-run_outputs(arima_result, arima_pvals)
arima_ranked<-rank_pval(arima_outputs)
# temporary fix to .xreg being added to term names
for(i in 1:length(arima_ranked$term)){
arima_ranked$term<-gsub(arima_ranked$term, pattern = 'xreg.',
replacement = "")
}
remove_num_one<-remove_one(arima_ranked)
# removed the cond_select function so that y and x write over
themselves
y<-subset(y, select = colnames(y) != remove_num_one)
x<-as.ts(y)
if(min(arima_ranked$rank, na.rm = TRUE) != 1){
break
}
}
return(arima_result)
}
Я собираюсь применить это к списку объектов временных рядов и списку фреймов данных
Пример списка временных рядов
CAN_V98
ADE_U91
ADE_V95
Пример фрейма данных
CAN_V98
ADE_U91
ADE_V95
Когда я применяю это view mapply или for loop, оба метода получают значения из одного и того же индекса. Т.е. переменные пошаговой функции будут удалены из CAN_V98 и продолжат использовать CAN_V98 из списка фреймов данных, или после выполнения первого цикла он будет использовать второй фрейм данных из списка фреймов данных.
# Application via for loop
for(i in mkt_grd){
x<-list_ts_actual[[i]]
y<-list_df_actual[[i]]
ts_outputs[[i]]<-backward_stepwise(x, y)
}
# Application via mapply
ts_outputs1<-mcmapply(backward_stepwise, list_ts_actual,
list_df_actual,SIMPLIFY = FALSE)
Спасибо за любую помощь