Je veux courir le adfTest
avec lag=0
et type="c"
dans une boucle, de sorte que la fenêtre de départ est de length=5
et la fenêtre d'arrivée est lenght=nrow(Data)
. La chose est que je veux que la fenêtre de départ est fixe donc si les données contiennent 10 points de données le premier résultat va de 1:5
, le second 1:6
et ainsi de suite jusqu'à ce qu'il se termine par 1:10
.fenêtre de roulement adfTest avec fix point de départ
j'essayer de le faire avec rollapply mais cela ne fonctionne pas de cette façon, le code que j'ai est:
num_dividends <- nrow(C)
rw<-4
sample_interval <- 1
wi <- list()
DF <- matrix(0, nrow=num_dividends, ncol=num_dividends)
for(i in 1:(num_dividends-rw-1)) {
wi <- c(wi,list(list(c(window_size=rw+i,sample_interval=sample_interval),
DF=cbind(Date=seq(rw+i, num_dividends, by=sample_interval),
statistic=rollapplyr(C$Dividend, rw+i, function(u) adfTest(u)@test$statistic,by=sample_interval,partial=T)))))
DF[seq((rw+i),num_dividends,sample_interval), i+rw] <- wi[[i]]$DF[,"statistic"]
}
Ce qu'il fait est que cela crée une matrice que j'utilise celle-ci pour d'autres calculs avec les données perdues correspondantes grâce à la fenêtre de départ. Mais le PROBLÈME est que la fenêtre de départ n'est pas fixe, donc la première observation va de 1:5
mais la seconde va de 2:6
; il calcule également l'ADF avec lag=1
et je ne sais pas comment ajouter l'option de la fonction avec le rollapplyr
de lag=0
. Pour le rendre plus clair supposons que je fais rollapplyr(C$Dividend, 5, FUN=mean,by=sample_interval)
et les données suivantes sont les résultats que je reçois et ce que je veux.
Dividend This is What I Want This is What I Get
1 NA NA
2 NA NA
3 NA NA
4 NA NA
5 3 3
6 3.5 4
7 4 5
8 4.5 6
9 5 7
Attention, je veux le faire dans une boucle parce que je veux que la largeur augmente chaque fois qu'il termine la boucle, jusqu'à ce que la fenêtre est la taille de l'ensemble de données.
Merci @WaltS oui c'est ce dont j'ai besoin, j'ai une autre question. Je change le 'adf.test' (parce qu'il sélectionne l'ordre de décalage nécessaire pour que la série soit stationnaire et fasse le test avec ce décalage qui ne fonctionne pas pour moi) donc j'utilise le paquet' fUnitRoots' 'adfTest 'mais la valeur par défaut est' lag = 1', comment puis-je changer cela en 'lag = 0' dans la commande. J'ai lu que cela doit être fait avec la commande? de trois points: '...' mais je ne comprends tout simplement pas comment. Merci de toute façon c'est parfait –
Avez-vous considéré que 'adf.test' vous permet de définir l'ordre de décalage en définissant l'argument' k = 0'. 'DF2' serait calculé comme' DF2 [r2, r1] <- sapply (r2, FUN = fonction (n) adf.test (x = C $ Dividende [r1: n], k = 0) $ statistique) ' – WaltS