Está en la página 1de 13

Ejemplo Datos RSALES.

DAT
1. Análisis descriptivo
Considere la serie de los datos de las ventas mensuales al menudeo en Estados Unidos, en dólares nominales, desde enero de 1955 a
enero de 1996, ilustrada en la Figura 1, siendo N=493 observaciones en total.
200000

200000
12.0
150000

150000
11.5
log(RSALES)

11.0
rsales

100000

100000
10.5
50000

50000
10.0
9.5
1960 1970 1980 1990 1960 1970 1980 1990 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

Time Time

(a) (b) (c)

Figura 1. Ventas mensuales al menudeo (miles de U.S nominales). (a) Serie en su escala original; (b) Logaritmo natural de la serie; (c) Boxplots comparativos de la
distribución de los datos según el mes.

En la Figura 1(a) vemos que la trayectoria de la serie no es lineal pero no es claro si la varianza alrededor de ésta es o no constante, sin
embargo, si se asume varianza no constante debería analizarse el logaritmo de la serie en esa escala: de acuerdo a la Figura 1(b), la
tendencia en la escala logaritmo natural pudiera ser un polinomio de grado 3. Por otra parte, es claro que no hay patrones
estacionales, pues en las Figuras 1(a) y 1(b) no es visible un patrón que se repita anualmente y además en la Figura 1(c) vemos que el
promedio de la serie no cambia con los periodos del año. Es visible además que en la serie hay componente cíclica, la cual causa que
la trayectoria de largo plazo no sea suave.

2: Postulación de modelos
Se postulan siete modelos así: cinco modelos de componentes aditivas (modelos 1, 2, 3, 5 y 7), es decir, asumiendo que la serie tiene
varianza constante y dos de componentes multiplicativas, es decir, modelos log polinomiales (modelos 4 y 6). Ver Tabla 1.

Tabla 1. Ecuaciones de los modelos propuestos


Modelo 1:
, ∼ 0,
Modelo 2:
, ∼ 0,
Modelo 3:
exp , ∼ 0,
Modelo 4:
log ∑ , ∼ 0,
Modelo 5:
exp ∑ , ∼ 0,
Modelo 6:
log ∑ , ∼ 0,
Modelo 7:
exp ∑ , ∼ 0,

NOTA: Los modelos exponenciales polinomiales (modelos 3, 5 y 7) necesitan un modelo log polinomial auxiliar para obtener valores
iniciales de los parámetros para la rutina de ajuste por mínimos cuadrados no lineales. El modelo 3 supone como modelo auxiliar al
modelo log , ∼ 0, , es decir, asume que el logaritmo de la serie tiene una tendencia lineal, la cual no
sería apropiada según lo visto en la Figura 1(b). En cambio el modelo 5 supone como modelo auxiliar a log ∑ ,
∼ 0, , es decir el modelo 4, mientras que el modelo 7 tiene como modelo auxiliar a log ∑ , ∼
0, , es decir, el modelo 6.

3. Ajustes
Se realiza el ajuste omitiendo los últimos 12 datos de la serie para hacer la validación cruzada con los pronósticos ex-post. Por
tanto, se usan los primeros 481 datos para el ajuste en tanto que los pronósticos ex-post para períodos después de 481,
corresponden a los tiempos 481 , con 1, 2, … , 12. En la Tabla 2 se muestran los parámetros estimados de los
siete modelos; ver programación y salidas R originales en el Apéndice. Las ecuaciones ajustadas en la escala original de los datos se

1
presentan en la Tabla 3. Tenga en cuenta que en los modelos 4 y 6 se ajusta en la escala de logaritmo natural de los datos y por tanto,
para obtener la ecuación en la escala original, se procede con la ecuación así: exp log exp /2 . Para realizar una
∗ ∑
comparación apropiada de la calidad del ajuste se usarán AIC y BIC calculados como exp exp log
, con 2 para AIC y log para BIC; en esta ecuación corresponde al número de parámetros del modelo (no
se refiere al grado del polinomio en esta fórmula). Los resultados se muestran en la Tabla 4.

Tabla 2. Parámetros estimados en modelos propuestos


Tabla 2a. Modelo 1
Parámetro Estimación Error estándar | | | |
18886.03413 383.92334 49.19220 2 ∗ 10
-111.72969 3.67850 -30.37372 2 ∗ 10
0.93873 0.00739 127.02099 2 ∗ 10
Tabla 2b. Modelo 2
Parámetro Estimación Error estándar | | | |
19386.58831 513.15162 37.77945 2 ∗ 10
-124.12730 9.21040 -13.47687 2 ∗ 10
1.00297 0.04438 22.60001 2 ∗ 10
-8.885×10-5 0.00006 -1.46789 0.14279
Tabla 2c. Modelo 3
Parámetro Estimación Error estándar | | | |
9.39033 171.432 655.8 2 ∗ 10
0.00577 3.536*10-5 163.1 2 ∗ 10
Tabla 2d. Modelo 4
Parámetro Estimación Error estándar | | | |
9.53205 0.00658 1449.28394 2 ∗ 10
5.607×10-3 2.747×10-4 20.40962 2 ∗ 10
-4.849×10-5 3.523×10-6 -13.76387 2 ∗ 10
3.465×10-7 1.851×10-8 18.71914 2 ∗ 10
-8.128×10-10 4.232×10-11 -19.20775 2 ∗ 10
6.225×10-13 3.494×10 -14
17.81351 2 ∗ 10
√ 0.02361
Tabla 2e. Modelo 5
Parámetro Estimación Error estándar | | | |
9.55974 0.02663 358.98478 <2 ∗ 10
4.190×10-3 8.218×10-4 5.09889 4.94 ∗ 10
-3.069×10-5 8.300×10 -6
-3.69751 0.000243
2.587×10-7 3.609×10 -8
7.16917 2.91 ∗ 10
-6.261×10-10 7.079×10-11 -8.84381 2 ∗ 10
4.788×10-13 5.152×10 -14
9.29232 2 ∗ 10
Tabla 2f. Modelo 6
Parámetro Estimación Error estándar | | | |
9.64665 0.00632 1525.43849 2 ∗ 10
-4.318×10-4 1.135×10-4 -3.80405 0.000161
2.848×10-5 5.469×10 -7
52.07089 2 ∗ 10
-3.554×10-8 7.459×10 -10
-47.64448 2 ∗ 10
√ 0.0344
Tabla 2g. Modelo 7
Parámetro Estimación Error estándar | | | |
9.64210 0.01739 554.31686 2 ∗ 10
-5.372×10-4 2.033×10-4 -2.64278 0.00849
2.945×10-5 7.400×10 -7
39.79438 2 ∗ 10
-3.717×10-8 8.273×10 -10
-44.93292 2 ∗ 10

Tabla 3. Ecuaciones ajustadas


