7/30/2019 Descomposición series de tiempo http://slidepdf.com/reader/full/descomposicion-series-de-tiempo 1/55 Curso de Econometría de Series de Tiempo Facultad de Economía Universidad Nacional Autónoma de México Profesor: Juan Francisco Islas Adjunto: Miguel Heras Ciudad Universitaria, Agosto 2012 Descomposición de Series de Tiempo
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
* Suavizamiento mediante Promedios Móviles Simples 3MA y 5MAinsheet liters using "c:\mwhdata\shampoo.csv", cleargen month=.for num 1 13 25:replace month=1 in Xfor num 2 14 26:replace month=2 in Xfor num 3 15 27:replace month=3 in Xfor num 4 16 28:replace month=4 in Xfor num 5 17 29:replace month=5 in X
for num 6 18 30:replace month=6 in Xfor num 7 19 31:replace month=7 in X
for num 8 20 32:replace month=8 in Xfor num 9 21 33:replace month=9 in Xfor num 10 22 34:replace month=10 in Xfor num 11 23 35:replace month=11 in Xfor num 12 24 36:replace month=12 in X
Cualquier combinación de promedios móviles simples puede ser utilizada paraformar un promedio móvil doble (o compuesto) y al modificarse los ponderadoresse obtiene una serie de promedios móviles ponderados.Por ejemplo, MA 3x3 es equivalente a MA 5 con ponderadores:
Algunas funciones de ponderación en promedios móviles:
Descomposición AditivaPaso 2: Eliminación de Tendencia. Al restar el componentetendencia-ciclo de los datos originales, quedando los términos deestacionalidad e irregularidad.
t t t t E S T Y +=−
- 2 0
0
2 0
4 0
6 0
8 0
T o t a l s a l e s
1975m1 1980m1 1985m1 1990m1 1995m1Month
hsales ma: x(t)= ma12: window(1 1 0)
detrend
original, trend-cycle & de-trended housing sales series
Descomposición AditivaPaso 3: Índice estacional. Una vez removido el componentetendencia-ciclo, bajo la descomposición aditiva se asume que elcomponente estacional es constante año con año. De acuerdo al
conjunto de datos considerado se requiere calcular un valor paracada mes.
El índice estacional se construye promediando las observaciones sintendencia correspondientes a cada mes para todos los años
Paso 3: Índice estacional. Una vez removido el componentetendencia-ciclo, bajo la descomposición multiplicativa se asume que elcomponente estacional es constante año con año. De acuerdo alconjunto de datos considerado se requiere calcular un valor para cadames.
El índice estacional se construye promediando las observaciones sintendencia correspondientes a cada mes para todos los años
* Promedios móviles ponderadosinsheet y using "C:\mwhdata\shampoo.csv", cleargen t=_ntsset tlabel var y "liters"scatter y t* Ponderadores MA 19 bajo la función cuárticafor num 0/9: scalar qX=(1-(X/9)^2)^2scalar sumaq=q9+q8+q7+q6+q5+q4+q3+q2+q1+q0+q1+q2+q3+q4+q5+q6+q7+q8+q9
for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXgen ma19w=.for num 10/27: replace ma19w=a9*y[X-9]+a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8]+a9*y[X+9]in Xtwoway (scatter y t) (line ma19w t)* Ajuste de Observaciones de extrema izquierda* Observación 1
scalar sumaq=q0+q1+q2+q3+q4+q5+q6+q7+q8+q9for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 1: replacema19w=a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8]+a9*y[X+9] in X* Observación 2scalar sumaq=q1+q0+q1+q2+q3+q4+q5+q6+q7+q8+q9for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aX
for num 2: replace ma19w=a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8]+a9*y[X+9] in X* Observación 3scalar sumaq=q2+q1+q0+q1+q2+q3+q4+q5+q6+q7+q8+q9for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 3: replace ma19w=a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8]+a9*y[X+9] in X
* Observación 4scalar sumaq=q3+q2+q1+q0+q1+q2+q3+q4+q5+q6+q7+q8+q9for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 4: replace ma19w=a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8]+a9*y[X+9] in X* Observación 5scalar sumaq=q4+q3+q2+q1+q0+q1+q2+q3+q4+q5+q6+q7+q8+q9for num 0/9: scalar aX=qX/sumaq
for num 0/9: display aXfor num 5: replace ma19w=a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8]+a9*y[X+9] in X* Observación 6scalar sumaq=q5+q4+q3+q2+q1+q0+q1+q2+q3+q4+q5+q6+q7+q8+q9for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 6: replace ma19w=a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8]+a9*y[X+9] in X
* Observación 7scalar sumaq=q6+q5+q4+q3+q2+q1+q0+q1+q2+q3+q4+q5+q6+q7+q8+q9for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 7: replace ma19w=a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8]+a9*y[X+9] in X* Observación 8scalar sumaq=q7+q6+q5+q4+q3+q2+q1+q0+q1+q2+q3+q4+q5+q6+q7+q8+q9for num 0/9: scalar aX=qX/sumaq
for num 0/9: display aXfor num 8: replace ma19w=a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8]+a9*y[X+9] in X* Observación 9scalar sumaq=q8+q7+q6+q5+q4+q3+q2+q1+q0+q1+q2+q3+q4+q5+q6+q7+q8+q9for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 9: replace ma19w=a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8]+a9*y[X+9] in X
* Ajuste de Observaciones de extrema derecha* Observación 28scalar sumaq=q9+q8+q7+q6+q5+q4+q3+q2+q1+q0+q1+q2+q3+q4+q5+q6+q7+q8for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 28: replace ma19w=a9*y[X-9]+a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7]+a8*y[X+8] in X* Observación 29scalar sumaq=q9+q8+q7+q6+q5+q4+q3+q2+q1+q0+q1+q2+q3+q4+q5+q6+q7
for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 29: replace ma19w=a9*y[X-9]+a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6]+a7*y[X+7] in X* Observación 30scalar sumaq=q9+q8+q7+q6+q5+q4+q3+q2+q1+q0+q1+q2+q3+q4+q5+q6for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 30: replace ma19w=a9*y[X-9]+a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-
2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5]+a6*y[X+6] in X* Observación 31scalar sumaq=q9+q8+q7+q6+q5+q4+q3+q2+q1+q0+q1+q2+q3+q4+q5for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 31: replace ma19w=a9*y[X-9]+a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4]+a5*y[X+5] in X* Observación 32scalar sumaq=q9+q8+q7+q6+q5+q4+q3+q2+q1+q0+q1+q2+q3+q4
for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 32: replace ma19w=a9*y[X-9]+a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3]+a4*y[X+4] in X* Observación 33scalar sumaq=q9+q8+q7+q6+q5+q4+q3+q2+q1+q0+q1+q2+q3for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 33: replace ma19w=a9*y[X-9]+a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-
2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2]+a3*y[X+3] in X
* Observación 34scalar sumaq=q9+q8+q7+q6+q5+q4+q3+q2+q1+q0+q1+q2for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 34: replace ma19w=a9*y[X-9]+a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1]+a2*y[X+2] in X* Observación 35scalar sumaq=q9+q8+q7+q6+q5+q4+q3+q2+q1+q0+q1for num 0/9: scalar aX=qX/sumaq
for num 0/9: display aXfor num 35: replace ma19w=a9*y[X-9]+a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X]+a1*y[X+1] in X* Observación 36scalar sumaq=q9+q8+q7+q6+q5+q4+q3+q2+q1+q0for num 0/9: scalar aX=qX/sumaqfor num 0/9: display aXfor num 36: replace ma19w=a9*y[X-9]+a8*y[X-8]+a7*y[X-7]+a6*y[X-6]+a5*y[X-5]+a4*y[X-4]+a3*y[X-3]+a2*y[X-2]+a1*y[X-1]+a0*y[X] in X
* Gráfica final Serie Original y Serie MA19 Ponderadatwoway (scatter y t) (line ma19w t), title("Weighted MA19 smoother") xtitle("Month") ytitle("Total sales(liters)") saving("C:\mwhdata\AvMA19.gph", replace)* Listado de Observaciones Serie Original y Serie MA19 Ponderadalist
* Función de Ponderadores MA 19 bajo la función cuárticaclearset obs 19gen j=_n-10gen double q=(1-(j/9)^2)^2sum qgen double a=q/r(sum)list, sumline a j, title("Función de Ponderadores MA 19 bajo función cuártica") xtitle("Término") ytitle("Ponderador")
saving("C:\mwhdata\Weights.gph", replace)
* Función de Ponderadores bajo la función cuártica para el Ajuste (MA 10) de la Observación 36 de la serie MA19clearset obs 10gen j=_n-10gen double q=(1-(j/9)^2)^2sum q
gen double a=q/r(sum)list, sumline a j, title("Función de Ponderadores para la Observación 36") xtitle("Término") ytitle("Ponderador")saving("C:\mwhdata\Weights36.gph", replace)
* Suavizamiento por Regresión Localinsheet y using "C:\mwhdata\shampoo.csv", cleargen t=_ntsset tlabel var y "liters"gen yreg=.
* Observación 22* Paso 1 Identificar las observaciones de la muestra a considerarscatter y t, xline(13 31)gen j=.replace j=_n-22 in 13/31* Paso 2 Definición de Ponderadoresgen double q=.
replace q=(1-(j/9)^2)^2 in 13/31sum qgen double a=q/r(sum)* Paso 3 Estimación por Mínimos Cuadrados Ponderadosregress y t in 13/31 [aw=a]predict yhattwoway (scatter y t, xline(13 31) mlabel(t)) (line yhat t) (scatter yhat t if t==22,mcolor(red) msize(large))
replace yreg=yhat[22] in 22drop j q a yhat* Paso 4 Repetir para las observaciones 10 a 21 y 23 a 27 y ajustes restantes para trazar* curva de tendencia-ciclo estimada a partir de los puntos locales de las respectivas* regresiones.
* Descomposición Aditiva* Paso 0 Preparar la Serie de Tiempo para su Descomposiciónlabel drop _allinsheet hsales using "c:\mwhdata\hsales.csv", cleargen t=.replace t=ym(1973,1) in 1for num 2/275: replace t=t[X-1]+1 in Xformat t %tm
label var t "Month"tsset t* Paso 1 Estimar Tendencia-Ciclo* 2x12 MA smoother for Housing sales data* Serie de Promedios Móviles Centrados 2x12 MA* Se genera la serie MA12tssmooth ma ma12=hsales, window(6 1 5)graph twoway (line hsales t, lcolor(yellow)) (line ma12 t, lcolor(black)), title("12 MAsmoother (uncentered)") ytitle("Total sales") saving("c:\mwhdata\hsales12MA.gph",replace)* Se aplican promedios móviles MA2 a la serie MA12 obtenidatssmooth ma ma2ma12=ma12, window(1 1 0)graph twoway (line hsales t, lcolor(yellow)) (line ma2ma12 t, lcolor(black)),title("Centered 12 MA smoother") ytitle("Total sales")saving("c:\mwhdata\hsales2x12MA.gph",replace)* Paso 2 Eliminar Tendencia-Ciclo
* Paso 3 Obtener el componente de Estacionalidadgen obs=_ngen mes=""replace mes="Ene" if mod(obs,12)==1replace mes="Feb" if mod(obs,12)==2replace mes="Mar" if mod(obs,12)==3replace mes="Abr" if mod(obs,12)==4replace mes="May" if mod(obs,12)==5
replace mes="Jun" if mod(obs,12)==6replace mes="Jul" if mod(obs,12)==7replace mes="Ago" if mod(obs,12)==8replace mes="Sept" if mod(obs,12)==9replace mes="Oct" if mod(obs,12)==10replace mes="Nov" if mod(obs,12)==11replace mes="Dic" if mod(obs,12)==0gen month=.replace month=1 if mes=="Ene"
replace month=2 if mes=="Feb"replace month=3 if mes=="Mar"replace month=4 if mes=="Abr"replace month=5 if mes=="May"replace month=6 if mes=="Jun"replace month=7 if mes=="Jul"replace month=8 if mes=="Ago"replace month=9 if mes=="Sept"replace month=10 if mes=="Oct"
replace season=-7.077898274 if month==1replace season=-1.293995899 if month==2replace season=8.977742568 if month==3replace season=7.868356705 if month==4replace season=7.246618354 if month==5replace season=4.677504000 if month==6replace season=1.483531288 if month==7replace season=2.823056428 if month==8replace season=-1.488043578 if month==9
replace season=-2.557064720 if month==10replace season=-9.138068655 if month==11replace season=-12.443181645 if month==12tsset tgraph twoway (line season t), title("Estacionalidad") saving("c:\mwhdata\season.gph",replace)* Paso 4 Obtener el componente de Irregularidadgen double irreg=.replace irreg=hsales-season-ma2ma12tsset t
graph twoway (line irreg t), title("Irregularidad") saving("c:\mwhdata\irregular.gph",replace)* Gráfica del Índice de Estacionalidadcollapse (mean) detrend, by(mes)gen month=.replace month=1 if mes=="Ene"replace month=2 if mes=="Feb"replace month=3 if mes=="Mar"replace month=4 if mes=="Abr"replace month=5 if mes=="May"
replace month=6 if mes=="Jun"replace month=7 if mes=="Jul"replace month=8 if mes=="Ago"replace month=9 if mes=="Sept"replace month=10 if mes=="Oct"replace month=11 if mes=="Nov"replace month=12 if mes=="Dic"label values month monthsort month
line detrend month, title("Índice Estacional") xlabel(1(1)12) saving("c:\mwhdata\seasonindex.gph",replace)
* Descomposición Multiplicativainsheet passengers using "c:\mwhdata\airline.csv", clear* Paso 0 Preparar la Serie de Tiempo para su Descomposiciónlabel drop _allgen t=.replace t=ym(1949,1) in 1for num 2/96: replace t=t[X-1]+1 in Xformat t %tmlabel var t "Month"
tsset t* Paso 1 Estimar Tendencia-Ciclo* 2x12 MA smoother* Serie de Promedios Móviles Centrados 2x12 MA* Se genera la serie MA12tssmooth ma ma12=passengers, window(6 1 5)graph twoway (line passengers t, lcolor(yellow)) (line ma12 t, lcolor(black)), title("12 MA smoother(uncentered)") ytitle("passenger traffic (in thousands)") saving("c:\mwhdata\passengers12MA.gph",replace)* Se aplican promedios móviles MA2 a la serie MA12 obtenida
tssmooth ma ma2ma12=ma12, window(0 1 1)graph twoway (line passengers t, lcolor(yellow)) (line ma2ma12 t, lcolor(black)), title("Centered 12 MAsmoother") ytitle("Passengers (thousands)") saving("c:\mwhdata\passeng2x12MA.gph",replace)* Paso 2 Cálculo de la razón porcentual datos a promedio móvilgen double ratio=passengers*100/ma2ma12graph twoway (line passengers t, lcolor(yellow)) (line ma2ma12 t, lcolor(black)) (line ratio t, lcolor(red)),title("original, trend-cycle & detrended passenger travel series") ytitle("Passengers (thousands)")saving("c:\mwhdata\detrendedMA2x12mult.gph",replace)
gen obs=_ngen mes=""replace mes="Ene" if mod(obs,12)==1replace mes="Feb" if mod(obs,12)==2replace mes="Mar" if mod(obs,12)==3replace mes="Abr" if mod(obs,12)==4replace mes="May" if mod(obs,12)==5replace mes="Jun" if mod(obs,12)==6replace mes="Jul" if mod(obs,12)==7
replace mes="Ago" if mod(obs,12)==8replace mes="Sept" if mod(obs,12)==9replace mes="Oct" if mod(obs,12)==10replace mes="Nov" if mod(obs,12)==11replace mes="Dic" if mod(obs,12)==0gen month=.replace month=1 if mes=="Ene"replace month=2 if mes=="Feb"replace month=3 if mes=="Mar"
replace month=4 if mes=="Abr"replace month=5 if mes=="May"replace month=6 if mes=="Jun"replace month=7 if mes=="Jul"replace month=8 if mes=="Ago"replace month=9 if mes=="Sept"replace month=10 if mes=="Oct"replace month=11 if mes=="Nov"replace month=12 if mes=="Dic"
replace season=90.797389974 if month==1replace season=90.438392078 if month==2replace season=102.947138301 if month==3replace season=98.663833075 if month==4replace season=97.402091271 if month==5replace season=109.434043862 if month==6replace season=120.609398326 if month==7replace season=119.058600173 if month==8replace season=105.526891616 if month==9
replace season=91.695788069 if month==10replace season=79.634994776 if month==11replace season=90.229136994 if month==12tsset tgraph twoway (line season t), title("Estacionalidad") saving("c:\mwhdata\seasonmult.gph",replace)* Paso 4 Obtener el componente de Irregularidadgen double irreg=.replace irreg=passengers/(season*ma2ma12)tsset t
graph twoway (line irreg t), title("Irregularidad") saving("c:\mwhdata\irregularmult.gph",replace)* Gráfica del Índice de Estacionalidadcollapse (mean) ratio, by(mes)gen month=.replace month=1 if mes=="Ene"replace month=2 if mes=="Feb"replace month=3 if mes=="Mar"replace month=4 if mes=="Abr"replace month=5 if mes=="May"
replace month=6 if mes=="Jun"replace month=7 if mes=="Jul"replace month=8 if mes=="Ago"replace month=9 if mes=="Sept"replace month=10 if mes=="Oct"replace month=11 if mes=="Nov"replace month=12 if mes=="Dic"label values month monthsort month
line ratio month, title("Índice Estacional") xlabel(1(1)12) saving("c:\mwhdata\seasonindexmult.gph",replace)