Sunteți pe pagina 1din 5

1

Ejemplo datos NYSE_VOL.DAT


Considere la serie mensual sobre el volumen de acciones negociadas en

5000 6000
la Bolsa de Nueva York (se desconoce fecha de inicio) ilustrada en la

8
Figura 1 junto con su logaritmo natural.

7
4000

log(FSVOL)
FSVOL

6
3000
6000

5
2000
8
5000

4
1000
7

3
4000

0
6
FSVOL

FSVOL
0 100 200 300 400 500 0 100 200 300 400 500
3000

Time Time

5
2000

4
1000

1.0
3

8
0

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

6
0.5
residuals(modelo1)
Time Time

FSVOL
Figura 1. Volumen de acciones negociadas en Bolsa de Nueva York Izq. Serie en su escala

4
original; Der. Logaritmo natural de la serie

0.0

2
De la Figura 1 es claro que la varianza no es constante y que al parecer

-0.5

0
no hay patrones estacionales. Para modelar esta serie es necesario
0 100 200 300 400 500 0 100 200 300 400 500
analizar su logaritmo natural, y en esa escala observamos que la Time Time

tendencia pudiera ser una recta o una cbica. Figura 2. Serie real y su logaritmo natural, sus ajustes y serie de residuos del modelo 1
Se postulan inicialmente dos modelos. El primero es un modelo
multiplicativo y por tanto considera que la varianza no es constante en

5000 6000
la escala original pero constante en la escala logartmica. El segundo

3000
ignora el problema de varianza y slo trata de explicar la trayectoria de

2000
tendencia a travs de un modelo exponencial lineal:

residuals(modelo2)
4000
FSVOL
Modelo 1: log log , 0,

1000
3000
Modelo 2: , 0,

2000

0
Observe que en el modelo 1 el intercepto en la escala de los logaritmos

1000

-1000
naturales no es sino el logaritmo natural de ese parmetro. Esto

0
implica que en la escala sin transformacin el modelo es 0 100 200 300 400 500 0 100 200 300 400 500

con 0, . Luego, al estimar el modelo 1 por mnimos Time Time

cuadrados no se obtiene directamente la estimacin de sino de su


logaritmo natural. Respecto al modelo 2, supone como modelo auxiliar

6000
para inicializar sus parmetros al modelo multiplicativo dado por
, donde log log , log
4000
0, , con log . Si compara este modelo auxiliar con el
FSVOL

modelo 1 vemos que estos dos modelos son los mismos, pues podemos
2000

tomar con 0, . Por tanto las estimaciones de los


parmetros del modelo 1 sirven como valores iniciales de los
0

parmetros en la rutina de mnimos cuadrados no lineales a aplicar en


