時間序列
如何在 R 中使用超過 2 個價格序列建構協整向量?
我現在使用來自 hier 的這段程式碼為什麼以下數據無法通過我的協整測試?稍微修改一下直接從 Dropbox 文件儲存載入某些內容的可能性。
library(RCurl) library(zoo) library(tseries) x <- getURL("https://dl.dropboxusercontent.com/u/12337149/stat/CBA.csv") y <- read.csv(text = x) x1 <- getURL("https://dl.dropboxusercontent.com/u/12337149/stat/WBC.csv") y1 <- read.csv(text = x1) ##gld <- read.csv("CBA.csv", stringsAsFactors=F) ##gdx <- read.csv("GDX.csv", stringsAsFactors=F) gld <- y gdx <- y1 gld <- zoo(gld[,5], as.Date(gld[,1])) gdx <- zoo(gdx[,5], as.Date(gdx[,1])) t.zoo <- merge(gld, gdx, all=FALSE) t <- as.data.frame(t.zoo) cat("Date range is", format(start(t.zoo)), "to", format(end(t.zoo)), "\n") m <- lm(gld ~ gdx + 0, data=t) beta <- coef(m)[1] cat("Assumed hedge ratio is", beta, "\n") sprd <- t$gld - beta*t$gdx ht <- adf.test(sprd, alternative="stationary", k=0) cat("ADF p-value is", ht$p.value, "\n") if (ht$p.value < 0.05) { cat("The spread is likely mean-reverting\n") } else { cat("The spread is not mean-reverting.\n") }
如何在 R 中使用超過 2 個價格序列建構協整向量?
使用包“vars”函式
ca.jo
進行多變數時間序列的協整分析(Johansen 過程)。以下是函式幫助文件中的程式碼片段:data(denmark) sjd <- denmark[, c("LRM", "LRY", "IBO", "IDE")] sjd.vecm <- ca.jo(sjd, ecdet = "const", type="eigen", K=2, spec="longrun", season=4) summary(sjd.vecm)
它載入數據集
denmark
,將四個時間序列提取到矩陣sjd
中,通過函式執行 Johansen 過程ca.jo
並列印其摘要。您可以通過like定址槽來提取協整向量。這將是一個矩陣,其中每一列都是一個協整向量。您可以將原始多元序列(如)與矩陣相乘以獲得糾錯項。
V``@V``sjd.vecm@V``sjd``V
一個很好的介紹是“vars”包的“vignette”和 Pfaff“Analysis of Integrated and Cointegrated Time Series with R”(一本教科書)。