Vista previa del material en texto
Explorando y Visualizando Series de Tiempo en R Lic. Juan Isaula Octubre, 2022 Contents 1 Bienvenido a Pronósticos Usando R 2 1.1 Que aprenderás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Libro de Texto del Curso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Datos de Series Temporales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 Creación de objetos de series temporales en R . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Tendencias, estacionalidad y ciclicidad 12 2.1 Patrones de series temporales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2 Ejemplos de Patrones de Series Temporales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Estacional o Cíclico? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4 Autocorrelación de series temporales estacionales y cíclicas . . . . . . . . . . . . . . . . . . . . 16 3 Ruido Blanco 19 3.1 Ruido blanco ACF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2 Ljung-Box test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1 Contents 1 Bienvenido a Pronósticos Usando R 1.1 Que aprenderás En este curso, aprenderemos a visualizar series temporales para descubrir la información útil que necesitamos para realizar pronósticos. También consideraremos algunos métodos de pronóstico muy simples, algunos métodos de nivel intermedio como el suavizado exponencial y los modelos ARIMA, así como algunos métodos más avanzados. A lo largo del curso, mediremos qué tan precisos son nuestros pronósticos y cómo decidir qué método usar en cada caso. Todo lo que cubrimos en este curso 1.2 Libro de Texto del Curso se discute con más detalle en mi libro de texto con George Athanasopouloshttp://library.lol/main/9822969301C0293A10EEDF691ECF2608. Está disponible gratuitamente en línea, por lo que siempre puede consultarlo si desea obtener más información. El libro usa R en todas partes y muestra el código para casi todos los gráficos y análisis. 1.3 Datos de Series Temporales La predicción es un gran tema, y en este curso nos vamos a centrar en un tipo particular de predicción, a saber, la predicción de series de tiempo. Una serie temporal es simplemente una serie de datos observados a lo largo del tiempo. En este curso tratamos sólo con series de tiempo regularmente espaciadas. Por ejemplo, los datos podrían observarse cada hora, cada día, cada mes, cada trimestre o cada año. Siempre que los intervalos de observación estén igualmente espaciados, los llamamos series de tiempo regularmente espaciados. Este es un ejemplo de una serie temporal mensual del gasto total en comidas fuera de casa en Australia. Hay una fuerte tendencia, impulsada por una combinación de crecimiento de la población y un aumento en el ingreso disponible, y hay cierta estacionalidad. En los últimos años, los costos de comer fuera de casa han alcanzado su punto máximo en diciembre (debido a la Navidad y los eventos de fin de año) y bajan en febrero (debido a que es un mes corto). Pronosticar es la tarea de estimar cómo una serie de tiempo como esta continuará en el futuro. Por supuesto, existe una incertidumbre considerable asociada con dichas estimaciones, por lo que normalmente también proporcionamos una estimación de esa incertidumbre en forma de intervalos de predicción. 2 http://library.lol/main/9822969301C0293A10EEDF691ECF2608 1.3.1 Pronósticos del gasto australiano mensual en comidas fuera de casa Este es un ejemplo de cómo podrían ser tales pronósticos. En este ejemplo, los valores de pronóstico se muestran en azul, junto con intervalos de predicción del 80 % e intervalos de predicción del 95 %. Estos indican cuán inciertos son nuestros pronósticos. Cuanto más adelante pronosticamos, más amplios tienden a ser estos intervalos de predicción. En este curso, analizaremos varios métodos de pronóstico para datos de series temporales que tienen en cuenta la tendencia, la estacionalidad y otras características de los datos. También veremos cómo podemos medir la precisión de estos pronósticos y cómo seleccionar un buen modelo de pronóstico. 1.4 Creación de objetos de series temporales en R Se puede pensar en una serie de tiempo como un vector o matriz de números junto con cierta información sobre las horas en que se registraron esos números. Esta información se almacena en un ts objeto en R. En la mayoría de los ejercicios, utilizará series temporales que forman parte de paquetes existentes. Sin embargo, si desea trabajar con sus propios datos, debe saber cómo crear un ts objeto en R. La función ts() toma tres argumentos: - data está configurado para todo los campos excepto para la columna de fecha; no es necesario ya que el tsobjeto almacenará información de tiempo por separado. - start se establece en el formulario c(year, period) para indicar la hora de la primera observación. - frequency se establece en 4 porque los datos son trimestrales. # Libreria para abrir datos de excel library(readxl) # lee los datos de excel en R mydata <- read_excel("/Users/juanisaula/Downloads/exercise1.xlsx") ## New names: ## * `` -> `...1` # Mire las primeras lineas de mydata head(mydata) ## # A tibble: 6 x 4 ## ...1 Sales AdBudget GDP ## <chr> <dbl> <dbl> <dbl> ## 1 Mar-81 1020. 659. 252. ## 2 Jun-81 889. 589 291. 3 ## 3 Sep-81 795 512. 291. ## 4 Dec-81 1004. 614. 292. ## 5 Mar-82 1058. 647. 279. ## 6 Jun-82 944. 602 254 # Creamos un objeto ts llamado tsmy myts <- ts(mydata[,2:4], start = c(1981,1),frequency = 4) 1.4.1 Gráficas de Series de Tiempo El primer paso en cualquier tarea de análisis de datos es graficar los datos. Los gráficos le permiten visualizar muchas características de los datos, incluidos patrones, observaciones inusuales, cambios a lo largo del tiempo y relaciones entre variables. Así como el tipo de datos determina qué método de pronóstico usar, también determina qué gráficos son apropiados. Puede usar la autoplot() función para generar un diagrama de tiempo de los datos con o sin facetas, o paneles que muestren diferentes subconjuntos de datos: utoplot(datos, facets = FALSE) El método anterior es uno de los muchos enseñados en este curso que acepta argumentos booleanos. Ambos Ty TRUEsignifican “verdadero” y Fy FALSEsignifican “falso”, sin embargo, Tpueden Fsobrescribirse en su código. Por lo tanto, solo debe confiar TRUEy FALSEestablecer sus indicadores para el resto del curso. Utilizará dos funciones más en este ejercicio, which.max()y frequency(). which.max()se puede utilizar para identificar el índice más pequeño del valor máximo x <- c(4, 5, 5) which.max(x) ## [1] 2 Para encontrar el número de observaciones por unidad de tiempo, use frequency(). Debido a que este curso implica el uso de los paquetes forecast y ggplot2, se han cargado en su espacio de trabajo para usted, así como myts del ejercicio anterior y las siguientes tres series (disponibles en el paquete forecast): • gold que contiene los precios del oro en dólares estadounidenses. • woolyrnq que contiene información sobre la producción de hilo de lana en Australia. • gas que contiene la producción de gas australiana library(forecast) ## Registered S3 method overwritten by 'quantmod': ## method from ## as.zoo.data.frame zoo library(ggplot2) # Grafique los datos que almaceno en myts con facetas autoplot(myts, facets = TRUE) 4 S ales A dB udget G D P 1980 1990 2000 800 900 1000 1100 500 550 600 650 260 280 300 320 Time m yt s # Trace los mismos datos sin faceta y mire lo que sucede autoplot(myts, facets = FALSE) 400 600 800 1000 1980 1990 2000 Time m yt s series Sales AdBudget GDP # Grafique las series goldde tiempo woolyrnq, y gasen gráficas separadas. 5 autoplot(gold) 300 400 500 600 0 200 400 600 800 1000 Time go ld autoplot(woolyrnq) 4000 5000 6000 7000 8000 1965 19701975 1980 1985 1990 1995 Time w oo ly rn q 6 autoplot(gas) 0 20000 40000 60000 1960 1970 1980 1990 Time ga s # Use which.max()para detectar el valor atípico en la serie gold. ¿Qué observación fue? goldoutlier <- which.max(gold) goldoutlier ## [1] 770 # Miremos las frecuencias estacionales de las tres series frequency(gold) ## [1] 1 frequency(woolyrnq) ## [1] 4 frequency(gas) ## [1] 12 1.4.2 Parcelas Estacionales Junto con las gráficas de tiempo, existen otras formas útiles de graficar datos para enfatizar patrones estacionales y mostrar cambios en estos patrones a lo largo del tiempo. • Una gráfica estacional es similar a una gráfica de tiempo, excepto que los datos se grafican contra las “estaciones” individuales en las que se observaron los datos. Puede crear uno usando la ggseasonplot() función de la misma manera que lo hace con autoplot(). • Una variante interesante de un diagrama de temporada utiliza coordenadas polares, donde el eje del tiempo es circular en lugar de horizontal; para hacer uno, simplemente agregue un polarargumento y configúrelo en TRUE. 7 • Un gráfico de subserie comprende minigráficos de tiempo para cada estación. Aquí, la media de cada temporada se muestra como una línea horizontal azul. Una forma de dividir una serie de tiempo es usando la window() función, que extrae un subconjunto del objeto x observado entre los tiempos start y end. window(x, start = NULL, end = NULL) En este ejercicio, cargará el fpp2 paquete y utilizará dos de sus conjuntos de datos: • a10 contiene los volúmenes de ventas mensuales de medicamentos antidiabéticos en Australia. En las gráficas, ¿puedes ver qué mes tiene el mayor volumen de ventas cada año? ¿Qué tienen de inusual los resultados de marzo y abril de 2008? • ausbeerque contiene la producción trimestral de cerveza para Australia. ¿Qué está pasando con la producción de cerveza en el cuarto trimestre? Estos ejemplos lo ayudarán a visualizar estos gráficos y comprender cómo pueden ser útiles library(fpp2) ## -- Attaching packages ---------------------------------------------- fpp2 2.4 -- ## v fma 2.4 v expsmooth 2.3 ## # Use autoplot()y ggseasonplot()para producir gráficos de los a10 datos. autoplot(a10) 10 20 30 1995 2000 2005 Time a1 0 ggseasonplot(a10) 8 10 20 30 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Month year 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 Seasonal plot: a10 # Utilice la ggseasonplot()función y su polarargumento para producir un gráfico de #coordenadas polares para los a10datos. ggseasonplot(a10, polar = TRUE) 9 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 10 20 Month year 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 Seasonal plot: a10 # Use la window()función para considerar solo los ausbeerdatos a partir de 1992. beer <- window(ausbeer, start=1992) # Por último, utiliza autoplot()y ggsubseriesplot()para producir tramas de la beerserie. autoplot(beer) 10 400 450 500 1995 2000 2005 2010 Time be er ggsubseriesplot(beer) 400 450 500 Q1 Q2 Q3 Q4 Quarter be er 11 2 Tendencias, estacionalidad y ciclicidad Algunos patrones de series de tiempo ocurren con tanta frecuencia que les damos nombres. 2.1 Patrones de series temporales Una “tendencia” ocurre cuando hay un aumento o disminución a largo plazo en los datos. Esto es deliberadamente un poco vago ya que una tendencia no es un término matemático bien definido. Pero si hablo de una tendencia, me refiero a una tendencia general de la serie temporal a subir o bajar con el tiempo. La “estacionalidad” ocurre cuando existe un patrón regular en la serie temporal relacionada con el calendario. Por ejemplo, un patrón anual, un patrón semanal o un patrón diario. Siempre que el comportamiento de una serie temporal está influenciado de manera periódica por el calendario, lo llamamos estacional. Esto debe distinguirse de los patrones cíclicos. Se dan cuando hay subidas y bajadas que no son de un periodo fijo. Por ejemplo, un ciclo económico puede durar 3, 5 u 8 años entre picos y valles. Pero un patrón estacional siempre tiene la misma longitud. 2.2 Ejemplos de Patrones de Series Temporales Esta es la producción mensual de electricidad de Australia. Es claramente de tendencia, con un cambio en la pendiente de la tendencia alrededor de 1990. También es estacional. Observe cómo el patrón estacional cambia un poco con el tiempo con un poco más de volatilidad en el mínimo al final de este período que al principio. No hay un comportamiento cíclico visible en este gráfico. La producción trimestral de ladrillos de arcilla australianos muestra estacionalidad y ciclicidad. 12 La estacionalidad se ve por los pequeños baches, uno cada año. La ciclicidad se ve por los altibajos más largos. Por ejemplo, hubo una recesión en 1975, y otra en 1983, y luego nuevamente en 1991. Entre estas recesiones, la serie sube y baja. También se observa cierta tendencia en este gráfico, particularmente en la primera mitad. Los siguientes gráficos muestran los contratos de letras del Tesoro de EE. UU. durante 100 días consecutivos. Aquí no hay estacionalidad. Esto se parece mucho a una tendencia a la baja, pero en realidad es parte de un ciclo mucho más largo. Cuando tenemos solo un segmento corto de datos y vemos solo una parte de un ciclo, puede parecer una tendencia. Probablemente no querríamos pronosticar que esta serie continuaría cayendo indefinidamente. Mi último ejemplo es una famosa serie de tiempo. 13 Este es el número de linces atrapados anualmente en la región de la Bahía de Hudson en Canadá desde 1821 hasta 1934. Los linces son gatos salvajes de tamaño mediano que solían ser atrapados por su pelaje. Debido a que estos son datos anuales, no pueden ser estacionales. La población de linces aumenta cuando hay suficiente comida, y cuando el suministro de alimentos es bajo, dejan de reproducirse y la población cae en picado. El lince sobreviviente tiene suficiente comida, comienza a reproducirse nuevamente y el ciclo continúa. La duración de estos ciclos varía entre 8 y 11 años. Este también es un buen ejemplo para mostrar cuán variable puede ser la magnitud de los patrones cíclicos, con el pico más grande siendo más de tres veces el tamaño del pico más pequeño. 2.3 Estacional o Cíclico? Debemos distinguir entre patrones estacionales y cíclicos, ya que en cada caso se utilizan modelos de series temporales muy diferentes. Para resumir: • los patrones estacionales tienen una duración constante, • mientras que los patrones cíclicos tienen una duración variable. • si ambos existen juntos, entonces la duración promedio del patrón cíclico es mayor que la duración del patrón estacional. • el tamaño de los ciclos tiende a ser más variable que el tamaño de las fluctuaciones estacionales. • Como resultado, es mucho más difícil predecir datos cíclicos que datos estacionales. 2.3.1 Autocorrelación de series temporales no estacionales Otra forma de ver los datos de series de tiempo es graficar cada observación contra otra observación que ocurrió algún tiempo antes usando gglagplot(). Por ejemplo, podría trazar yt contra yt−1. Esto se denomina gráfico de retraso porque está trazando la serie de tiempo frente a los retrasos de sí mismo. Las correlaciones asociadas con los gráficos de retraso forman lo que se denomina función de autocorrelación (ACF). La ggAcf() función produce diagramas ACF. En este ejercicio, trabajará con los datos precargados oil(disponibles en el paquete fpp2), que contienen la producción anual de petróleo en Arabia Saudita desde 1965 hasta 2013 (medida en millones de toneladas). # Usa la autoplot()función para graficar los oil datos. autoplot(oil) 14 100 200 300 400 500 1970 1980 1990 2000 2010 Time oi l # Para los oildatos, trace la relación entre y_{t} y y_{t-1},utilizando una de las dos funciones presentadas anteriormente. Observe cómo cambianlas relaciones a medida que aumenta el retraso. gglagplot(oil) lag 7 lag 8 lag 9 lag 4 lag 5 lag 6 lag 1 lag 2 lag 3 100200300400500 100200300400500 100200300400500 200 300 400 500 200 300 400 500 200 300 400 500 10 20 30 40 Time 15 # Del mismo modo, grafique las correlaciones asociadas con cada uno de los gráficos de retardo usando la otra función nueva apropiada. ggAcf(oil) −0.3 0.0 0.3 0.6 0.9 5 10 15 Lag A C F Series: oil 2.4 Autocorrelación de series temporales estacionales y cíclicas Cuando los datos son estacionales o cíclicos, el ACF alcanzará su punto máximo alrededor de los retrasos estacionales o en la duración promedio del ciclo. Investigará este fenómeno trazando la serie anual de manchas solares (que sigue el ciclo solar de aproximadamente 10 u 11 años) en sunspot.year y el tráfico diario al blog de Hyndsight (que sigue un patrón semanal de 7 días) en hyndsight. # Produzca una gráfica de tiempo y una gráfica ACF de sunspot.year. autoplot(sunspot.year) 16 0 50 100 150 1700 1750 1800 1850 1900 1950 2000 Time su ns po t.y ea r ggAcf(sunspot.year) 0.0 0.5 0 5 10 15 20 25 Lag A C F Series: sunspot.year 17 # Al observar la gráfica ACF, ¿en qué valor de retraso (x) puede encontrar la autocorrelación máxima (y)? #Establezca esto igual a maxlag_sunspot. maxlag_sunspot <- 1 # Produzca una gráfica de tiempo y una gráfica ACF de hyndsight. autoplot(hyndsight) 1000 2000 0 10 20 30 40 50 Time hy nd si gh t ggAcf(hyndsight) 18 0.0 0.2 0.4 0.6 7 14 21 Lag A C F Series: hyndsight # Al observar la gráfica ACF, ¿en qué valor de retraso (x) puede encontrar la autocorrelación # máxima (y)? Establezca esto igual a maxlag_hyndsight maxlag_hyndsight <- 7 3 Ruido Blanco Déjame mostrarte la serie de tiempo más aburrida que jamás hayas visto. set.seed(3) # Valor semilla wn <- ts(rnorm(36)) # Generamos ruido blanco autoplot(wn) # Gráficamos 19 −1 0 1 0 10 20 30 Time w n Son solo observaciones aleatorias, independientes e idénticamente distribuidas. En resumen, los estadísticos a menudo llaman a esto “datos iid”. En otras palabras, no está pasando nada: no hay tendencia, ni estacionalidad, ni ciclicidad, ni siquiera autocorrelaciones. Solo aleatoriedad. En series de tiempo, lo llamamos “ruido blanco”. El nombre proviene de la física donde la luz blanca tiene algunas características matemáticas similares. Aunque parezca aburrido, es un tipo de serie de tiempo muy importante porque es la base de casi todos los modelos de pronóstico. 3.1 Ruido blanco ACF La función de autocorrelación del ruido blanco consta de muchos picos insignificantes. Debido a que los datos son simplemente aleatorios, esperamos que las correlaciones entre las observaciones sean cercanas a cero. Las líneas azules discontinuas están ahí para mostrarnos qué tan grande debe ser un pico antes de que podamos considerarlo significativamente diferente de cero. En este ejemplo, los primeros 15 picos están todos dentro de las líneas azules, como era de esperar. Incluso el pico más grande en el retraso 10 está dentro del rango que esperaríamos para una serie de ruido blanco. Las líneas azules se basan en la distribución de muestreo para la autocorrelación, suponiendo que los datos son ruido blanco. Cualquier pico dentro de las líneas azules debe ignorarse. Picos fuera de las líneas azules podría indicar algo interesante en los datos. Al menos, sugieren que puede haber alguna información que podríamos usar para construir un modelo de pronóstico. ggAcf(wn) + ggtitle('Ejemplo de ACF para ruido blanco') 20 −0.2 0.0 0.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Lag A C F Ejemplo de ACF para ruido blanco 3.1.1 Ejemplo: Cerdos Sacrificados Aquí hay una serie de tiempo que muestra el número de cerdos sacrificados cada mes el estado de Victoria autoplot(pigs/100)+ xlab('Año')+ ylab('Miles')+ ggtitle('Número mensual de cerdos sacrificados en Victoria') 21 500 750 1000 1980 1985 1990 1995 Año M ile s Número mensual de cerdos sacrificados en Victoria Esta es la serie que sustenta las chuletas de cerdo y tocino que disfrutan las personas en Victoria. A primera vista parece relativamente aleatorio, posiblemente haya una leve tendencia al alza pero es difícil ver la diferencia entre esto y una serie de ruido blanco sobre la base de un diagrama de tiempo. Pero cuando miramos la gráfica ACF de los mismos datos, podemos ver que en realidad hay algo de informacion de los datos ggAcf(pigs)+ ggtitle('ACF mensual de cerdos sacrificados en Victoria') 22 0.0 0.2 0.4 0.6 12 246 18 Lag A C F ACF mensual de cerdos sacrificados en Victoria Así que podemos estar seguros de que esta no es una serie de ruido blanco. En otras palabras, hay alguna información en los datos que se puede usar para construir un modelo de pronóstico. Mirar un ACF es útil, pero a veces es más fácil probar todas las autocorrelaciones juntas, en lugar de considerar cada una por separado. Para hacer esto, veamos el test de Ljung-Box. 3.2 Ljung-Box test Considera los primeros valores de autocorrelación h para ver si, como grupo, se parecen a lo que esperaría de una serie de ruido blanco. Podemos aplicarlo a las primeras 24 autocorrelaciones que vimos en el gráfico ACF para el conjunto de datos de cerdos. Box.test(pigs, lag = 24, fitdf = 0, type = 'Lj') ## ## Box-Ljung test ## ## data: pigs ## X-squared = 634.15, df = 24, p-value < 2.2e-16 Aquí el valor p es muy pequeño, lo que nuevamente sugiere que esta no es una serie de ruido blanco. Para resumir, el ruido blanco es una serie de tiempo puramente aleatoria. A menudo usaremos una prueba de Ljung-Box para ver si tenemos una serie de ruido blanco. Si no tenemos ruido blanco, podemos mirar el ACF para ver qué picos son los más significativos. 23 3.2.1 Precios de las acciones y ruido blanco Como aprendió previamente, el ruido blanco es un término que describe datos puramente aleatorios. Puede realizar una prueba de Ljung-Box usando la siguiente función para confirmar la aleatoriedad de una serie; un valor de p superior a 0,05 sugiere que los datos no son significativamente diferentes del ruido blanco. Box.test(pigs, lag = 24, fitdf = 0, type = “Ljung”) Existe un resultado bien conocido en economía llamado “Hipótesis del Mercado Eficiente” que establece que los precios de los activos reflejan toda la información disponible. Una consecuencia de esto es que los cambios diarios en los precios de las acciones deberían comportarse como un ruido blanco (ignorando los dividendos, las tasas de interés y los costos de transacción). La consecuencia para los pronosticadores es que el mejor pronóstico del precio futuro es el precio actual. Puede probar esta hipótesis observando la googserie, que contiene el precio de cierre de las acciones de Google durante 1000 días hábiles hasta el 13 de febrero de 2017. Estos datos se cargaron en su espacio de trabajo. # Primero trazamos la googs erie usando autoplot() autoplot(goog) 400 500 600 700 800 0 200 400 600 800 1000 Time go og # Usando la diff() función con autoplot(), trace los cambios diarios # en los precios de las acciones de Google. autoplot(diff(goog)) 24 0 50 0 200 400 600 800 1000 Time di ff( go og ) # Utilice la ggAcf()función para comprobar si estos cambios diarios # parecen ruido blanco. ggAcf(diff(goog)) 25 −0.05 0.00 0.05 0 5 10 15 20 25 30 Lag A C F Series: diff(goog) # Complete el código preescrito para hacer una prueba de Ljung-Box # sobre los cambios diarios usando 10 retrasos. Box.test(diff(goog), lag = 10, type = "Ljung") ## ## Box-Ljung test ## ## data: diff(goog) ## X-squared = 13.123, df = 10, p-value = 0.2169 Ha visto que la prueba Ljung-Box no fue significativa, por lo que los cambios diarios en el precio de las acciones de Google parecen ruido blanco. 26 Bienvenido a Pronósticos Usando R Que aprenderás Libro de Texto del Curso Datos de Series Temporales Creación de objetos de series temporales en R Tendencias, estacionalidad y ciclicidadPatrones de series temporales Ejemplos de Patrones de Series Temporales Estacional o Cíclico? Autocorrelación de series temporales estacionales y cíclicas Ruido Blanco Ruido blanco ACF Ljung-Box test