我正在使用fpp2包中的数据集uschange进行建模,并且我想使用vars包执行增强的Dickey-Fuller单元根测试(ADF测试)。在此示例中,我有五个系列,名称分别为“消费”,“收入”,“生产”,“储蓄”和“失业”。因此,我的目的是进行ADF测试,并将结果放入类列表的一个对象中。您可以在下面看到代码:
#CODE
library(fpp2)
library(vars)
#Data
MY_DATA<-data.frame(uschange)
COL_NAMES<- names(MY_DATA)
#LOOP ADF
MY_LIST<-for(i in 1:ncol(MY_DATA)){
summary(ur.df(MY_DATA[i], type = "drift",selectlags = c("BIC")))
summary(ur.df(MY_DATA[i], type = "trend",selectlags = c("BIC")))
summary(ur.df(MY_DATA[i], type = "none",selectlags = c("BIC")))
}
但是显然我犯了一些错误,我的带有循环的代码无法正常工作。那么,有人可以帮助修复该代码,以便从一个对象中的所有五个系列获得ADF测试的结果吗?
答案 0 :(得分:1)
摘要的结果只是一些文本,在任何情况下,您都不会在任何地方分配这些结果
MY_LIST=vector("list",ncol(MY_DATA))
for(i in 1:ncol(MY_DATA)){
MY_LIST[[i]]=list(
summary(ur.df(MY_DATA[i], type = "drift",selectlags = c("BIC"))),
summary(ur.df(MY_DATA[i], type = "trend",selectlags = c("BIC"))),
summary(ur.df(MY_DATA[i], type = "none",selectlags = c("BIC")))
)
}
或更好
MY_LIST=apply(MY_DATA,2,function(x){
return(
list(
summary(ur.df(x, type = "drift",selectlags = c("BIC"))),
summary(ur.df(x, type = "trend",selectlags = c("BIC"))),
summary(ur.df(x, type = "none",selectlags = c("BIC")))
)
)
})