Saltar al contenido principal

Autocorrelación en R

Practica la autocorrelación en R utilizando material del curso Introduction to Time Series Analysis de DataCamp.
· 6 min leer

Explora con IA

Si quieres hacer nuestro curso Introduction to Time Series Analysis in R, aquí tienes el enlace.

Cálculo de autocorrelaciones

Las autocorrelaciones o correlaciones retardadas se utilizan para evaluar si una serie temporal depende de su pasado. Para una serie temporal x de longitud n, consideramos los n-1 pares de observaciones separados por una unidad de tiempo. El primer par es (x[2],x[1]) y el siguiente es (x[3],x[2]). Cada par es de la forma (x[t],x[t-1]), donde t es el índice de la observación, que en este caso varía de 2 a n. La autocorrelación de retardo 1 de x puede estimarse como la correlación muestral de estos pares (x[t], x[t-1]).

En general, podemos crear manualmente estos pares de observaciones. Primero, crea dos vectores, x_t0 y x_t1, cada uno de longitud n-1, de forma que las filas correspondan a los pares (x[t], x[t-1]). Luego aplica la función cor() para estimar la autocorrelación de retardo 1.

Por suerte, el comando acf() ofrece un atajo. Aplicar acf(..., lag.max = 1, plot = FALSE) a una serie x calcula automáticamente la autocorrelación de retardo 1.

Por último, ten en cuenta que las dos estimaciones difieren ligeramente porque emplean escalados distintos al calcular la covarianza muestral, 1/(n-1) frente a 1/n. Aunque la segunda es sesgada, en análisis de series temporales suele preferirse y las autocorrelaciones resultantes solo difieren por un factor (n-1)/n.

En este ejercicio practicarás tanto el cálculo manual como el automático de la autocorrelación de retardo 1. La serie temporal x y su longitud n (150) ya están cargadas. La serie aparece en la gráfica de la derecha.

Instrucciones

  • Crea dos vectores, x_t0 y x_t1, cada uno de longitud n-1, de forma que las filas correspondan a los pares (x[t], x[t-1]).
  • Confirma que x_t0 y x_t1 son pares (x[t], x[t-1]) usando el código preescrito.
  • Usa plot() para ver el diagrama de dispersión de x_t0 y x_t1.
  • Usa cor() para ver la correlación entre x_t0 y x_t1.
  • Usa acf() con x para calcular automáticamente la autocorrelación de retardo 1. Establece el argumento lag.max en 1 para obtener un único retardo y el argumento plot en FALSE.
  • Confirma que el factor de diferencia es (n-1)/n usando el código preescrito.

# Define x_t0 as x[-1]
x_t0 <- 

# Define x_t1 as x[-n]
x_t1 <- 

# Confirm that x_t0 and x_t1 are (x[t], x[t-1]) pairs  
head(cbind(x_t0, x_t1))
  
# Plot x_t0 and x_t1
plot(___, ___)

# View the correlation between x_t0 and x_t1
cor(___, ___)

# Use acf with x
acf(___, lag.max = ___, plot = ___)

# Confirm that difference factor is (n-1)/n
cor(x_t1, x_t0) * (n-1)/n

Si todo tiene sentido, sigue con el siguiente ejercicio. Si no, aquí tienes un vídeo de resumen.

Vídeo de resumen sobre autocorrelación

La función de autocorrelación

Las autocorrelaciones pueden estimarse a muchos retardos para evaluar mejor cómo una serie temporal se relaciona con su pasado. Normalmente nos interesa más cómo se relaciona con su pasado más reciente.

La función acf(..., lag.max = ..., plot = FALSE) estima todas las autocorrelaciones desde 0, 1, 2, ... hasta el valor indicado en el argumento lag.max. En el ejercicio anterior te centraste en la autocorrelación de retardo 1 fijando el argumento lag.max en 1.

En este ejercicio explorarás más usos del comando acf(). De nuevo, la serie temporal x ya está precargada y aparece en la gráfica de la derecha.

Instrucciones

  • Usa acf() para ver las autocorrelaciones de la serie x de 0 a 10. Establece el argumento lag.max en 10 y deja plot como FALSE.
  • Copia y pega la estimación de autocorrelación (ACF) en el retardo 10.
  • Copia y pega la estimación de autocorrelación (ACF) en el retardo 5.

# Generate ACF estimates for x up to lag-10
acf(___, lag.max = ___, plot = FALSE)

# Type the ACF estimate at lag-10 


# Type the ACF estimate at lag-5

Visualización de la función de autocorrelación

Estimar la función de autocorrelación (ACF) a múltiples retardos nos permite evaluar cómo se relaciona una serie temporal x con su pasado. Las estimaciones numéricas son clave para cálculos detallados, pero también es útil visualizar la ACF como función del retardo.

De hecho, el comando acf() genera una figura por defecto. También elige por defecto un valor para lag.max, el número máximo de retardos a mostrar.

Se han cargado en tu entorno de R tres series temporales, x, y y z, y se muestran en la gráfica de la derecha. La serie x muestra una fuerte persistencia, es decir, el valor actual está muy relacionado con los que le preceden. La serie y muestra un patrón periódico con un ciclo de aproximadamente cuatro observaciones, lo que significa que el valor actual está relativamente cerca del de cuatro observaciones antes. La serie z no presenta un patrón claro.

En este ejercicio trazarás una función de autocorrelación estimada para cada serie. En las figuras que produce acf(), el retardo de cada estimación aparece en el eje horizontal y cada estimación se indica con la altura de las barras verticales. Recuerda que la ACF en el retardo 0 siempre es 1.

Por último, cada figura de ACF incluye un par de líneas azules horizontales discontinuas que representan intervalos de confianza del 95% por retardo, centrados en cero. Se utilizan para determinar la significación estadística de una estimación de autocorrelación en un retardo dado frente a un valor nulo de cero; es decir, ausencia de autocorrelación en ese retardo.

Instrucciones

Usa tres llamadas a la función acf() para mostrar las ACF estimadas de cada una de tus series temporales (x, y y z). No es necesario especificar argumentos adicionales en tus llamadas a acf().


# View the ACF of x
acf(___)

# View the ACF of y


# View the ACF of z


Si quieres aprender más con este curso, aquí tienes el enlace.

Echa un vistazo a nuestro Time Series Analysis using R: Tutorial.

Temas

Relacionado

Tutorial

Creación de una lista en R

Tutorial

Tutorial de regresión lineal en R