簡體   English   中英

for 循環:對 R 中所有可能的組合進行協整檢驗

[英]for loop: performing cointegration test for all possible combinations in R

我想弄清楚是否可以找到非平穩時間序列與 ADF 測試的每種組合的協整。 這可以通過以下函數完成:

coint <- function(x,y) {
vals <- data.frame(x,y)
beta <- coef(lm(vals[,2] ~ vals[,1] + 0, data = vals))[1]
(tseries::adf.test(vals[,2]- beta*vals[,1], alternative = "stationary", k = 0))$p.value
}

如果我運行函數 coint(df1, df2),我會得到一個 p 值。 但是,我想為每種可能的組合執行此操作(並將其存儲在數據框中)。 我已經知道我可以使用 combn() 函數進行所有可能的組合。 但是,我無法讓我的 for 循環正確地為每種可能的組合執行此操作。 也許這個操作也可以用 purrr 包中的函數來完成?

我們歡迎所有的建議! 我還在下面添加了一個示例數據框。

   # A tibble: 18 x 5
       `1` `2` `3` `4` `5` `

 1    416 850 53  78  66     
 2    407 922 43  82  67    
 3    410 901 37  84  71     
 4    412 945 53  95  77     
 5    409 998 101 83  86     
 6    375 947 53  86  84     
 7    364 908 43  87  71     
 8    377 952 39  95  64     
 9    387 961 18  109 69  
10    352 932 11  102 69     
11    332 920 12  108 69    
12    318 987 22  121 83     
13    320 961 17  124 88     
14    325 931 15  145 64     
15    328 816 6   169 44     
16    315 925 8   156 55     
17    309 737 4   176 49     
18    273 626 4   193 59    

不是最好和最有效的循環,但我認為可以:輸入將是一個數據框,其中包含所有要檢查的變量

 coint <- function(vars) {
    d<-as.matrix(vars) #convert data frame to Matrix
    n<-length(colnames(vars)) #calculate the total number of variables
    m<-combn(n,2) #calculate all possible combinations of pairs for all variables
    col_m<-dim(m)[2] #number of all possible combinations
    result<-matrix(NA,nrow=col_m,ncol=3) #empty result matrix
    colnames(result)<-c("Var_1","Var_2","p_Value")
    for (i in 1:col_m){
      Var_1<-m[1,i] 
      Var_2<-m[2,i]
      res <- lm(d[,Var_1] ~ d[,Var_2] + 0)$residuals 
      p<-tseries::adf.test(res, alternative = "stationary", k = 0)$p.value
      result[i,1]<-colnames(vars)[Var_1]
      result[i,2]<-colnames(vars)[Var_2]
      result[i,3]<-p
    }
    return(result)
  }

協整方法是關於 2 個變量的殘差需要是平穩的。 我立即將它們從估算中剔除,而不是重新計算它們。

暫無
暫無

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

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