簡體   English   中英

合並同名列並在R中應用Johansen測試

[英]Combine same-name columns and apply Johansen test in R

我有兩個數據庫(處理前后的數據為多列):

處理之前Data1 <-read.csv(“ before.csv”)

    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

處理后Data2 <-read.csv(“ after.csv”)

    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)

這給了我我想要的,但是我想使過程自動化,即不是手動組合數據,而是具有所有成對組合。

您可以遍歷各列的名稱並找到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)
}

希望這會幫助你。

基於奎師那的回答,但修改了循環:

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM