Así que estoy buscando en la unidad de datos de ventas. Yo estoy haciendo un univariante análisis de series de tiempo. Mis datos de ventas semanales de los números de las figuras, que abarca 2012 - 2014 (obviamente no hasta el final de 2014). Yo primero ploted mi respuesta var contra el tiempo. Sospeché que la tendencia y la estacionalidad, lo que tendría sentido. Así que hice una tendencia estacional se descomponen con el loess (STL). Aquí está el resultado. Sin embargo, cuando me hice una prueba de estacionariedad en mi conjunto de datos original, me da la estacionariedad. Y traté de Box-Ljung Philips-Perron unidades de la raíz de la prueba aumentada de dicky fuller prueba con estacionaria y explosivo como alternativa tanto y kpss. Estacionaria. Así que ¿por qué es que mi tendencia y sesonality no significativo? He asignado a cada una de las observaciones de un mes índice e hizo boxplot(ventas~mes, data=???) Aquí está el resultado: Entonces pregunté a mí mismo si las diferencias en las medias eran significativas, que no lo eran. Traté de aov pares.t.prueba y TuckeyHD. incluso si la diferencia en la media de algunos medios fue importante, en general no. Se podría decir, pues, que no significativo de la tendencia y la estacionalidad aparece en el conjunto de datos y, con un modelo ARIMA? También tengo sólo 156 observaciones en mis datos. Aquí está la fas y la fap qué ARMA le especificar? si ARMA a todos. Estoy realmente en la pérdida es la primera vez que veo un staionary raw cifra de ventas.
Respuestas
¿Demasiados anuncios?Esto es lo que se obtiene utilizando el paquete R previsión para el modelo ARIMA selección y tsoutliers para la detección de posibles valores atípicos aditivos, nivel de turnos o cambios temporales.
Estos son los datos:
x <- structure(c(1291, 2497, 2643, 2633, 2637, 3246, 2764, 2552, 2190, 2423, 2393, 2278, 1573, 792, 1826, 1819, 1610, 1344, 1762, 1917, 1920, 1804, 1936, 1912, 2000, 1742, 2120, 2483, 2475, 2252, 2061, 2145, 1901, 2223, 1934, 1439, 1963, 1879, 1587, 2467, 2852, 3811, 3154, 2428, 2881, 2625, 2416, 2538, 1947, 2526, 2421, 1277, 1334,
2009, 2693, 2624, 2714, 2882, 3044, 2847, 2439, 2690, 2677, 2461, 1495, 2501, 2614, 2486, 2390, 1901, 2315, 2710, 2436, 2184, 2079, 2234, 2382, 2213, 2506, 2673, 2579, 2341, 2246, 2331, 1670, 2263, 2453, 2411, 2653, 2754, 2818, 2635, 2577, 2897, 2796, 2039, 2188,
2749, 2790, 2510, 2128, 2839, 2270, 1791, 1373, 2078, 2878, 3198, 3095, 2964, 3230, 3122, 2809, 2902, 3048, 2984, 2927, 2740, 2732, 1572, 2829, 1831, 2821, 2907, 2973, 2690, 2511, 2632, 2502, 2590, 2907, 3046, 2953, 2663, 2613, 2637, 2061, 2812, 2660, 2653, 2708, 2921, 2862, 2526, 2863, 3002, 3227, 2254, 2606, 2959, 2963, 3302),
.Tsp = c(2012, 2014.90384615385, 52), class = "ts")
Ajuste de un modelo ARIMA:
require(tsoutliers)
res <- tso(x, args.tsmethod = list(ic="bic"))
res
# output
# Series: x
# ARIMA(2,0,0) with non-zero mean
# Coefficients:
# ar1 ar2 intercept TC6 AO14 LS40 AO65
# 0.6172 -0.2038 1960.4325 1024.713 -885.4593 494.7448 -932.6690
# s.e. 0.0836 0.0846 83.7532 296.303 252.3412 102.8566 250.3566
# LS107 AO120 AO122
# 370.7175 -1219.8245 -987.1700
# s.e. 95.7657 252.4097 252.4363
# sigma^2 estimated as 88411: log likelihood=-1081.49
# AIC=2184.99 AICc=2186.87 BIC=2218.25
# Outliers:
# type ind time coefhat tstat
# 1 TC 6 2012:06 1024.7 3.458
# 2 AO 14 2012:14 -885.5 -3.509
# 3 LS 40 2012:40 494.7 4.810
# 4 AO 65 2013:13 -932.7 -3.725
# 5 LS 107 2014:03 370.7 3.871
# 6 AO 120 2014:16 -1219.8 -4.833
# 7 AO 122 2014:18 -987.2 -3.911
Los datos son provistos por un estacionario AR(2) modelo con algunos valores atípicos resumen en la salida. Según este modelo, un comportamiento cíclico en lugar de la estacionalidad se observa en los datos.
Estos son los residuos del modelo ajustado.
-562.694; 861.332; 215.01; 360.635; 400.555; -19.663; 63.132; 89.367; -159.542; 310.001; 101.865;
80.454; -540.365; -10.707; -60.819; -131.584; -301.359; -436.549; 105.306; -50.281; -56.658; -142.147;
62.602; -66.119; 63.857; -253.158; 302.135; 379.365; 224.416; 80.363; 25.394; 181.858; -152.887;
336.83; -200.61; -451.631; 318.987; -189.269; -322.656; 225.7; 313.434; 1113.322; -57.1; -182.213;
584.986; -98.521; -57.223; 141.604; -567.276; 401.332; -181.432; -1142.653; -401.002; 5.72; 284.743;
-68.867; 203.088; 301.483; 378.136; 115.386; -138.022; 324.644; 73.6; -83.233; 14.096; 63.987; 124.937;
-57.862; -51.839; -507.671; 188.566; 228.418; -205.009; -207.419; -212.721; -44.265; -13.322; -242.081;
185.378; 137.111; -0.256; -146.214; -113.48; -18.343; -751.16; 267.111; -43.557; -81.991; 224.644;
167.73; 218.705; 16.786; 84.769; 403.277; 92.964; -536.499; 59.121; 373.918; 99.044; -91.952; -292.79;
596.918; -488.727; -471.684; -709.996; 155.382; 64.387; 263.095; 50.069; 47.84; 373.703; 74.842;
-117.303; 146.866; 171.693; 36.535; 48.783; -116.079; -20.282; 6.377; 5.001; -16.583; 0.506; 82.552;
96.052; -210.158; -201.05; -27.24; -268.39; -75.503; 160.697; 121.984; 7.788; -196.493; -86.462;
-90.693; -691.693; 419.689; -313.173; -73.34; -44.991; 132.638; -46.613; -302.799; 229.549; 92.099;
299.978; -783.563; 214.792; 152.29; 10.151; 418.609
$\quad$
plot(residuals(res$fit))
Las autocorrelaciones de los residuos:
par(mfrow = c(2,1), mar = c(5,4,4,3))
tmp <- acf(residuals(res$fit), lag.max = 53, plot = FALSE)
tmp$acf[1] <- NA
plot(tmp, ylim = c(-0.4, 0.4))
pacf(residuals(res$fit), lag.max = 53, ylim = c(-0.4, 0.4))
Las autocorrelaciones de los residuos de manifiesto la significación de la diferencia de orden 52 (desfase de un año). Una manera de incorporar este retraso se debe definir de la siguiente manera:
xlag52 <- ts(c(rep(NA, 52), window(x, start = c(2013))))
tsp(xlag52) <- tsp(x)
y de paso xlag52
a través de argumento xreg
en función de tso
o arima
. Sin embargo, probablemente debido a que la muestra es pequeño para lag, el algoritmo se ejecuta en dificultades a la hora de ajustar un modelo ARIMA.
Editar
La idea de temporada dummies mencionado por @IrishStat es mucho más apropiado que el de intentar agregar un retardo de orden 52. Usted puede utilizar estas funciones de la forecast
paquete: seasonaldummies
para generar dummies estacionales o fourier
para generar la trigonométricas representación de dummies estacionales. Para la ilustración y como complemento a los resultados que se muestran por @IrishStat, a continuación os muestro lo que me pasa con el primer 10 de los componentes de los ciclos estacionales.
seas <- fourier(x, K=10)
trend <- seq_along(x)
mo <- outliers(c("TC", rep("AO", 5)), c(2, 14, 42, 65, 120, 148))
outl <- outliers.effects(mo, length(x))
seas <- fourier(x, K=10)
trend <- seq_along(x)
res2 <- arima(x, order = c(1,0,0), xreg = cbind(seas, trend, outl))
Esto produce los siguientes residuos
plot(residuals(res2))
par(mfrow = c(2,1), mar = c(5,4,4,3))
acf(residuals(res2), lag.max = 52)
pacf(residuals(res2), lag.max = 52)
Ahora, podemos ver que las autocorrelaciones de orden 52 son menos prominentes en los residuos.
La siguiente estimación de la pauta estacional, se obtiene:
fitted.seas <- ts(seas %*% coef(res2)[3:22])
tsp(fitted.seas) <- tsp(x)
plot(fitted.seas, type = "l", main = "estimated seasonal component")
Finalmente, como usted utiliza R para los resultados que se muestran en la que usted pregunta, si quieres trabajar con el modelo propuesto por @IrishStat, puede hacer lo siguiente:
mo <- outliers(rep("AO", 5), c(14, 65, 42, 39, 120))
outl <- outliers.effects(mo, length(x))
seas <- matrix(0, nrow = length(x), ncol = 52)
for (i in seq(52))
seas[seq(i, length(x), 52),i] <- 1
trend <- seq_along(x)
res3 <- arima(x, order = c(1,0,0), xreg = cbind(seas[,-c(1,18,33)], trend, outl))
En el espíritu de la Navidad y un sincero respeto por la persistencia de la cooperativa para una respuesta a su pregunta razonable que he tomado la 152 semanal observaciones ( casi 3 años de datos) y se utiliza AUTOBOX de una forma totalmente automática el modo manos libres, una pieza de software que me han ayudado a desarrollar , para dar lo que yo creo que es más completa y detallada respuesta. Uno podría utilizar cualquier flexible sistema de análisis de duplicar mis resultados con algún requisito de programación necesarios para llevar a cabo algunos avances técnicos. @javlacalle (los resultados reportados previamente) llegó a la conclusión de que, aunque el valor residual de la ACF ( en el período ) sugirió un efecto cíclico, pero falló a la hora de proporcionar una solución completa, aunque había algunos indicios de lo que estaba mal con sus bien intencionados enfoque. Él creo que no tienen la facilidad de integrar un conjunto de semanal a los muñecos en su modelo. El problema aquí es muy directa : la identificación de un retraso significativo en el período de 52 en la acf puede ser evidencia de la necesidad de un ARIMA aumento O la necesidad de un determinista de temporada ficticio de aumento . Antes de Box y Jenkins y su ejército de fanáticos (de la que yo era un líder!) limitada no se acercan a ARIMA (memoria) de las soluciones de una rica historia de los modelos deterministas (es decir, de temporada dummies ) estaba de moda y al parecer ha sido ignorado . Los avances en la integración determinista estructura estacional en la presencia de. ARIMA estructura y empíricamente identificado las intervenciones en la presencia de la variable de tiempo de los coeficientes y el tiempo de variación de la varianza de error son ahora rutinariamente disponibles. En este caso el conjunto de herramientas utilizadas por @javlacalle cuya beca general el respeto no era lo suficientemente robusta en mi opinión correctamente y resolver el problema sugerido por los datos. El enfoque simplista para el uso inicial de la identificación del modelo ARIMA asumiendo entre otras cosas, que no hubo anomalías, no determinista de temporada dummies, no determinista de las tendencias previas a la Intervención de Detección , lo que supone un "buen modelo ARIMA", parece haber fracasado como las de la serie tiene una importante tendencia al alza en los datos y contiene fuertes determinista semanal efectos. Su Intervención en los sistemas de Detección produjo una mezcla de resultados como el conjunto provisional de los residuos de los datos se ha visto fuertemente afectada por los no especificados decir explícitamente omitido/ necesita semanal de los maniquíes y una tendencia temporal.
He publicado mis resultados completos en la web en http://www.autobox.com/stack/weekly.zip . El modelo final incluyó un AR(1) valor de coeficiente de .606 curiosamente cercana a la reportada .617 y 48 semanales dummies (faltan semanas 1,18 y 33) , un valor de tendencia 5.54, y a unos 5 valores Atípicos Aditivos (AO) en los períodos de 12,14,65,42, y 39. El modelo final de las estadísticas que muestran un MSE de 44800 una reducción del 50% de los previamente reportados 88411 hace hincapié en las diferencias en los modelos. Siguiente es un gráfico de los residuos de lo que sugiere la aleatoriedad . El final de la ACF de los residuos , notablemente libre de cualquier retraso 52 efecto está disponible en weekly.zip como finalacf.txt . Una parcela de la modelo final de los residuos se muestra aquí. Es importante notar que el rango de los errores se reduce drásticamente en comparación con el de los resultados reportados previamente. El ajuste/previsión gráfica presenta muy bien la esencia del modelo y se muestra aquí. El Limpiado de Datos gráfico muy bien pone de relieve la parsimoniosa de identificación, de 5 de anomalías. La incorporación de semanal dummies requiere parámetros adicionales (necesitaba en mi opinión son estadísticamente significativas) a pesar de que ya puedo oír los gritos de asombro de algunos lectores que mirar de reojo a la utilización de los parámetros de tantos.
El Real/Ajuste y Previsión gráfica es también útil en la comprensión de estos resultados poderosos. Mientras que todos los modelos están equivocados, este modelo parece particularmente útil para explicar el pasado y predecir el próximo 52 semanas.
En resumen, mientras que el ARIMA estructuras son las mismas, los modelos difieren significativamente en términos de tendencia y estacionalidad, con una reducción de casi el 50% en la estimación de la varianza de error. Reafirmó los resultados reportados en un 100% mayor varianza de error que mi modelo sugerido. Estoy seguro de que si se tratara de alguna manera posible de integrar automáticamente el semanal de los maniquíes de los resultados sugeriría un déficit. La tendencia y la estacionalidad evidente a la OP son ahora de forma segura se refleja en el modelo y el pronóstico. Por último, un modelo cíclico, no es necesariamente una auto-regresivo (de memoria ), modelo que podría ser una temporada maniquí modelo como en este caso. QED