2016-07-11 3 views
-1

J'utilise le package biwavelet pour effectuer une analyse de cohérence d'ondelettes. J'ai un problème en définissant correctement les valeurs de lag1 (qui devrait être un vecteur contenant le coefficient AR (1) de chaque série temporelle). Ce qui suit donne un exemple reproductible. Merci beaucoup.package biwavelet: comment définir la valeur "lag1" pour la fonction "wtc"

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

Quand je fais cela, une erreur se produit comme ceci:

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 

Répondre

1

Il semble y avoir un bug dans wtc. Il passe la lag1 à la fonction wt pour calculer la transformée en ondelettes de chaque série séparément, mais le fait sans sous-ensemble lag1, d'où proviennent les avertissements. En gros, le mauvais décalage est utilisé dans la seconde série car le code attend un longueur 1 vecteur pour lag1. Ce qui est étrange, c'est que le code calcule en interne les coefficients AR (1) pour chaque série, mais ceux-ci ne sont utilisés que plus tard dans le code si vous voulez tester la signification. Ceux-ci ne sont jamais transmis; cela éviterait de calculer le modèle AR deux fois pour chaque série si le mainteneur transmettait simplement ces coefficients du niveau supérieur wtc si l'utilisateur ne les fournissait pas, et soustraitait le vecteur lag1 si l'utilisateur les fournissait.

Je vous suggère de contacter le responsable pour mentionner le problème.

En attendant, ne vous souciez pas de l'informatique lag1 initialement; wtc - wtwt si lag1 est NULL, il estime le coefficient AR (1) via arima(), ce qui est la même que le wtc le calcule pour le test de signification dans cette fonction. Le code fera ce que vous voulez si vous ignorez simplement lag1 et laissez-le calculer les coefficients pour vous en interne.

+0

Merci pour votre réponse. Je vais essayer de contacter le mainteneur. Et pour l'instant, je vais juste ignorer le lag1. Merci. –

0

Vous n'avez pas besoin d'estimer le coefficient AR (1) avant d'appeler la fonction wtc car cela est fait en interne. Cependant, si vous insistez pour calculer les coefficients et les fournir à wtc, la dernière version de biwavelet (0.20.9) disponible sur GitHub corrige le problème d'avertissement et implémente également la suggestion de Gavin pour améliorer l'efficacité (ie, ne calcule pas les coefficients s'ils sont déjà fournis par l'utilisateur). Merci à vous deux d'avoir signalé le problème ...

+0

Cher Dr Gouhier, merci beaucoup pour votre réponse. Meilleures salutations. –

+0

Je me demande si j'ai besoin de calculer la valeur lag1 dans la fonction 'wt' manuellement. –