0 100 200 300 400 500
el ajuste del modelo 2. El ajuste se realiza con todos los datos, donde Time
542 observaciones. Ver programacin R ms adelante. Los
Figura 3. Serie real, ajustada y de residuos del modelo 2
resultados de estimacin se presentan a continuacin: De las Figuras 2 y 3 se concluye que hay carencia de ajuste debido a que
la curva ajustada se ubica muy por debajo o muy por encima de los
Tabla 1. Parmetros estimados en modelo 1
Parmetro Estimacin Error estndar | | | | valores reales por varios perodos consecutivos, es decir, las funciones
log 2.70940 0.0249 108.8079 2 10 de regresin no representan apropiadamente la media de la serie en el
0.01033 0.0001 129.9519 2 10 tiempo, especialmente en el modelo 2, donde se observa que los
0.2895 , 140314.7 , 142556.3 residuales permanecen por debajo de la media esperada de cero durante
Observacin: AIC y BIC calculados como exp
Ec. ajustada: exp 2.70940 exp 0.01033 exp 0.2895 /2
los primeros 400 perodos aproximadamente. La serie tambin presenta
variaciones cclicas no explicadas por estos modelos, observe las
Tabla 2. Parmetros estimados en modelo 2 deformaciones que sufre la trayectoria de la serie y de su logaritmo
Parmetro Estimacin Error estndar | | | | natural y el patrn de residuales que se configuran en forma de crestas
18.04635 1.8865 9.5663 2 10 u ondulaciones. Adems, es evidente que el supuesto de varianza
0.01027 0.0002 48.7736 2 10
339.7 , 115815.4 , 117665.7
constante para los errores de ajuste no se cumplen en el modelo 2
Observacin: AIC y BIC calculados como exp debido al incremento de la variabilidad en sus residuales a medida que
Ec. ajustada: 18.04635 exp 0.01027 aumenta el tiempo; para el modelo 1 no hay una violacin grave o
Como los modelos 1 y 2 ajustan a los datos en diferente escala, es significativa de este supuesto y adems sus residuos de ajuste tienen
necesario calcular las medidas de ajuste de manera que sean mejor centramiento alrededor de cero que en el modelo 2. Sin embargo,
comparables entre los dos modelos, y por ello no podemos usar los las medias de ajuste AIC y BIC parecen favorecer al modelo 2.
resultados que arrojan las funciones R AIC( ) y BIC( ), ni el valor de Considere ahora los siguientes dos modelos,
informado por la funcin summary( ). Para realizar una Modelo 3: log , 0,
comparacin apropiada se usarn AIC y BIC calculados como Modelo 4: , 0,
exp
exp log . Tenga en cuenta Las estimaciones de estos dos modelos se dan a continuacin
Tabla 3. Parmetros estimados en modelo 3
adems que debido al ajuste en escala logaritmo natural, en el modelo 1 Parmetro Estimacin Error estndar | | | |
calculamos exp log exp /2 , donde MSE es el error 3.09457 0.0429 72.1366 <2 10
0.00552 6.836 10 8.0734 4.5 10
cuadrtico medio del ajuste en escala logaritmo natural. exp /2 es
1.195 10 2.924 10 4.0874 5.0 10
denominado el factor de correccin por transformacin lognormal. -6.340 10 3.540 10 -1.7911 0.0738
0.248 , 151554.4, 156435.5
Observacin: AIC y BIC calculados como exp
Ec. ajustada: exp 3.09457 0.00552 1.195 10 6.34 10 exp 0.248 /2
2

Tabla 4. Parmetros estimados en modelo 4

5000 6000

5000 6000
Parmetro Estimacin Error estndar | | | | observado
ajuste modelo 1
observado
ajuste modelo 2
4.82096 0.5979 8.0630 4.86 10
-0.03713 0.0047 -7.9692 9.61 10

4000

4000
1.771 10 1.299 10 13.6339 2 10

FSVOL

FSVOL
3000

3000
-1.791 10 1.169 10 -15.3277 2 10
262.3 , 69332.9, 71565.91

2000

2000
Observacin: AIC y BIC calculados como exp

1000

1000
Ec. ajustada: exp 4.82096 0.03713 1.771 10 1.791 10
De nuevo, para comparar el ajuste se ha recurrido al clculo de AIC y

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

BIC versin exp exp log , de la Time Time

misma manera que se hizo en los modelos 1 y 2 y para el modelo 3


tambin se calculan los valores ajustados en la escala original como

6000

6000
observado observado
exp log exp /2 . ajuste modelo 3 ajuste modelo 4

5000

5000
4000

4000
FSVOL

FSVOL
5000 6000

2000 3000

2000 3000
8
7
4000

1000

1000
log(FSVOL)
FSVOL

6
3000

0
5
2000

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

Time Time
1000

Figura 6. Ajustes de los modelos 1 a 4


3
0

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

Time Time

1.0

3000
2000
0.5
residuals(modelo1)

residuals(modelo2)
8

1000
0.5

0.0
6
residuals(modelo3)

0
FSVOL

-0.5

-1000
0.0

Modelo 1 Modelo 2
2

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

Time Time
-0.5

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

3000
Time Time

Figura 4. Serie real y su logaritmo natural, sus ajustes y serie de residuos del modelo 3

2000
0.5
residuals(modelo3)

residuals(modelo4)
3000

1000
5000 6000

0.0
2000

0
residuals(modelo4)
4000
FSVOL

1000

-0.5
3000

-1000
Modelo 3 Modelo 4
2000

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

Time Time
1000

-1000
0

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

3000

Time Time
2000
0.5
residuals(modelo1)

residuals(modelo2)

1000
5000

0.0

0
3000

-0.5

-1000
FSVOL

Modelo 1 Modelo 2

3 4 5 6 7 8 0 1000 2000 3000 4000


1000

fitted(modelo1) fitted(modelo2)
0
-1000

3000

0 100 200 300 400 500

Time
2000

Figura 5. Serie real, ajustada y de residuos del modelo 4


0.5
residuals(modelo3)

residuals(modelo4)

1000

Compare ahora la calidad del ajuste de modelos 3 y 4 vs. modelos 1 y 2,


0.0

considere tanto las medidas de ajuste como las grficas de ajuste, en la


0

Figura 6 puede observar simultneamente estas grficas cul modelo


-0.5

parece explicar mejor a la serie?


-1000

Modelo 3 Modelo 4

3 4 5 6 7 8 0 1000 2000 3000

Considere de nuevo los residuos de los cuatro modelos cules modelos fitted(modelo3) fitted(modelo4)

presentan mejor comportamiento en estos residuales? hay algn Figura 7. Residuos de los modelos 1 a 4

patrn que no es posible explicar a travs de las funciones de regresin


propuestas? Vea en la Figura 7 las grficas de estos residuales.
3

Programa y salidas R originales


#Creando funcin usuario crit.inf.resid() para calcular . Sus argumentos son residuales para especificar
#la diferencia y n.par para especificar el nmero de parmetros del modelo; AIC es calculado por
#defecto. Vea ms adelante el uso de esta funcin 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 de archivo de texto local NYSE_VOL.dat
nyse_vol=read.table(file.choose(),header=T)
nyse_vol=ts(nyse_vol,frequency=1) #la serie no pudo crearse con frecuencia
#mensual pues se desconoce ao-mes de inicio
#Grficos de la serie y su logaritmo natural
plot(nyse_vol,lwd=3); plot(log(nyse_vol),lwd=3)

#AJUSTES USANDO TODOS LOS DATOS


t=1:length(nyse_vol) #Define variable t segn longitud de la serie

#AJUSTE MODELO LOG-LINEAL


modelo1=lm(log(nyse_vol)~t); summary(modelo1)

Call:
lm(formula = log(nyse_vol) ~ t)
Residuals:
Min 1Q Median 3Q Max
-0.66075 -0.19657 -0.02112 0.18871 1.03309

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.709e+00 2.490e-02 108.8 <2e-16 ***
t 1.033e-02 7.946e-05 130.0 <2e-16 ***
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

Residual standard error: 0.2895 on 540 degrees of freedom


Multiple R-squared: 0.969, Adjusted R-squared: 0.969
F-statistic: 1.689e+04 on 1 and 540 DF, p-value: < 2.2e-16
logyhat1=ts(fitted(modelo1),freq=1) #serie de ajustes modelo 1 escala log
#Ajustes en la escala original en el modelo log-lineal: /
yhat1=exp(logyhat1)*exp(summary(modelo1)$sigma^2/2)

#Grfico serie original, serie de logaritmos, sus ajustes y residuos de ajuste


plot(nyse_vol)
lines(yhat1,col=4,lwd=2) #coloca la estimacin sobre los datos, en la escala de estos
plot(log(nyse_vol),ylab="log(FSVOL)")
lines(logyhat1,col=4,lwd=2) #coloca la recta ajustada sobre grfico de log de
#los datos
plot.ts(residuals(modelo1),col=2) #grfico de serie de los residuales de ajuste
#en escala log
abline(h=0) #lnea horizontal pasando por cero
plot(fitted(modelo1),residuals(modelo1)) #Grfico de residuos de ajuste vs. valores ajustados
abline(h=0)


#Clculo de AIC y BIC como . En el modelo log-lineal es necesario usar seudo-residuos
seudores1=nyse_vol-yhat1 #seudo-residuos del modelo 1
aic1=exp(crit.inf.resid(residuales=seudores1,n.par=2)); aic1
bic1=exp(crit.inf.resid(residuales=seudores1,n.par=2,AIC="FALSE")); bic1
#AJUSTE MODELO EXPONENCIAL - LINEAL
#Valores estimados de parmetros en modelo log-lineal se usan como valores iniciales de parmetros del modelo 2
estim=coef(modelo1) #vector de parmetros estimados del modelo 1
modelo2=nls(nyse_vol~beta0*exp(beta1*t),start=list(beta0=exp(estim[1]),beta1=estim[2]))
summary(modelo2)

