Мне нужно создать больше данных, чтобы приступить к работе, поэтому:
AllData <- data.frame(Date=as.Date("2014-01-05") + seq(0,700,by=7),
matrix(rnbinom(101*8,mu=10,size=1),ncol=8))
colnames(AllData)[2:9] <- paste0("v",1:8)
Надеюсь, я вас правильно понял, а также обратите внимание на опечатку Arima(AllData$x1..)
в коде, который вы разместили, x1 не существует в таблице, которую вы показали.
basefit.model1 <- Arima(AllData$v8,order=c(0,1,2))
inSampleBaseFitMAE <- mean(abs(basefit.model1$residuals))
allfit <- data.frame(var = colnames(AllData)[2:8],
inSampleAdvancedFitMAE =NA,p.value=NA,
inSampleBaseFitMAE=inSampleBaseFitMAE,stringsAsFactors=FALSE)
for (i in seq_along(allfit$var)) {
advancedfit.model <- Arima(AllData$v8,order=c(0,1,2),xreg=AllData[,allfit$var[i]])
allfit$inSampleAdvancedFitMAE[i] <- mean(abs(advancedfit.model$residuals))
test = wilcox.test(advancedfit.model$residuals,basefit.model1$residuals,paired=TRUE)
allfit$p.value[i] <- test$p.value
}
allfit$relativeMAE <- (allfit$inSampleAdvancedFitMAE)/(allfit$inSampleBaseFitMAE)
allfit
var inSampleAdvancedFitMAE p.value inSampleBaseFitMAE relativeMAE
1 v1 7.919351 0.025809584 7.955079 0.9955089
2 v2 7.859983 0.954075356 7.955079 0.9880459
3 v3 7.968860 0.165886368 7.955079 1.0017324
4 v4 7.796261 0.128247572 7.955079 0.9800356
5 v5 7.940206 0.002050978 7.955079 0.9981304
6 v6 7.960803 0.122403761 7.955079 1.0007195
7 v7 7.929170 0.111342188 7.955079 0.9967432