Modelo 1:
18886.03413 111.72969 0.93873
Modelo 2:
19386.58831 124.1273 1.00297 8.885 10
Modelo 3:
exp 9.39033 0.00577
Modelo 4:
0.02361
exp 9.53205 5.607 10 4.849 10 3.465 10 8.128 10 6.225 10 exp
2
Modelo 5
exp 9.55974 4.190 10 3.069 10 2.587 10 6.261 10 4.788 10
Modelo 6:
0.0344
exp 9.64665 4.318 10 2.848 10 3.554 10 exp
2
Modelo 7:
exp 9.64210 5.372 10 2.945 10 3.717 10

2

Tabla 4. AIC y BIC según exp
Modelo AIC BIC
1 3 7860952.9 8068380.2
2 4 7858209.8 8135891.8
3 2 26540428.6 27005281.3
4 6 2858800.6 3011661.7
5 6 2797547.8 2947133.7
6 4 3670603.0 3800309.4
7 4 3404685.7 3524995.6
corresponde aquí al número de parámetros

La Figura 2 muestra la serie real y el ajuste de los siete modelos en la escala original (el ajuste va de enero de 1955 a enero de 1995).
200000

200000

200000
Real Real Real
Ajuste modelo 1 Ajuste modelo 2 Ajuste modelo 3
150000

150000

150000
rsales

rsales

rsales
100000

100000

100000
50000

50000

50000
1960 1970 1980 1990 1960 1970 1980 1990 1960 1970 1980 1990

Time Time Time

(a) (b) (c)


200000

200000

200000
Real Real Real
Ajuste modelo 4 Ajuste modelo 5 Ajuste modelo 6
150000

150000

150000
rsales

rsales

rsales
100000

100000

100000
50000

50000

50000

1960 1970 1980 1990 1960 1970 1980 1990 1960 1970 1980 1990

Time Time Time

(d) (e) (f)


200000

Real
Ajuste modelo 7
150000
rsales

100000
50000

1960 1970 1980 1990

Time

(g)

Figura 2. Ajustes de la serie. (a) Modelo 1; (b) Modelo 2; (c) Modelo 3; (d) Modelo 4; (e) Modelo 5; (f) Modelo 6; (g) Modelo 7

Asumiendo válidos los supuestos sobre los errores de ajuste en cada modelo, se evalúa la significancia del grado del polinomio
propuesto conforme a lo especificado en la Tabla 5.

Tabla 5. Formulación del test de hipótesis sobre significancia del grado del polinomio considerado
Tests de hipótesis Estadístico de prueba y su distribución Criterio de decisión

: 0 vs. : 0 ∼ Rechazar H0 si | | | | es pequeño

481 , con correspondiendo al número de parámetros en cada modelo y el grado del respectivo polinomio

En la prueba formulada en la Tabla 5 se concluye que sólo en el modelo 2 el grado del polinomio propuesto no es significativo. En
cuanto a la calidad del ajuste evaluada según AIC y BIC, se tiene que el modelo 3 es el peor de todos. Entre modelos 1 y 2 no hay

3
mucha diferencia en AIC, pero en cuanto a BIC el modelo 1 resulta mejor que el 2, sin embargo ambos tienen peor ajuste que los
modelos 4, 5, 6 y 7. El mejor ajuste aparentemente se logra con modelos 4 y 5 siendo este último el de menor AIC y BIC. Por otro
lado, de las gráficas en la Figura 2, también es claro que los modelos 1, 2 y 3 tienen una gran carencia de ajuste debido a que la curva
ajustada permanece por muchos periodos consecutivos por encima o por debajo de los valores reales, especialmente con el modelo 3
(el que tiene mayor carencia de ajuste). Los modelos 4, 5, 6 y 7 muestran una curva ajustada más cercana a los valores reales pero es
notorio para estos modelos que hacia el final la curva ajustada tiende a quedar por debajo de los valores reales, esto hará que sus
pronósticos ex – post subestimen los valores reales de esos periodos. Finalmente, note que ninguno de los siete modelos explica las
variaciones cíclicas que son observadas sobre la trayectoria de la serie.

4. Análisis de residuos de ajuste


En la Figura 3 se muestran las gráficas de los residuos de ajuste vs. tiempo y en la Figura 4 las gráficas de los residuos de ajuste vs.
valores ajustados en la escala de ajuste. Tenga en cuenta que en los modelo 4 y 6 la escala de ajuste es logaritmo natural de los datos.

Modelo 1 Modelo 2 Modelo 3


10000

10000

10000
5000

5000

5000
residuals(modelo1)

residuals(modelo2)

residuals(modelo3)
0

0
-5000

-5000

-5000
-10000

-10000

-10000
-15000

-15000

-15000
0 100 200 300 400 500 0 100 200 300 400 500 0 100 200 300 400 500

Time Time Time

(a) (b) (c)

Modelo 4 Modelo 5 Modelo 6


10000
0.10

0.10
5000
0.05

0.05
residuals(modelo4)

residuals(modelo5)

residuals(modelo6)
0
0.00

0.00
-5000
-0.05

-0.05
-10000
-0.10

-0.10
-15000

0 100 200 300 400 500 0 100 200 300 400 500 0 100 200 300 400 500

Time Time Time

(d) (e) (f)

Modelo 7
10000
5000
residuals(modelo7)

0
-5000
-10000
-15000

0 100 200 300 400 500

Time

(g)

Figura 3. Residuos vs. tiempo. (a) Modelo 1; (b) Modelo 2; (c) Modelo 3; (d) Modelo 4; (e) Modelo 5; (f) Modelo 6; (g) Modelo 7

4
Modelo 1 Modelo 2 Modelo 3

10000

10000

10000
5000

5000

5000
residuals(modelo1)

residuals(modelo2)

residuals(modelo3)
0

0
-5000

-5000

-5000
-10000

-10000

-10000
-15000

-15000

-15000
50000 100000 150000 50000 100000 150000 50000 100000 150000

fitted(modelo1) fitted(modelo2) fitted(modelo3)

(a) (b) (c)

Modelo 4 Modelo 5 Modelo 6

10000
0.10

0.10
5000
0.05

0.05
residuals(modelo4)

residuals(modelo5)

residuals(modelo6)
0
0.00

0.00
-5000
-0.05

-0.05
-10000
-0.10

-0.10
-15000

9.5 10.0 10.5 11.0 11.5 12.0 50000 100000 150000 10.0 10.5 11.0 11.5 12.0

fitted(modelo4) fitted(modelo5) fitted(modelo6)

(d) (e) (f)

Modelo 7
10000
5000
residuals(modelo7)

0
-5000
-10000
-15000

50000 100000 150000

fitted(modelo7)

(g)

Figura 4. Residuos vs. valores ajustados (en escala de ajuste). (a) Modelo 1; (b) Modelo 2; (c) Modelo 3; (d) Modelo 4; (e) Modelo 5; (f)
Modelo 6; (g) Modelo 7