Formula: nyse_vol ~ beta0 * exp(beta1 * t)


Parameters:
Estimate Std. Error t value Pr(>|t|)
beta0 1.805e+01 1.886e+00 9.566 <2e-16 ***
beta1 1.027e-02 2.107e-04 48.774 <2e-16 ***
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error: 339.7 on 540 degrees of freedom
4

Number of iterations to convergence: 5


Achieved convergence tolerance: 5.805e-06
yhat2=ts(fitted(modelo2),freq=1) #Serie valores ajustados modelo 2
#Grfico de la serie, su ajuste y residuos de ajuste
plot(nyse_vol)
lines(yhat2,col=4,lwd=2) #coloca la estimacin sobre los datos, en la escala de estos
plot.ts(residuals(modelo2),col=2) #Grfico de residuos de ajuste vs. tiempo
abline(h=0)
plot(fitted(modelo2),residuals(modelo2)) #Grfico de residuos de ajuste vs. valores ajustados
abline(h=0)


#Clculo de AIC y BIC como
aic2=exp(crit.inf.resid(residuales=residuals(modelo2),n.par=2)); aic2
bic2=exp(crit.inf.resid(residuales=residuals(modelo2),n.par=2,AIC="FALSE")); bic2
#AJUSTE MODELO LOG-CBICO
modelo3=lm(log(nyse_vol)~t+I(t^2)+I(t^3)); summary(modelo3)

Call:
lm(formula = log(nyse_vol) ~ t + I(t^2) + I(t^3))

Residuals:
Min 1Q Median 3Q Max
-0.58771 -0.18250 -0.00678 0.17638 0.85556

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.095e+00 4.290e-02 72.137 < 2e-16 ***
t 5.519e-03 6.836e-04 8.073 4.50e-15 ***
I(t^2) 1.195e-05 2.924e-06 4.087 5.03e-05 ***
I(t^3) -6.340e-09 3.540e-09 -1.791 0.0738 .
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error: 0.248 on 538 degrees of freedom
Multiple R-squared: 0.9773, Adjusted R-squared: 0.9772
F-statistic: 7737 on 3 and 538 DF, p-value: < 2.2e-16
logyhat3=ts(fitted(modelo3),freq=1) #Valores ajustados escala log modelo 3

#Ajustes en la escala original en el modelo log-lineal: /


yhat3=exp(logyhat3)*exp(summary(modelo3)$sigma^2/2)
#Grfico serie original, serie de logaritmos, sus ajustes y residuos de ajuste
plot(nyse_vol)
lines(yhat3,col=4,lwd=2) #coloca la estimacin sobre los datos, en la escala de estos
plot(log(nyse_vol),ylab="log(FSVOL)")
lines(logyhat3,col=4,lwd=2) #coloca la curva ajustada sobre grfico de log de
#los datos
plot.ts(residuals(modelo3),col=2) #grfico de serie de los residuales de ajuste
#en escala log
abline(h=0) #lnea horizontal pasando por cero
plot(fitted(modelo3),residuals(modelo3)) #Grfico de residuos de ajuste vs. valores ajustados
abline(h=0)


#Clculo de AIC y BIC como . En el modelo log-cbico es necesario usar los seudo-residuos
seudores3=nyse_vol-yhat3 #seudo-residuos del modelo 3
aic3=exp(crit.inf.resid(residuales=seudores3,n.par=4)); aic3
bic3=exp(crit.inf.resid(residuales=seudores3,n.par=4,AIC="FALSE")); bic3
#AJUSTE MODELO EXPONENCIAL CBICO
#Valores estimados parmetros modelo log-cbico #se usan como valores iniciales de parmetros en modelo 4
estim3=coef(modelo3) #vector de parmetros estimados del modelo 3
modelo4=nls(nyse_vol~exp(beta0+beta1*t+beta2*I(t^2)+beta3*I(t^3)),
start=list(beta0=estim3[1],beta1=estim3[2],beta2=estim3[3],beta3=estim3[4]))
summary(modelo4)

