2017-01-03 28 views
0

Ich beabsichtige, einen Code zu erstellen, um die Kointegration von zwei Zeitreihen von Finanzpreisdaten zu überprüfen, um eine bessere Vorhersage von einem von ihnen zu machen.R: Argumente implizieren unterschiedliche Anzahl von Zeilen mit Finanzdaten

Zu diesem Zweck habe ich diese beiden Zeitreihen: BBVA historischen Preis und IBEX35 und diesen kleinen Code bauen:

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") 

An diesem Punkt, wenn ich versuche, einen Datenrahmen aus meiner Zeitreihe zu machen, ich Gesicht dieser Fehler Argumente implizieren unterschiedliche Anzahl von Zeilen: 1488, 1514.

Was kann ich tun?

+2

Welcher Teil der Fehlermeldung ist unklar? – Roland

+1

Sie müssen wahrscheinlich verstehen, warum diese beiden Spalten unterschiedliche Längen haben. Meine Vermutung (das ist nur eine Vermutung) ist, dass "IBEX" kleiner ist, weil der spanische Continuous Market öfter geschlossen wird als andere Märkte und Ihnen Daten aus Tagen fehlen, an denen er geschlossen ist. Wenn dies der Fall ist, müssen Sie es möglicherweise an den entsprechenden Tagen mit "NA" erweitern. In jedem Fall - schauen Sie sich die Daten selbst an und sehen Sie, wo eine Diskrepanz zuerst entsteht. Kannst du diese Diskrepanz verstehen? –

+1

Sie sollten wirklich Dinge benennen und wählen, was "Steinbock" und "bbva" sein sollte, entweder "Umgebungen" oder "Vektoren", Sie verwenden sie als beide und überschreiben wahrscheinlich Werte. (Die beiden Zeilen, die mit "ibex <-" beginnen, überschreiben einfach die ibex-Variable in der globalen Umgebung). Versuchen Sie, 'ibexenv' und' ibexvec' zu verwenden, um sich darüber klar zu werden, was was ist. (Dann für die Fehlermeldung, bauen Sie einfach die 'data.frame' aus dem 'ca.jo', können Sie besser warum es fehlschlägt. – Tensibai

Antwort

3

Sie müssen der Zeitreihe beitreten, damit sie ordnungsgemäß ausgerichtet sind.

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 
Verwandte Themen