En las Figuras 3(a), 3(b) y 3(c), se observa que hasta el período 300, aproximadamente, hay un claro patrón en forma de U el cuál es
más evidente en los residuales del modelo 3, esto es debido a la carencia de ajuste de las funciones de regresión, como ya se había
determinado en el análisis de las gráficas de ajuste de estos tres modelos. También en las Figuras 3(f) y 3(g) observamos que los
residuales se ubican por encima de cero entre los periodos 29 a 156 y luego con valores negativos formando un patrón en U entre los
periodos 157 y 300, lo que indica significativa carencia de ajuste y que también está asociada a la función de regresión propuesta.
Existe además en todos los residuos de ajuste vs. tiempo evidencia de otro tipo de carencia de ajuste, pero que no es debida a la forma
de la función de regresión asumida sino a las variaciones cíclicas que ningún modelo ha explicado (observe el patrón de residuales que
se configuran en forma de crestas a lo largo de las trayectorias de estos residuos, durante varios períodos consecutivos).

NOTA: La presencia de ciclos en la serie de tiempo de los residuos de ajuste , indica que existe correlación positiva entre los
errores del modelo , separados un periodo de tiempo, es decir, , 0, por tanto, no se cumple el supuesto de la
independencia en los errores del modelo. Pero tenga en cuenta que no ver ciclos en los residuos no es evidencia suficiente de la
validez del supuesto de independencia, aunque es una condición necesaria.

Por su parte, en las gráficas de la Figura 4 también se observan patrones en U o en W que indican nuevamente carencia de ajuste.
Finalmente, observe en estas gráficas que en todos los modelos que consideran una descomposición aditiva, es decir, modelos 1, 2, 3,
5, y 7, la nube de puntos se concentra más al principio y luego se observa mayor dispersión, indicando que la varianza no es constante.

5
Esto también puede juzgarse en las gráficas de la Figura 3 observando la variación sobre la trayectoria que los residuos de los modelos
1, 2, 3, 5 y 7 siguen en el tiempo, donde la variabilidad aumenta después de los primeros 200 periodos aproximadamente.

En conclusión: En los modelos aditivos: 1, 2, 3, 5 y 7, hay varianza no constante en la serie de los errores. En los modelos que usan
polinomios de grado 3 hay carencia de ajuste de la función de regresión, y en todos los modelos hay correlación no nula entre los
errores debido a las variaciones cíclicas presentes y que no son explicadas. Haciendo un balance de lo anterior, encontramos que los
mejores modelos resultan ser los dos modelos log – polinomiales.

5. Pronósticos ex – post para validación cruzada


Considere ahora los pronósticos de los siete modelos con origen en 481, para periodos adelante (con 1, 2, … ,12). Los
pronósticos puntuales son obtenidos evaluando las ecuaciones ajustadas en 481 . En la Tabla 6 se muestran las
ecuaciones de los pronósticos puntuales.
Tabla 6. Ecuaciones de pronósticos puntuales con origen en t=481
Modelo 1:
18886.03413 111.72969 481 0.93873 481
Modelo 2:
19386.58831 124.1273 481 1.00297 481 0.00009 481
Modelo 3:
exp 9.39033 0.00577 481
Modelo 4:
exp 9.53205 5.607 10 481 4.849 10 481 3.465 10 481 8.128
0.02361
10 481 6.225 10 481 exp
2
Modelo 5:
exp 9.55974 4.190 10 481 3.069 10 481 2.587 10 481 6.261
10 481 4.788 10 481
Modelo 6:
0.0344
exp 9.64665 4.318 10 481 2.848 10 481 3.554 10 481 exp
2
Modelo 7:
exp 9.64210 5.372 10 481 2.945 10 481 3.717 10 481

Sólo en los modelos 1, 2, 4, y 6 es posible calcular pronósticos por intervalos del 95% de confianza. En la Tabla 7 se presentan los
pronósticos puntuales y por intervalos del 95% de confianza en modelo 1, 2, 4 y 6 mientras que en la Tabla 8 se presentan los
pronósticos puntuales de los modelo 3, 5, y 7. Para los I.P del 95% de confianza en los modelos polinomiales (modelos 1 y 2), se
aplica la fórmula . , . , con , el error del pronóstico. Para los modelos log-
polinomiales (modelos 4 y 6), se calculan inicialmente los intervalos de pronóstico para logaritmo natural de los datos y luego se
exponencian los límites obtenidos y se multiplica por el factor de corrección por transformación lognormal, es decir, los límites en la
escala original se calculan como

exp ∗ . , . exp /2 ,

∗ ∗ ∗
donde es el pronóstico para log y log , es el error de pronóstico en la escala logaritmo
natural.

NOTA: Recuerde que en los modelos de regresión no lineal (como modelos 3, 5 y 7) no hay forma de calcular en R el error estándar
del error de pronóstico, . , y por tanto no se pueden obtener intervalos de pronóstico.

Tabla 7. Pronósticos puntuales y por intervalos en modelos polinomiales y log-polinomiales (en dólares nominales)
Modelo 1 Modelo 2 Modelo 4 Modelo 6
Fecha Real Pronóstico Lim.Inf Lim.Sup Pronóstico Lim.Inf Lim.Sup Pronóstico Lim.Inf Lim.Sup Pronóstico Lim.Inf Lim.Sup
Feb 1995 181958.0 183122.1 177578.5 188665.7 182621.5 177044.2 188198.9 178430.2 170042.3 187231.8 175546.9 163886.4 188037.2
Mar 1995 185303.0 183916.2 178371.7 189460.8 183403.2 177823.0 188983.5 179195.3 170749.2 188059.2 175938.6 164246.2 188463.5
Apr 1995 183429.0 184712.3 179166.9 190257.6 184186.7 178603.4 189769.9 179969.9 171463.4 188898.4 176323.1 164599.1 188882.2
May 1995 183395.0 185510.2 179963.9 191056.4 184971.8 179385.6 190558.1 180754.3 172185.1 189749.9 176700.2 164945.0 189293.3
Jun 1995 185089.0 186309.9 180762.8 191857.1 185758.8 180169.4 191348.2 181548.9 172914.6 190614.3 177070.0 165283.7 189696.7
Jul 1995 185287.0 187111.6 181563.5 192659.7 186547.4 180954.8 192140.1 182354.0 173652.1 191492.0 177432.2 165615.2 190092.2
Aug 1995 187973.0 187915.1 182366.2 193464.1 187337.9 181741.9 192933.8 183170.0 174397.8 192383.4 177786.8 165939.5 190479.9
Sep 1995 189465.0 188720.5 183170.6 194270.5 188130.0 182530.7 193729.4 183997.3 175152.1 193289.3 178133.7 166256.3 190859.6
Oct 1995 191789.0 189527.8 183977.0 195078.7 188923.9 183321.1 194526.8 184836.3 175915.1 194210.0 178472.8 166565.7 191231.2
Nov 1995 192611.0 190337.0 184785.2 195888.8 189719.6 184113.2 195326.0 185687.4 176687.1 195146.2 178804.2 166867.5 191594.7
Dec 1995 192913.0 191148.0 185595.2 196700.8 190517.0 184906.9 196127.1 186550.9 177468.4 196098.4 179127.5 167161.7 191949.9
Jan 1996 193218.0 191961.0 186407.2 197514.8 191316.1 185702.3 196930.0 187427.4 178259.2 197067.2 179442.9 167448.2 192296.8

6
Tabla 8. Pronósticos puntuales en modelos exponenciales polinomiales
Fecha Modelo 3 Modelo 5 Modelo 7
Feb 1995 193072.0 177119.0 173180.1
Mar 1995 194189.0 177777.2 173512.6
Apr 1995 195312.5 178440.4 173837.2
May 1995 196442.4 179108.9 174154.0
Jun 1995 197578.9 179783.0 174462.7
Jul 1995 198722.0 180462.8 174763.3
Aug 1995 199871.6 181148.5 175055.7
Sep 1995 201027.9 181840.4 175339.8
Oct 1995 202191.0 182538.9 175615.6
Nov 1995 203360.7 183244.0 175883.0
Dec 1995 193072.0 177119.0 173180.1
Jan 1996 194189.0 177777.2 173512.6

La precisión de los pronósticos puntuales, en la escala original de los datos, es obtenida a través de medidas de error medio de
pronóstico: RMSE (raíz cuadrada del error cuadrático medio de pronóstico), MAE (error promedio absoluto de pronóstico) y MAPE
(porcentaje medio de error de pronóstico). La precisión de los pronósticos por intervalos es medida mediante la amplitud media y la
cobertura de los I.P construidos en los pronósticos ex – post.

Tabla 9. Medidas de precisión de los pronósticos


Precisión pronósticos por I.P del 95%
Precisión pronósticos puntuales
De confianza
Modelo RMSE* MAE* MAPE (%) Amplitud media I.P* Cobertura I.P (%)
1 1574.68 1446.19 0.77 11097.20 100.00
2 1762.09 1571.04 0.83 11189.62 100.00
3 11693.66 11632.98 6.20 NA NA
4 5107.76 4875.68 2.58 17946.15 100.00
5 7106.08 6861.30 3.64 NA NA
6 10527.78 10137.59 5.37 24505.22 66.67
7 13195.02 12841.03 6.81 NA NA
*Dólares nominales

La amplitud promedio de los intervalos de pronóstico corresponde a

Amplıtud ∑ ,

donde y son respectivamente el límite inferior y superior para el pronóstico y es el número de pronósticos
calculados.

La cobertura promedio de los intervalos de pronóstico corresponde a

cobertura ∑ 100%,

donde es una variable indicadora tomando el valor de 1 si el valor verdadero está dentro del I.P y 0 en caso contrario.

NOTA: A mayor cobertura promedio y menor amplitud promedio, mejor es la predicción del modelo mediante intervalos de
pronóstico. La cobertura debe ser al menos igual al nivel de confianza de los I.P.

NOTA: Para comparar los pronósticos puntuales, las medidas de precisión que se verán más adelante en el curso: RMSE, MAE y
MAPE, miden la magnitud promedio del error cometido en cada pronóstico para el horizonte de pronóstico considerado. Por tanto, a
menor valor en estas medidas, mejor es la predicción puntual del modelo.

En la Tabla 9 vemos que puntualmente, los modelos más precisos (con menor RMSE, MAE y MAPE) parecen ser los modelos 1 y 2.
Estos dos modelos también son los más precisos según los intervalos de pronóstico (menor amplitud media y coberturas del 100%).
En tercer y cuarto lugar aparecen los modelos 4 y 5 respectivamente. Los modelos 3, 6 y 7 son los peores en los pronósticos,
particularmente el modelo 7. La Figura 5 muestra cómo los pronósticos puntuales se ubican con relación a los 12 valores reales. Allí
vemos que los modelos con pronósticos más próximos a los valores reales son los modelos 1 y 2. Los modelos 3 y 7 son los que
producen pronósticos mucho más lejanos de los valores reales, el primero de estos lo hace sobreestimando mientras que el segundo lo
hace subestimando. Los modelos 4, 5 y 6 también producen pronósticos que subestiman los valores reales, aunque el modelo 4 se
ubica en tercer lugar entre los modelos que menos se equivocan en estos pronósticos ex – post.

7
210000
Real
Modelo 1
Modelo 2
Modelo 3
Modelo 4

200000
Modelo 5
Modelo 6

Ventas en dólares nominales


Modelo 7

190000
180000
170000

95.2 95.3 95.4 95.5 95.6 95.7 95.8 95.9 95.10 95.11 95.12 96.1

Time

Figura 5. Comparación de los pronósticos puntuales de modelos 1, 2, 3, 4, 5, 6 y 7 vs. valores reales

6. Conclusiones
Todos los modelos probados tienen problemas. Ningún modelo explica las variaciones cíclicas lo cual causa que no sea válido el
supuesto de independencia en los errores de ajuste. Además, los modelos que consideraron una descomposición aditiva resultan
erróneos pues la varianza no es constante (esto pudo verificarse en el análisis de residuos), por tanto, los modelos a considerar deben
ser log – polinomiales, con un grado de polinomio que no debe ser inferior a 3 (para que no sea grande la carencia de ajuste de la
función de regresión) ni superior a 5 (para que no sea grande el error de pronóstico). Considerando como prioritario el cumplimiento
de supuestos en los errores de ajuste, los modelos menos anómalos en ese sentido son los modelos 4 y 6, y entre estos dos modelos
elegiremos de acuerdo a los resultados previamente vistos. Como el mejor modelo en el análisis de residuos es el modelo 4 y además
como también en la precisión de sus pronósticos y en sus medidas de ajuste es mejor que el modelo 6, se elige como mejor modelo el
4, a pesar que no es el mejor en los pronósticos, pero es el tercer mejor modelo en los pronósticos ex – post.

Apéndice. Programa y algunas salidas R


#Definiendo funciones de usuario:
#Creando función de usuario para calcular la amplitud de los I.P. Sus argumentos “LIP” y “LSP” se refieren a los valores de los
#límites inferior y superior del I.P
amplitud=function(LIP,LSP){
a=LSP-LIP
am=mean(a)
am
}

#Creando función de usuario para calcular la cobertura de los I.P. Sus argumentos “LIP” y “LSP” se refieren a los valores de los
#límites inferior y superior del I.P y “real” se refiere a los valores reales observados en los períodos de
#pronóstico
cobertura=function(real,LIP,LSP){
I=ifelse(real>=LIP & real<=LSP,1,0)
p=mean(I)
p
}

#Creando función usuario crit.inf.resid() para calcular ∗ . Sus argumentos son “residuales” para especificar
#la diferencia y “n.par” para especificar el número de parámetros del modelo; AIC es calculado por defecto. Vea más adelante el uso de esta
#función para calcular AIC y BIC
crit.inf.resid=function(residuales,n.par,AIC="TRUE"){
if(AIC=="TRUE"){
#Calcula AIC
CI=log(mean(residuales^2))+2*n.par/length(residuales)
}
if(AIC=="FALSE"){
#Calcula BIC
CI=log(mean(residuales^2))+n.par*log(length(residuales))/length(residuales)
}
CI
}

