Autokorrelation verketteter unabhängiger AR (1) -Prozesse

8

Sei ein stochastischer Prozess, der durch Verketten von iid-Draws aus einem AR (1) -Prozess gebildet wird, wobei jeder Draw ein Vektor der Länge 10 ist. Mit anderen Worten, sind Realisierungen eines AR (1) -Prozesses; stammen aus demselben Prozess, sind jedoch unabhängig von den ersten 10 Beobachtungen. und so weiter.{ X 1 , X 2 , , X 10 } { X 11 , X 12 , , X 20 }{Xt}{X1,X2,,X10}{X.11,X.12,,X.20}}

Wie wird der ACF von - nenne es \ rho \ left (l \ right) - aussehen? Ich hatte erwartet, dass \ rho \ left (l \ right) für Verzögerungen der Länge l \ geq 10 Null ist, da angenommen wird, dass jeder Block von 10 Beobachtungen von allen anderen Blöcken unabhängig ist.ρ ( l ) ρ ( l ) l 10X.ρ(l)ρ(l)l10

Wenn ich jedoch Daten simuliere, erhalte ich Folgendes:

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

Beispiel-Autokorrelationsfunktion für x

Warum gibt es nach Verzögerung 10 Autokorrelationen, die so weit von Null entfernt sind?

Meine anfängliche Vermutung war, dass das Einbrennen in arima.sim zu kurz war, aber ich erhalte ein ähnliches Muster, wenn ich explizit zB burn_in = 500 setze.

Was vermisse ich?


Bearbeiten : Vielleicht ist der Fokus auf die Verkettung von AR (1) s eine Ablenkung - ein noch einfacheres Beispiel ist dies:

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 von einfacher Vanille ar1

Ich bin überrascht von den großen Blöcken von Autokorrelationen ungleich Null bei so langen Verzögerungen (wobei der wahre ACF im Wesentlichen Null ist). Sollte ich sein?ρ(l)=0,9l


Noch eine Änderung : Vielleicht ist alles, was hier vor sich geht, dass , der geschätzte ACF, selbst extrem autokorreliert ist. Hier ist zum Beispiel die gemeinsame Verteilung von , deren wahre Werte im Wesentlichen Null sind ( ). :: ( ρ (60), ρ (61))0,9600ρ^(ρ^(60),ρ^(61))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)

Stichprobenverteilung des geschätzten ACF

Adrian
quelle
1
Ich hoffe, meine Antwort wird Ihnen auch nach mehr als 1,5 Jahren noch von Nutzen sein. Zumindest hat es mir geholfen, meine R-Fähigkeiten zu verbessern.
Candamir

Antworten:

3

Zusammenfassung: Es scheint, dass Sie Rauschen aufgrund einer kleinen Stichprobengröße für echte Autokorrelation halten.

Sie können dies einfach bestätigen, indem Sie den kParameter in Ihrem Code erhöhen . Sehen Sie sich diese Beispiele unten an (ich habe dasselbe set.seed(987)durchgehend verwendet, um die Replizierbarkeit aufrechtzuerhalten):

k = 1000 (Ihr ursprünglicher Code)

1000 Simulationen

k = 2000

2000 Simulationen

k = 5000

5000 Simulationen

k = 10000

10000 Simulationen

k = 50000

50000 Simulationen

Diese Folge von Bildern sagt uns zwei Dinge:

  • Die Autokorrelation nach den ersten 10 Beobachtungen nimmt mit zunehmender Anzahl von Iterationen stark ab. In der Tat konvergiert bei einer ausreichend großen Anzahl von Iterationen das für jedes gegen Null. Dies ist die Grundlage für meine Aussage am Anfang - dass die von Ihnen beobachtete Autokorrelation einfach Rauschen war.l>10ρ^(l)l>10
  • Ungeachtet der oben erwähnten Beobachtung, dass für jedes gegen Null konvergiert, wenn die Anzahl der Simulationen zunimmt, bleibt für jedes tatsächlich konstant bei , genau wie es die Konstruktion Ihres Modells nahelegt.l>10 ρ (L)l10 ρ (l)=ρ(l)=0,9lρ^(l)l>10ρ^(l)l10ρ^(l)=ρ(l)=0,9l

Beachten Sie, dass ich die beobachtete Autokorrelation als und die wahre Autokorrelation als .ρ(l)ρ^(l)ρ(l)

Candamir
quelle
1
Das Beispiel-ACF selbst ist autokorreliert, es handelt sich also nicht um weißes Rauschen. Davon abgesehen stimme ich zu, dass es sich nur um ein Problem mit Rauschen / Stichprobengröße handelt.
Adrian
@ Adrian Du bist richtig. Ich habe meine Antwort entsprechend geändert.
Candamir
It also becomes less and less likely to "stray" outside a confidence band- Bist du sicher, dass das stimmt?
Adrian
1
qnorm((1 + ci)/2)/sqrt(x$n.used)cdf(1- -α/.2)/.n
1
1/.nρ^(l)l>10