Autocorrélation de processus AR (1) indépendants concaténés

8

Soit un processus stochastique formé en concaténant les tirages iid d'un processus AR (1), où chaque tirage est un vecteur de longueur 10. En d'autres termes, sont des réalisations d'un processus AR (1); sont tirés du même processus, mais sont indépendants des 10 premières observations; etc.{Xt}{X1,X2,,Xdix}{X11,X12,,X20}

À quoi ressemblera l'ACF de - appelez-le ? Je m'attendais à ce que soit nul pour les retards de longueurXρ(l)ρ(l)ldix puisque, par hypothèse, chaque bloc de 10 observations est indépendant de tous les autres blocs.

Cependant, lorsque je simule des données, j'obtiens ceci:

simulate_ar1 <- function(n, burn_in=NA) {
    return(as.vector(arima.sim(list(ar=0.9), n, n.start=burn_in)))
}

simulate_sequence_of_independent_ar1 <- function(k, n, burn_in=NA) {
    return(c(replicate(k, simulate_ar1(n, burn_in), simplify=FALSE), recursive=TRUE))
}

set.seed(987)
x <- simulate_sequence_of_independent_ar1(1000, 10)
png("concatenated_ar1.png")
acf(x, lag.max=100)  # Significant autocorrelations beyond lag 10 -- why?
dev.off()

exemple de fonction d'autocorrélation pour x

Pourquoi y a-t-il des autocorrélations si loin de zéro après le décalage 10?

Ma supposition initiale était que le burn-in dans arima.sim était trop court, mais j'obtiens un modèle similaire lorsque je définis explicitement par exemple burn_in = 500.

Qu'est-ce que je rate?


Edit : Peut-être que l'accent sur la concaténation des AR (1) est une distraction - un exemple encore plus simple est le suivant:

set.seed(9123)
n_obs <- 10000
x <- arima.sim(model=list(ar=0.9), n_obs, n.start=500)
png("ar1.png")
acf(x, lag.max=100)
dev.off()

acf de vanille nature ar1

Je suis surpris par les gros blocs d'autocorrélations significativement non nulles à de si longs décalages (où le véritable ACF ρ(l)=0,9lest essentiellement nul). Dois-je l'être?


Un autre Edit : peut-être que tout ce qui se passe ici est queρ^, l'ACF estimé, est lui-même extrêmement autocorrélé. Par exemple, voici la distribution conjointe de(ρ^(60),ρ^(61)), dont les vraies valeurs sont essentiellement nulles (0,9600):

## Look at joint sampling distribution of (acf(60), acf(61)) estimated from AR(1)
get_estimated_acf <- function(lags, n_obs=10000) {
    stopifnot(all(lags >= 1) && all(lags <= 100))
    x <- arima.sim(model=list(ar=0.9), n_obs, n.start=500)
    return(acf(x, lag.max=100, plot=FALSE)$acf[lags + 1])
}
lags <- c(60, 61)
acf_replications <- t(replicate(1000, get_estimated_acf(lags)))
colnames(acf_replications) <- sprintf("acf_%s", lags)
colMeans(acf_replications)  # Essentially zero
plot(acf_replications)
abline(h=0, v=0, lty=2)

distribution d'échantillonnage de acf estimé

Adrian
la source
1
J'espère que ma réponse vous sera toujours utile, plus d'un an et demi plus tard. Au moins, cela m'a aidé à améliorer mes compétences en R.
Candamir

Réponses:

3

Résumé: Il semble que vous confondiez le bruit avec une véritable autocorrélation en raison de la petite taille de l'échantillon.

Vous pouvez simplement le confirmer en augmentant le kparamètre dans votre code. Voir ces exemples ci-dessous (j'ai utilisé votre même set.seed(987)partout pour maintenir la réplicabilité):

k = 1000 (votre code d'origine)

1000 simulations

k = 2000

2000 simulations

k = 5000

5000 simulations

k = 10000

10000 simulations

k = 50000

50000 simulations

Cette séquence d'images nous dit deux choses:

  • L'autocorrélation après les 10 premières observations diminue considérablement à mesure que le nombre d'itérations augmente. En effet, avec un nombre d’itérations suffisamment important,ρ^(l) pour toute l>dixconvergera vers zéro. C'est la base de ma déclaration au début - que l'autocorrélation que vous avez observée n'était que du bruit.
  • Nonobstant l'observation susmentionnée selon laquelle ρ^(l) converge vers zéro pour tout l>dix à mesure que le nombre de simulations augmente, ρ^(l) pour toute ldix reste en fait constante à ρ^(l)=ρ(l)=0,9l, comme le suggère la construction de votre modèle.

Notez que je me réfère à l' autocorrélation observée commeρ^(l)et à la véritable autocorrélation commeρ(l).

Candamir
la source
1
L'échantillon ACF est lui-même autocorrélé, il ne s'agit donc pas d' un bruit blanc . A part ça, je suis d'accord, c'est juste un problème de bruit / taille d'échantillon.
Adrian
@Adrian Vous avez raison. J'ai modifié ma réponse en conséquence.
Candamir
It also becomes less and less likely to "stray" outside a confidence band- êtes-vous sûr que c'est vrai?
Adrian
1
Merci d'avoir fait des trous dans les parties faibles de ma réponse. Je dois admettre que cette déclaration était uniquement basée sur une inspection visuelle. J'ai fait d'autres recherches et j'ai découvert que la bande de confiance est calculée comme qnorm((1 + ci)/2)/sqrt(x$n.used)suit:cF(1-α/2)/n(voir ici ). Cependant, je n'ai pas pu déterminer le taux de convergence pour l'autocorrélation observée. J'ai posé cette nouvelle question pour régler la question, mais j'ai retiré ce point de cette réponse entre-temps.
Candamir
1
@Adrian Ma question concernant le taux de convergence de l'autocorrélation observée a été répondue. Il s'avère que son taux de convergence est le même que celui de la bande de confiance:1/n. Mon affirmation originale selon laquelle l'autocorrélation observée devient de moins en moins susceptible de "s'égarer" en dehors de la bande de confiance est donc incorrecte. Cela étant dit, le fait queρ^(l) converge vers zéro pour tout l>dixcar le nombre de simulations augmente résout toujours votre question, même si je me trompais sur le taux de convergence relatif.
Candamir