#Leyendo datos del archivo RSALES.DAT y creación de la serie de tiempo con fecha de inicio enero de 1955
RSALES=read.table(file.choose(),header=T)
RSALES=ts(RSALES,freq=12,start=c(1955,1))

#Gráficos para análisis descriptivos


plot(RSALES,lwd=3) #Serie en escala original
plot(log(RSALES),lwd=3) #Serie en escala logarítmica

#Boxplots distribución de valores de la serie según mes del año calendario


boxplot(RSALES~cycle(RSALES),names=month.abb,cex.axis=0.8)

8
#Definiendo índice t en los periodos de ajuste (sin las últimas 12 observaciones de la serie)
n=length(RSALES)-12 #tamaño muestra de ajuste
t=1:n
RSALESb=ts(RSALES[t],freq=12,start=c(1955,1)) #Valores de la serie para el ajuste

tnuevo=(n+1):length(RSALES) #índice de tiempo en los pronósticos de validación cruzada


ytf=ts(RSALES[tnuevo],freq=12,start=c(1995,2)) #valores de la serie en la validación cruzada. Fecha de inicio febrero de 1995

#Ajustando modelo 1: modelo de tendencia cuadrática


modelo1=lm(RSALESb~t+I(t^2))
summary(modelo1)

Call:
lm(formula = RSALESb ~ t + I(t^2))
Residuals:
Min 1Q Median 3Q Max
-7216.4 -2274.5 352.6 2179.2 8010.6
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.889e+04 3.839e+02 49.19 <2e-16 ***
t -1.117e+02 3.678e+00 -30.37 <2e-16 ***
I(t^2) 9.387e-01 7.390e-03 127.02 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2795 on 478 degrees of freedom
Multiple R-squared: 0.9969, Adjusted R-squared: 0.9969
F-statistic: 7.698e+04 on 2 and 478 DF, p-value: < 2.2e-16

#Ajuste del modelo 2: modelo de tendencia cúbica


modelo2=lm(RSALESb~t+I(t^2)+I(t^3))
summary(modelo2)

Call:
lm(formula = RSALESb ~ t + I(t^2) + I(t^3))
Residuals:
Min 1Q Median 3Q Max
-6844.6 -2285.7 166.6 2280.0 7854.0
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.939e+04 5.132e+02 37.779 <2e-16 ***
t -1.241e+02 9.210e+00 -13.477 <2e-16 ***
I(t^2) 1.003e+00 4.438e-02 22.600 <2e-16 ***
I(t^3) -8.885e-05 6.053e-05 -1.468 0.143
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2792 on 477 degrees of freedom
Multiple R-squared: 0.9969, Adjusted R-squared: 0.9969
F-statistic: 5.144e+04 on 3 and 477 DF, p-value: < 2.2e-16

#Obtención de valores iniciales para parámetros del modelo 3, hallados con modelo log-lineal
modeloaux=lm(log(RSALESb)~t) #Ajuste modelo auxiliar: modelo log-lineal
bin0=coef(modeloaux) #guardando parámetros estimados modelo log-lineal

#Ajuste modelo 3: modelo exponencial lineal, usando como valores iniciales las estimaciones del modelo log-lineal: “modeloaux”
modelo3=nls(RSALESb~exp(beta0+beta1*t),start=list(beta0=bin0[1],beta1=bin0[2])) #Ajuste modelo 3
summary(modelo3)
Formula: RSALESb ~ exp(beta0 + beta1 * t)
Parameters:
Estimate Std. Error t value Pr(>|t|)
beta0 9.390e+00 1.432e-02 655.8 <2e-16 ***
beta1 5.769e-03 3.536e-05 163.1 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 5141 on 479 degrees of freedom
Number of iterations to convergence: 4
Achieved convergence tolerance: 1.779e-06

#Ajuste modelo 4: Modelo log-polinomial grado p=5


modelo4=lm(log(RSALESb)~t+I(t^2)+I(t^3)+I(t^4)+I(t^5))
summary(modelo4)
Call:
lm(formula = log(RSALESb) ~ t + I(t^2) + I(t^3) + I(t^4) + I(t^5))
Residuals:
Min 1Q Median 3Q Max
-0.056915 -0.015214 -0.001282 0.017034 0.071363
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 9.532e+00 6.577e-03 1449.28 <2e-16 ***
t 5.607e-03 2.747e-04 20.41 <2e-16 ***
I(t^2) -4.849e-05 3.523e-06 -13.76 <2e-16 ***
I(t^3) 3.465e-07 1.851e-08 18.72 <2e-16 ***
I(t^4) -8.128e-10 4.232e-11 -19.21 <2e-16 ***
I(t^5) 6.225e-13 3.494e-14 17.81 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.02361 on 475 degrees of freedom


Multiple R-squared: 0.9992, Adjusted R-squared: 0.9992
F-statistic: 1.161e+05 on 5 and 475 DF, p-value: < 2.2e-16

#Ajuste modelo 5: Modelo exponencial-polinomial grado p=5


estim4=coef(modelo4) #coeficientes estimados del modelo 4 sirven para inicializar parámetros del modelo 5
modelo5=nls(RSALESb~exp(b0+b1*t+b2*I(t^2)+b3*I(t^3)+b4*I(t^4)+b5*I(t^5)),start=list(b0=estim4[1],b1=estim4[2],b2=estim4[3],b3=estim4[4],b4=estim4[5],
b5=estim4[6]))
summary(modelo5)
Formula: RSALESb ~ exp(b0 + b1 * t + b2 * I(t^2) + b3 * I(t^3) + b4 *
I(t^4) + b5 * I(t^5))
Parameters:
Estimate Std. Error t value Pr(>|t|)
b0 9.560e+00 2.663e-02 358.985 < 2e-16 ***
b1 4.190e-03 8.218e-04 5.099 4.94e-07 ***

9
b2 -3.069e-05 8.300e-06 -3.698 0.000243 ***
b3 2.587e-07 3.609e-08 7.169 2.91e-12 ***
b4 -6.261e-10 7.079e-11 -8.844 < 2e-16 ***
b5 4.788e-13 5.152e-14 9.292 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1662 on 475 degrees of freedom
Number of iterations to convergence: 3
Achieved convergence tolerance: 1.163e-06

#Ajuste modelo 6: Modelo log-cúbico


modelo6=lm(log(RSALESb)~t+I(t^2)+I(t^3))
summary(modelo6)
Call:
lm(formula = log(RSALESb) ~ t + I(t^2) + I(t^3))
Residuals:
Min 1Q Median 3Q Max
-0.120221 -0.020067 0.004459 0.022047 0.076039
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 9.647e+00 6.324e-03 1525.438 < 2e-16 ***
t -4.318e-04 1.135e-04 -3.804 0.000161 ***
I(t^2) 2.848e-05 5.469e-07 52.071 < 2e-16 ***
I(t^3) -3.554e-08 7.459e-10 -47.644 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.0344 on 477 degrees of freedom
Multiple R-squared: 0.9983, Adjusted R-squared: 0.9982
F-statistic: 9.103e+04 on 3 and 477 DF, p-value: < 2.2e-16

#Ajuste modelo 7: Modelo exponencial-cúbico


estim6=coef(modelo6) #coeficientes estimados del modelo 6 sirven para inicializar parámetros del modelo 7
modelo7=nls(RSALESb~exp(b0+b1*t+b2*I(t^2)+b3*I(t^3)),start=list(b0=estim6[1],b1=estim6[2],b2=estim6[3],b3=estim6[4]))
summary(modelo7)
Formula: RSALESb ~ exp(b0 + b1 * t + b2 * I(t^2) + b3 * I(t^3))
Parameters:
Estimate Std. Error t value Pr(>|t|)
b0 9.642e+00 1.739e-02 554.317 < 2e-16 ***
b1 -5.372e-04 2.033e-04 -2.643 0.00849 **
b2 2.945e-05 7.400e-07 39.794 < 2e-16 ***
b3 -3.717e-08 8.273e-10 -44.933 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1838 on 477 degrees of freedom
Number of iterations to convergence: 3
Achieved convergence tolerance: 2.891e-06

#Definiendo en cada modelo la serie de tiempo de valores ajustados en escala original.


#Para valores ajustados en escala original de modelos 4 y 6 se exponencia los valores ajustados en escala log y se usa
#factor de corrección exp(MSE/2), es decir, /
Ythat1=ts(fitted(modelo1),frequency=12,start=c(1955,1))
Ythat2=ts(fitted(modelo2),frequency=12,start=c(1955,1))
Ythat3=ts(fitted(modelo3),frequency=12,start=c(1955,1))
Ythat4=ts(exp(fitted(modelo4))*exp(summary(modelo4)$sigma^2/2),freq=12,start=c(1955,1))
Ythat5=ts(fitted(modelo5),freq=12,start=c(1955,1))
Ythat6=ts(exp(fitted(modelo6))*exp(summary(modelo6)$sigma^2/2),freq=12,start=c(1955,1))
Ythat7=ts(fitted(modelo7),freq=12,start=c(1955,1))

#Gráficos de la serie y su ajuste


plot(RSALES,lwd=2)
lines(Ythat1,col=4,lwd=2)
legend("topleft",legend=c("Real","Ajuste modelo 1"),lty=1,col=c(1,4),lwd=2)

plot(RSALES,lwd=2)
lines(Ythat2,col=4,lwd=2)
legend("topleft",legend=c("Real","Ajuste modelo 2"),lty=1,col=c(1,4),lwd=2)

plot(RSALES,lwd=2)
lines(Ythat3,col=4,lwd=2)
legend("topleft",legend=c("Real","Ajuste modelo 3"),lty=1,col=c(1,4),lwd=2)

plot(RSALES,lwd=2)
lines(Ythat4,col=4,lwd=2)
legend("topleft",legend=c("Real","Ajuste modelo 4"),lty=1,col=c(1,4),lwd=2)

plot(RSALES,lwd=2)
lines(Ythat5,col=4,lwd=2)
legend("topleft",legend=c("Real","Ajuste modelo 5"),lty=1,col=c(1,4),lwd=2)

plot(RSALES,lwd=2)
lines(Ythat6,col=4,lwd=2)
legend("topleft",legend=c("Real","Ajuste modelo 6"),lty=1,col=c(1,4),lwd=2)

plot(RSALES,lwd=2)
lines(Ythat7,col=4,lwd=2)
legend("topleft",legend=c("Real","Ajuste modelo 7"),lty=1,col=c(1,4),lwd=2)


#Cálculo de criterios de información versión
#en los modelos con transformación logaritmo natural (modelos 4 y 6) se usan seudo residuos para el cálculo de medidas de ajuste
npar1=length(coef(modelo1)[coef(modelo1)!=0]); npar1 #número parámetros modelo 1
aic1=exp(crit.inf.resid(residuales=residuals(modelo1),n.par=npar1));aic1
bic1=exp(crit.inf.resid(residuales=residuals(modelo1),n.par=npar1,AIC="FALSE"));bic1

npar2=length(coef(modelo2)[coef(modelo2)!=0]); npar2 #número parámetros modelo 2


aic2=exp(crit.inf.resid(residuales=residuals(modelo2),n.par=npar2));aic2
bic2=exp(crit.inf.resid(residuales=residuals(modelo2),n.par=npar2,AIC="FALSE"));bic2

npar3=length(coef(modelo3)[coef(modelo3)!=0]); npar3 #número parámetros modelo 3


aic3=exp(crit.inf.resid(residuales=residuals(modelo3),n.par=npar3));aic3
bic3=exp(crit.inf.resid(residuales=residuals(modelo3),n.par=npar3,AIC="FALSE"));bic3
seudores4=RSALESb-Ythat4 #seudo-residuos en modelo 4

10
npar4=length(coef(modelo4)[coef(modelo4)!=0]); npar4 #número parámetros modelo 4
aic4=exp(crit.inf.resid(residuales=seudores4,n.par=npar4));aic4
bic4=exp(crit.inf.resid(residuales=seudores4,n.par=npar4,AIC="FALSE"));bic4

npar5=length(coef(modelo5)[coef(modelo5)!=0]); npar5 #número parámetros modelo 5


aic5=exp(crit.inf.resid(residuales=residuals(modelo5),n.par=npar5));aic5
bic5=exp(crit.inf.resid(residuales=residuals(modelo5),n.par=npar5,AIC="FALSE"));bic5

seudores6=RSALESb-Ythat6 #seudo-residuos en modelo 6


npar6=length(coef(modelo6)[coef(modelo6)!=0]); npar6 #número parámetros modelo 6
aic6=exp(crit.inf.resid(residuales=seudores6,n.par=npar6));aic6
bic6=exp(crit.inf.resid(residuales=seudores6,n.par=npar6,AIC="FALSE"));bic6

npar7=length(coef(modelo7)[coef(modelo7)!=0]); npar7 #número parámetros modelo 7


aic7=exp(crit.inf.resid(residuales=residuals(modelo7),n.par=4));aic7
bic7=exp(crit.inf.resid(residuales=residuals(modelo7),n.par=4,AIC="FALSE"));bic7
#Organizando en una tabla los valores de AIC y BIC
criterios = cbind(c(npar1,npar2,npar3,npar4,npar5,npar6,npar7),c(aic1,aic2,aic3,aic4,aic5,aic6,aic7), c(bic1,bic2,bic3,bic4,bic5,bic6,bic7))
rownames(criterios) = c("modelo1","modelo2","modelo3","modelo4","modelo5","modelo6","modelo7")
colnames(criterios) = c("p","AIC","BIC")
criterios
> criterios
p AIC BIC
modelo1 3 7860953 8068380
modelo2 4 7858210 8135892
modelo3 2 26540429 27005281
modelo4 6 2858801 3011662
modelo5 6 2797548 2947134
modelo6 4 3670603 3800309
modelo7 4 3404686 3524996

