【问题标题】:For-loop and Augmented Dickey-Fuller unit root test (ADF test)For-loop 和 Augmented Dickey-Fuller 单位根检验(ADF 检验)
【发布时间】:2019-09-06 07:36:28
【问题描述】:

我正在使用来自 fpp2 包的数据集 uschange 进行建模,并且我想使用 vars 包执行增强的 Dickey-Fuller 单位根测试(ADF 测试)。在这个例子中,我有五个系列,名称分别为“Consumption”、“Income”、“Production”、“Savings”和“Unemployment”。所以我的意图是进行 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 测试的结果吗?

【问题讨论】:

    标签: r for-loop


    【解决方案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")))
        )
      )
    })
    

    【讨论】:

    • 谢谢!第二个代码是有效的,但首先有一些错误。
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 2020-08-02
    • 2019-07-13
    • 1970-01-01
    相关资源
    最近更新 更多