【问题标题】:Combine same-name columns and apply Johansen test in R合并同名列并在 R 中应用 Johansen 测试
【发布时间】:2016-05-14 07:56:29
【问题描述】:

我有两个数据库(处理前后数据多列):

治疗前 数据1

    X1        X2    X3
1   0.21    0.32    0.42
2   0.34    0.23    0.33
3   0.42    0.14    0.11
4   0.35    0.25    0.35
5   0.25    0.41    0.44

治疗后 数据2

    X1       X2      X3
1   0.33    0.43    0.7
2   0.28    0.51    0.78
3   0.11    0.78    0.34
4   0.54    0.34    0.34
5   0.42    0.64    0.22

我想按列组合数据(即 Data1 中的 x1 和 Data2 中的 x1 类似:Data1 中的 x2 和 Data2 中的 x2 等等)并对每一对进行 Johansen 协整检验。

我尝试做的是:

library("urca")
x1<-cbind(Data1$x1, Data2$x1)
Jo1<-ca.jo(x1, type="trace",K=2,ecdet="none", spec="longrun")
summary(Jo1)

x2<-cbind(Data1$x1, Data2$x2)
Jo2<-ca.jo(x2, type="trace",K=2,ecdet="none", spec="longrun")
summary(Jo2)

这给了我想要的东西,但我想自动化这个过程,即不是手动组合数据,而是拥有所有成对的组合。

【问题讨论】:

    标签: r


    【解决方案1】:

    基于克里希纳的回答,但修改了循环:

    for(i in 1:ncol(Data1)) {
      col <- paste0("X", as.character(i)) 
      data <- cbind(Data1[, col], Data2[, col])
      colnames(data) <- c(paste0("Data1_",col),paste0("Data2_",col)) # add column names
    
      Jo<- ca.jo(data, type="trace",K=2,ecdet="none", spec="longrun")
      print(summary(Jo)) # print the summary to the console
    }
    

    【讨论】:

      【解决方案2】:

      您可以遍历列名并找到Johansen Cointegration,如下所示:

      # Create a sample data frame
      Data1<- data.frame(X1 = rnorm(10, 0, 1), X2 = rnorm(10, 0, 1),  X3 = rnorm(10, 0, 1))
      Data2 <-data.frame(X1 = rnorm(10, 0, 1), X2 = rnorm(10, 0, 1),  X3 = rnorm(10, 0, 1))
      
      library("urca")
       # loop through all columns index
      for(i in ncol(Data1)) {
        col <- paste0("X", as.character(i)) # find the column name
        data <- cbind(Data1[, col], Data2[, col]) # get the data from Data1 and Data2, all rows of a column = col
        # Your method for finding Ca.Jo ...
        Jo<- ca.jo(data, type="trace",K=2,ecdet="none", spec="longrun")
        summary(Jo)
      }
      

      您也可以使用colnames 进行循环:

      for(col in colnames(Data1)) {
        print(col)
        data <- cbind(Data1[, col], Data2[, col])
        print(data)
        #Jo<- ca.jo(data, type="trace",K=2,ecdet="none", spec="longrun")
        #summary(Jo)
      }
      

      希望这会对你有所帮助。

      【讨论】:

      • 错误在 Jo1&lt;-ca.jo(x1, type="trace",K=2,ecdet="none", spec="longrun") 中,我对 ca.jo 方法没有更多的想法。如果您评论最后两行,即Jo &lt;- ...summary(Jo),那么您将不会收到错误消息。主要是我有你的查询自动化过程
      • 使用 rosapluesch 的建议编辑,代码运行良好!感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      相关资源
      最近更新 更多