#Graficando los residuales vs. tiempo en la escala de ajuste


plot.ts(residuals(modelo1),lwd=2,ylim=c(-14000,12500))
abline(h=c(-2*summary(modelo1)$sigma,0,2*summary(modelo1)$sigma),lty=2)
legend("topleft",legend=c("Modelo 1"),lty=1,col=1,lwd=2)

plot.ts(residuals(modelo2),lwd=2,ylim=c(-14000,12500))
abline(h=c(-2*summary(modelo2)$sigma,0,2*summary(modelo2)$sigma),lty=2)
legend("topleft",legend=c("Modelo 2"),lty=1,col=1,lwd=2)

plot.ts(residuals(modelo3),lwd=2,ylim=c(-14000,12500))
abline(h=c(-2*summary(modelo3)$sigma,0,2*summary(modelo3)$sigma),lty=2)
legend("topleft",legend=c("Modelo 3"),lty=1,col=1,lwd=2)

plot.ts(residuals(modelo4),col=2,lwd=2,ylim=c(-0.121,0.121))
abline(h=c(-2*summary(modelo4)$sigma,0,2*summary(modelo4)$sigma),lty=2)
legend("topleft",legend=c("Modelo 4"),lty=1,col=1,lwd=2)

plot.ts(residuals(modelo5),lwd=2,ylim=c(-14000,12500))
abline(h=c(-2*summary(modelo5)$sigma,0,2*summary(modelo5)$sigma),lty=2)
legend("topleft",legend=c("Modelo 5"),lty=1,col=1,lwd=2)

plot.ts(residuals(modelo6),col=2,lwd=2,ylim=c(-0.121,0.121))
abline(h=c(-2*summary(modelo6)$sigma,0,2*summary(modelo6)$sigma),lty=2)
legend("topleft",legend=c("Modelo 6"),lty=1,col=1,lwd=2)

plot.ts(residuals(modelo7),lwd=2,ylim=c(-14000,12500))
abline(h=c(-2*summary(modelo7)$sigma,0,2*summary(modelo7)$sigma),lty=2)
legend("topleft",legend=c("Modelo 7"),lty=1,col=1,lwd=2)

#Residuos vs. valores ajustados en la escala de ajuste


plot(fitted(modelo1),residuals(modelo1),ylim=c(-14000,12500),cex=1.5)
abline(h=c(-2*summary(modelo1)$sigma,0,2*summary(modelo1)$sigma),lty=2)
legend("topleft",legend=c("Modelo 1"),lty=1,col=1,lwd=2)

plot(fitted(modelo2),residuals(modelo2),ylim=c(-14000,12500),cex=1.5)
abline(h=c(-2*summary(modelo2)$sigma,0,2*summary(modelo2)$sigma),lty=2)
legend("topleft",legend=c("Modelo 2"),lty=1,col=1,lwd=2)

plot(fitted(modelo3),residuals(modelo3),ylim=c(-14000,12500),cex=1.5)
abline(h=c(-2*summary(modelo3)$sigma,0,2*summary(modelo3)$sigma),lty=2)
legend("topleft",legend=c("Modelo 3"),lty=1,col=1,lwd=2)

plot(fitted(modelo4),residuals(modelo4),ylim=c(-0.121,0.121),cex=1.5,col=2)
abline(h=c(-2*summary(modelo4)$sigma,0,2*summary(modelo4)$sigma),lty=2)
legend("topleft",legend=c("Modelo 4"),lty=1,col=1,lwd=2)

plot(fitted(modelo5),residuals(modelo5),ylim=c(-14000,12500),cex=1.5)
abline(h=c(-2*summary(modelo5)$sigma,0,2*summary(modelo5)$sigma),lty=2)
legend("topleft",legend=c("Modelo 5"),lty=1,col=1,lwd=2)

plot(fitted(modelo6),residuals(modelo6),ylim=c(-0.121,0.121),cex=1.5,col=2)
abline(h=c(-2*summary(modelo6)$sigma,0,2*summary(modelo6)$sigma),lty=2)
legend("topleft",legend=c("Modelo 6"),lty=1,col=1,lwd=2)

plot(fitted(modelo7),residuals(modelo7),ylim=c(-14000,12500),cex=1.5)
abline(h=c(-2*summary(modelo7)$sigma,0,2*summary(modelo7)$sigma),lty=2)
legend("topleft",legend=c("Modelo 7"),lty=1,col=1,lwd=2)

#Predicciones para 02-1995 a 01-1996, modelos 1 a 7. Para modelos 4 y 6 es necesario exponenciar predicciones obtenidas en escala log
#y aplicar factor de corrección por transformación lognormal, es decir, /
predict1=predict(modelo1,newdata=list(t=tnuevo),interval="prediction") #pronóstico puntual y por I.P modelo 1
predict1=ts(predict1,freq=12,start=c(1995,2))
predict1
ytpron1=predict1[,1] #pronóstico puntual modelo 1

predict2=predict(modelo2,newdata=list(t=tnuevo),interval="prediction") #pronóstico puntual y por I.P modelo 2


predict2=ts(predict2,freq=12,start=c(1995,2))
predict2
ytpron2=predict2[,1] #pronóstico puntual modelo 2
#Para objetos nls, predict() sólo da predicciones puntuales sin sus intervalos

11
predict3=predict(modelo3,newdata=list(t=tnuevo),se.fit = TRUE,interval="prediction")
ytpron3=ts(predict3,freq=12,start=c(1995,2)) #pronóstico puntual modelo 3
ytpron3

predict4=exp(predict(modelo4,newdata=list(t=tnuevo),interval="prediction"))*exp(summary(modelo4)$sigma^2/2) #pronóstico puntual y por I.P modelo 4


predict4=ts(predict4,freq=12,start=c(1995,2))
predict4
ytpron4=predict4[,1] #pronóstico puntual modelo 4

predict5=predict(modelo5,newdata=list(t=tnuevo),interval="prediction")
ytpron5=ts(predict5,freq=12,start=c(1995,2)) #pronóstico puntual modelo 5
ytpron5

predict6=exp(predict(modelo6,newdata=list(t=tnuevo),interval="prediction"))*exp(summary(modelo6)$sigma^2/2) #pronóstico puntual y por I.P modelo 6


predict6=ts(predict6,freq=12,start=c(1995,2))
predict6
ytpron6=predict6[,1] #pronóstico puntual modelo 6

predict7=predict(modelo7,newdata=list(t=tnuevo),interval="prediction")
ytpron7=ts(predict7,freq=12,start=c(1995,2)) #pronóstico puntual modelo 7
ytpron7
> predict1
fit lwr upr
Feb 1995 183122.1 177578.5 188665.7
Mar 1995 183916.2 178371.7 189460.8
Apr 1995 184712.3 179166.9 190257.6
May 1995 185510.2 179963.9 191056.4
Jun 1995 186309.9 180762.8 191857.1
Jul 1995 187111.6 181563.5 192659.7
Aug 1995 187915.1 182366.2 193464.1
Sep 1995 188720.5 183170.6 194270.5
Oct 1995 189527.8 183977.0 195078.7
Nov 1995 190337.0 184785.2 195888.8
Dec 1995 191148.0 185595.2 196700.8
Jan 1996 191961.0 186407.2 197514.8