Formula: nyse_vol ~ exp(beta0 + beta1 * t + beta2 * I(t^2) + beta3 * I(t^3))

Parameters:
Estimate Std. Error t value Pr(>|t|)
beta0 4.821e+00 5.979e-01 8.063 4.86e-15 ***
beta1 -3.713e-02 4.659e-03 -7.969 9.61e-15 ***
beta2 1.771e-04 1.299e-05 13.634 < 2e-16 ***
beta3 -1.791e-07 1.169e-08 -15.328 < 2e-16 ***
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

Residual standard error: 262.3 on 538 degrees of freedom

Number of iterations to convergence: 12


Achieved convergence tolerance: 7.981e-06
yhat4=ts(fitted(modelo4),freq=1) #Serie valores ajustados modelo 4
5

#Grfico de la serie, su ajuste y residuos de ajuste


plot(nyse_vol)
lines(yhat4,col=4,lwd=2) #coloca la curva ajustada sobre grfico de los datos
plot.ts(residuals(modelo4),col=2) #grfico de serie de los residuales de ajuste
abline(h=0) #lnea horizontal pasando por cero
plot(fitted(modelo4),residuals(modelo4))
abline(h=0) #lnea horizontal pasando por cero


#Clculo de AIC y BIC como
aic4=exp(crit.inf.resid(residuales=residuals(modelo4),n.par=4)); aic4
bic4=exp(crit.inf.resid(residuales=residuals(modelo4),n.par=4,AIC="FALSE")); bic4
#COMPARANDO LOS GRFICOS DE AJUSTES DE LOS CUATRO MODELOS, EN ESCALA DE LOS DATOS
layout(rbind(c(1,1,2,2),c(3,3,4,4))) #Ventana grfica es dividida en cuatro celdas segn una matriz de 2x2
plot(nyse_vol,lwd=2)
lines(yhat1,col="red",lty=2,lwd=2)
legend("topleft",legend=c("observado","ajuste modelo 1"),col=c("black","red"),lty=1:2,lwd=2)
plot(nyse_vol,lwd=2)
lines(yhat2,col="blue",lty=2,lwd=2)
legend("topleft",legend=c("observado","ajuste modelo 2"),
col=c("black","blue"),lty=1:2,lwd=2)
plot(nyse_vol,lwd=2)
lines(yhat3,col="orange",lty=2,lwd=2)
legend("topleft",legend=c("observado","ajuste modelo 3"),
col=c("black","orange"),lty=1:2,lwd=2)
plot(nyse_vol,lwd=2)
lines(yhat4,col="violet",lty=2,lwd=2)
legend("topleft",legend=c("observado","ajuste modelo 4"),
col=c("black","violet"),lty=1:2,lwd=2)
#COMPARANDO LOS RESIDUALES EN ESCALA DE AJUSTE
#serie de residuales de ajuste
layout(rbind(c(1,1,2,2),c(3,3,4,4))) #Ventana grfica es dividida en cuatro celdas segn una matriz de 2x2
plot.ts(residuals(modelo1),col=2)
abline(h=0)
legend("bottomleft",legend="Modelo 1")
plot.ts(residuals(modelo2),col=2)
abline(h=0)
legend("bottomleft",legend="Modelo 2")
plot.ts(residuals(modelo3),col=2)
abline(h=0)
legend("bottomleft",legend="Modelo 3")
plot.ts(residuals(modelo4),col=2)
abline(h=0)
legend("bottomleft",legend="Modelo 4")

#residuales de ajuste vs. valores ajustados (en escala de ajuste)


layout(rbind(c(1,1,2,2),c(3,3,4,4))) #Ventana grfica es dividida en cuatro celdas segn una matriz de 2x2
plot(fitted(modelo1),residuals(modelo1))
abline(h=0)
legend("bottomleft",legend="Modelo 1")
plot(fitted(modelo2),residuals(modelo2))
abline(h=0)
legend("bottomleft",legend="Modelo 2")
plot(fitted(modelo3),residuals(modelo3))
abline(h=0)
legend("bottomleft",legend="Modelo 3")
plot(fitted(modelo4),residuals(modelo4))
abline(h=0)
legend("bottomleft",legend="Modelo 4")

S-ar putea să vă placă și