Modelo autoregresivo lineal de 1 er orden con R

Una de las cosas más fascinantes que se puede abordar hoy día en un salón de clase son los problemas complejos asistidos por ordenador. Los modelos autoregresivos lineales de 1 er orden constituyen un ejemplo. Si se trabaja con series de tiempo y tres variables correlacionadas, hay que encontrar la manera de generar los respectivos residuales. Si lo hacemos para un día, podemos tenerlos para todos los días que se deseen. Dadas las matrices de covarianza para lag 0 y lag 1 (respectivamente M0 y M1), se requiere encontrar previamente dos matrices, A y B (que se encuentran en la ecuación de generación de residuales y que no se considera aquí), que vienen determinadas por:

A = M1.M0-1

C.L.CT = Z = B.BT = M0 – M1.M0-1.M1T

donde -1 y T se refieren, respectivamente, a la inversa y a la transpuesta de una matriz. No obstante, para la segunda ecuación tienen que decirme, adicionalmente, como se determina B; no B.BT. Para ello se requiere análisis espectral donde se sabe que B.BT = Z es simétrica, con coeficientes reales, por lo que admite una descomposición en matrices de autovectores (C) y autovalores (L) con coeficientes reales (Z = C.L.CT). Finalmente, también tenemos que saber que B = Z1/2 y que Z1/2 = C.L1/2.CT (1/2 hace referencia a la raíz cuadrada de una matriz).

Si asumimos como válidas las matrices de covarianza que tenemos a continuación (Richardson, 1981):

Para lag 0 (M0):

1.000  0.697  0.249
0.697  1.000 -0.192
0.249 -0.192  1.000 

Para lag 1 (M1):

0.670  0.632  0.058
0.532  0.700 -0.075
0.102 -0.091  0.240 

Entonces, con el lenguaje R, la matriz A queda fácilmente determinada con:

M0<- matrix(data=0, 3, 3)
data.entry(M0) # para editar
M1<-matrix(data=0, 3, 3)
data.entry(M1) # para editar
A<- M1%*%solve(M0)

Para la matriz B tendremos que trabajar un poco más:

Z<-M0 - M1 %*% solve(M0) %*% t(M1)
Int<- eigen(Z)
C<-Int[[2]]
lraiz<-sqrt(Int[[1]])
Lraiz<-matrix(data=0, 3, 3)
for(i in 1:3) Lraiz[i,i] <-lraiz[i]
B<-C %*% Lraiz %*% t(C)

La obtención de las matrices A y B ya nos permitiría implementar el modelo de generación de residuales, inclusive, en una hoja de cálculo.

Estos són los resultados obtenidos con R:

> A
[,1]       [,2]       [,3]
[1,] 0.43701374  0.3298025 0.01250566
[2,] 0.05659762  0.6680735 0.03917730
[3,] 0.21262845 -0.2110682 0.14653042
> B
[,1]       [,2]       [,3]
[1,] 0.6618472  0.1879894  0.1570305
[2,] 0.1879894  0.6767792 -0.1086588
[3,] 0.1570305 -0.1086588  0.9420574
>

idénticos a los obtenidos con C++, lo que me permite corrobar, de manera adicional, que el programa hecho en C++ funciona adecuadamente.

Esta entrada fue publicada en Lenguaje R. Guarda el enlace permanente.

2 respuestas a Modelo autoregresivo lineal de 1 er orden con R

  1. Pingback: Generación de residuales con R en un modelo autoregresivo lineal de 1 er orden |

  2. Pingback: Datos sintéticos diarios de temperatura máxima, temperatura mínima y radiación solar |

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s