2017-01-03 47 views
0

2つの時系列の財務価格データの共積分をチェックして、そのうちの1つの予測を改善するコードを作成します。この目的のためにR:財務データを使用して行数が異なることを暗示する引数

、私はこの2つの時系列を選んだ:BBVA歴史的な価格とIBEX35をして、この小さなコードの構築:私は私の時系列からのデータフレームを作成しようとすると、その時点で

ibex <- new.env() 
bbva <- new.env() 

library(quantmod) 

getSymbols("^IBEX", env = ibex, src = "yahoo", from = as.Date("2010-01-04"), to = as.Date("2015-11-30")) 
getSymbols("bbva", env = bbva, src = "yahoo", from = as.Date("2010-01-04"), to = as.Date("2015-11-30")) 
ibex <- ibex$IBEX 
ibex <- ibex$IBEX.Adjusted 
bbva <- bbva$BBVA 
bbva <- bbva$BBVA.Adjusted 

ldbbva <- diff(log(bbva)) 
ldibex <- diff(log(ibex)) 

mean <- mean(ldbbva, na.rm = TRUE) 
ldbbva[is.na(ldbbva)] <- mean 

mean <- mean(ldibex, na.rm = TRUE) 
ldbbva[is.na(ldibex)] <- mean 

library(urca) 

jotest=ca.jo(data.frame(ldbbva,ldibex), type="trace", K=2, ecdet="none", spec="longrun") 

を、I 引数には行数が異なることを示しています:1488,1514

どうすればよいですか?

+2

エラーメッセージのどの部分が不明ですか? – Roland

+1

おそらく、これらの2つの列の長さが異なる理由を理解する必要があります。私の推測(これは単なる推測です)は、スペインの連続市場が他の市場よりも頻繁に閉鎖され、閉鎖された日のデータがないため、「^ IBEX」がより小さいということです。これが問題の場合は、適切な日に「NA」で展開する必要があります。いずれにしても、データそのものを見て、最初に不一致が発生した場所を確認してください。あなたはその弁明を理解できますか? –

+1

あなたは実際に物事に名前をつけ、 'ibex'と' bbva'を 'environments'や' vectors'のどちらにするかを選択する必要があります。両方を使うのでおそらく値を上書きします。 ( 'ibex <--'で始まる2行は地球環境のibex変数を上書きします)。 'ibexenv'と' ibexvec'を使って、何が何であるかを明確にしてみてください。 (エラーメッセージについては、 'ca.jo'の' data.frame'をビルドするだけで、なぜ失敗するのかが分かります。 – Tensibai

答えて

3

時系列を結合して、それらを正しく整列させる必要があります。

dat <- merge(ibex, bbva) 

dat <- diff(log(dat)) 

#mean imputation 
dat <- na.aggregate(dat) 

library(urca) 
jotest=ca.jo(dat, type="trace", K=2, ecdet="none", spec="longrun") 
###################################################### 
## Johansen-Procedure Unit Root/Cointegration Test # 
###################################################### 
# 
#The value of the test statistic is: 619.1603 1473.644 
関連する問題