> predict2
fit lwr upr
Feb 1995 182621.5 177044.2 188198.9
Mar 1995 183403.2 177823.0 188983.5
Apr 1995 184186.7 178603.4 189769.9
May 1995 184971.8 179385.6 190558.1
Jun 1995 185758.8 180169.4 191348.2
Jul 1995 186547.4 180954.8 192140.1
Aug 1995 187337.9 181741.9 192933.8
Sep 1995 188130.0 182530.7 193729.4
Oct 1995 188923.9 183321.1 194526.8
Nov 1995 189719.6 184113.2 195326.0
Dec 1995 190517.0 184906.9 196127.1
Jan 1996 191316.1 185702.3 196930.0

> ytpron3
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1995 193072.0 194189.0 195312.5 196442.4 197578.9 198722.0 199871.6 201027.9 202191.0 203360.7 204537.2
1996 205720.5

> predict4
fit lwr upr
Feb 1995 178430.2 170042.3 187231.8
Mar 1995 179195.3 170749.2 188059.2
Apr 1995 179969.9 171463.4 188898.4
May 1995 180754.3 172185.1 189749.9
Jun 1995 181548.9 172914.6 190614.3
Jul 1995 182354.0 173652.1 191492.0
Aug 1995 183170.0 174397.8 192383.4
Sep 1995 183997.3 175152.1 193289.3
Oct 1995 184836.3 175915.1 194210.0
Nov 1995 185687.4 176687.1 195146.2
Dec 1995 186550.9 177468.4 196098.4
Jan 1996 187427.4 178259.2 197067.2

> ytpron5
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1995 177119.0 177777.2 178440.4 179108.9 179783.0 180462.8 181148.5 181840.4 182538.9 183244.0 183956.0
1996 184675.4

> predict6
fit lwr upr
Feb 1995 175546.9 163886.4 188037.2
Mar 1995 175938.6 164246.2 188463.5
Apr 1995 176323.1 164599.1 188882.2
May 1995 176700.2 164945.0 189293.3
Jun 1995 177070.0 165283.7 189696.7
Jul 1995 177432.2 165615.2 190092.2
Aug 1995 177786.8 165939.5 190479.9
Sep 1995 178133.7 166256.3 190859.6
Oct 1995 178472.8 166565.7 191231.2
Nov 1995 178804.2 166867.5 191594.7
Dec 1995 179127.5 167161.7 191949.9
Jan 1996 179442.9 167448.2 192296.8

> ytpron7
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1995 173180.1 173512.6 173837.2 174154.0 174462.7 174763.3 175055.7 175339.8 175615.6 175883.0 176141.8
1996 176392.1
>

12
#Cálculo de cobertura y amplitud media de los I.P en modelos 1, 2, 4 y 6
cobertura1=cobertura(real=ytf,LIP=predict1[,2],LSP=predict1[,3])
cobertura1
amplitud1=amplitud(LIP=predict1[,2],LSP=predict1[,3])
amplitud1
cobertura2=cobertura(real=ytf,LIP=predict2[,2],LSP=predict2[,3])
cobertura2
amplitud2=amplitud(LIP=predict2[,2],LSP=predict2[,3])
amplitud2

cobertura4=cobertura(real=ytf,LIP=predict4[,2],LSP=predict4[,3])
cobertura4
amplitud4=amplitud(LIP=predict4[,2],LSP=predict4[,3])
amplitud4

cobertura6=cobertura(real=ytf,LIP=predict6[,2],LSP=predict6[,3])
cobertura6
amplitud6=amplitud(LIP=predict6[,2],LSP=predict6[,3])
amplitud6

#Gráfico comparativo de pronósticos de los pronósticos puntuales


plot(ytf,type="b",col=1,pch=19,ylim=c(170000,210000),lwd=2,ylab="Ventas en dólares nominales",xaxt="n")
axis(1,at=time(ytf),labels=c("95.2","95.3","95.4","95.5","95.6","95.7","95.8","95.9","95.10","95.11","95.12","96.1"),cex.axis=0.8) #fechas en eje x
lines(ytpron1,col=2,pch=1,type="b",lwd=2)
lines(ytpron2,col=3,pch=2,type="b",lwd=2)
lines(ytpron3,col=4,pch=3,type="b",lwd=2)
lines(ytpron4,col=5,pch=4,type="b",lwd=2)
lines(ytpron5,col=6,pch=5,type="b",lwd=2)
lines(ytpron6,col=7,pch=6,type="b",lwd=2)
lines(ytpron7,col=8,pch=7,type="b",lwd=2)

legend("topleft",legend=c("Real","Modelo 1","Modelo 2","Modelo 3","Modelo 4","Modelo 5","Modelo 6","Modelo 7"),pch=c(19,1:7),col=c(1:8),lwd=2)

#precisión de los pronósticos puntuales


library(forecast)
accuracy(ytpron1,ytf)
accuracy(ytpron2,ytf)
accuracy(ytpron3,ytf)
accuracy(ytpron4,ytf)
accuracy(ytpron5,ytf)
accuracy(ytpron6,ytf)
accuracy(ytpron7,ytf)

#Tabla de medidas de precisión de pronósticos


comp=rbind(accuracy(ytpron1,ytf),accuracy(ytpron2,ytf),accuracy(ytpron3,ytf),accuracy(ytpron4,ytf),accuracy(ytpron5,ytf),accuracy(ytpron6,ytf),
accuracy(ytpron7,ytf))[,c(2,3,5)]
otros=rbind(c(amplitud1,cobertura1*100),c(amplitud2,cobertura2*100),c(NA,NA),c(amplitud4,cobertura4*100),c(NA,NA),c(amplitud6,cobertura6*100),
c(NA,NA))

tablaprecis=cbind(comp,otros)
rownames(tablaprecis)=c("Modelo 1","Modelo 2","Modelo 3","Modelo 4","Modelo 5","Modelo 6","Modelo 7")
colnames(tablaprecis)=c("RMSE","MAE","MAPE","AmplitudI.P","CoberturaI.P")
tablaprecis
> tablaprecis
RMSE MAE MAPE AmplitudI.P CoberturaI.P
Modelo 1 1574.683 1446.193 0.7695215 11097.20 100.00000
Modelo 2 1762.085 1571.037 0.8307251 11189.62 100.00000
Modelo 3 11693.661 11632.976 6.2024278 NA NA
Modelo 4 5107.763 4875.679 2.5843183 17946.15 100.00000
Modelo 5 7106.076 6861.300 3.6377692 NA NA
Modelo 6 10527.783 10137.592 5.3716201 24505.22 66.66667
Modelo 7 13195.022 12841.028 6.8102320 NA NA

13

También podría gustarte