2016-07-11 3 views
-1

Ich verwende biwavelet Paket Wavelet-Kohärenz-Analyse durchzuführen. Ich habe ein Problem beim Einstellen der lag1 Werte (die ein Vektor sein sollten, der den AR (1) Koeffizienten jeder Zeitreihe enthält). Das folgende gibt ein reproduzierbares Beispiel. Danke vielmals.biwavelet-Paket: Wie man den "lag1" -Wert für "wtc" -Funktion setzt

t1 <- cbind(1:100, rnorm(100)) 
t2 <- cbind(1:100, rnorm(100)) 
lag.t1=acf(t1,plot=F)$acf[2] 
lag.t2=acf(t2,plot=F)$acf[2] 
wtc.t1t2 <- wtc(t1, t2, max.scale = 32,lag1=c(lag.t1,lag.t2)) 

Wenn ich dies tun, tritt ein Fehler wie folgt aus:

Warning messages: 
1: In 2 * lag1 * cos(freq * 2 * pi) : 
    longer object length is not a multiple of shorter object length 
2: In 1 - 2 * lag1 * cos(freq * 2 * pi) + lag1^2 : 
    longer object length is not a multiple of shorter object length 
3: In (1 - lag1^2)/(1 - 2 * lag1 * cos(freq * 2 * pi) + lag1^2) : 
    longer object length is not a multiple of shorter object length 

Antwort

1

Es gibt einen Fehler in wtc zu sein scheint. Es übergibt lag1 an die wt Funktion, um die Wavelet-Transformation jeder Serie separat zu berechnen, tut dies jedoch ohne lag1, wo die Warnungen herkommen - im Grunde wird die falsche Verzögerung in der zweiten Serie verwendet, da der Code ein erwartet Länge 1 Vektor für lag1.

Was ist seltsam ist, dass der Code intern die AR (1) Koeffizienten für jede Serie berechnet, aber diese nur später im Code verwendet werden, wenn Sie Signifikanz testen möchten. Diese werden niemals weitergegeben; es würde das Berechnen des AR-Modells für jede Reihe zweimal sparen, wenn der Betreuer gerade diese Koeffizienten von der oberen Ebene wtc weitergibt, wenn der Benutzer sie nicht liefert, und den Vektor lag1 substrahiert, wenn der Benutzer sie liefert.

Ich schlage vor, kontaktieren Sie den Betreuer, um das Problem zu erwähnen.

In der Zwischenzeit, einfach nicht stören lag1 zunächst; innerhalb wt.sig, die von wtc aufgerufen wird ->wt, wenn lag1 ist NULL, schätzt es den AR (1) -Koeffizienten über arima(), die die gleiche Weise ist, wtc berechnet es für den Signifikanztest in dieser Funktion. Der Code wird tun, was Sie wollen, wenn Sie einfach ignorieren lag1 und lassen Sie es die coefs für Sie intern berechnen.

+0

Vielen Dank für Ihre Antwort. Ich werde versuchen, den Betreuer zu kontaktieren. Und jetzt werde ich einfach den Lag1 ignorieren. Vielen Dank. –

0

Sie müssen den AR (1) -Koeffizienten vor Aufruf der wtc-Funktion nicht schätzen, da dies intern erfolgt. Wenn Sie jedoch darauf bestehen, die Koeffizienten zu berechnen und an wtc zu übergeben, behebt die neueste Version von biwavelet (0.20.9), die auf GitHub verfügbar ist, das Warnproblem und implementiert auch Gavins Vorschlag zur Verbesserung der Effizienz (dh berechnet die Koeffizienten nicht wenn sie bereits vom Benutzer bereitgestellt werden). Vielen Dank für Ihre Hinweise auf das Problem ...

+0

Sehr geehrter Herr Dr. Gouhier, vielen Dank für Ihre Antwort. Freundliche Grüße. –

+0

Ich frage mich, ob ich den Lag1-Wert in der 'wt'-Funktion manuell berechnen muss. –

Verwandte Themen