Generación de residuales con R en un modelo autoregresivo lineal de 1 er orden

En este artículo:

Modelo autoregresivo lineal de 1 er orden con R

exploramos la manera de como determinar las matrices A y B para generar los residuales, en un modelo autoregresivo lineal de 1 er orden con tres variables correlacionadas, pero no incluimos la expresión correspondiente a la generación de los respectivos residuales. Esta es la expresión:

Xp,i(j) = A.Xp,i-1(j) + B.ep,i(j)

donde Xp,i(j) y Xp,i-1(j) son matrices 3×1 respectivamente para los días i e i-1 del año p, cuyos elementos son residuales de las variables con j igual a 1, 2 ó 3 y ep,i(j) es una matriz 3×1 de componentes aleatorios independientes que están normalmente distribuidos; con media cero y varianza 1. Si salvamos nuestro espacio de trabajo al salir de R, las matrices A y B estarán siempre disponibles cada vez que lo deseemos, por tanto, ahora sólo tendremos que preocuparnos de como generar los ep,i(j). Esto se logra en R con la función rnorm() que, por defecto, produce números pseudoaleatorios con media cero y varianza 1. Para 25 años de datos, entre 1970 y 1994, necesitaríamos 9131 valores por lo que esa es nuestra meta individual de generación. Procedemos con cada una de las variables guardándolas, provisionalmente, en x1, x2 y x2 respectivamente (j= 1, 2 y 3).

x1 <- rnorm(9131)
x2 <- rnorm(9131)
x3 <- rnorm(9131)

Como en realidad necesitamos 9131 matrices 3×1, entonces vamos a crear una matriz de 9131×3 y almacenarlos allí:

e <- matrix(data=0, 9131, 3)
for(i in 1:9131) e[i,1]<- x1[i]
for(i in 1:9131) e[i,2]<- x2[i]
for(i in 1:9131) e[i,3]<- x3[i]

Ahora necesitamos una matriz para los residuales, asignándole como primer elemento la primera fila de e:

X <- matrix(data=0, 9131, 3)
X[1,]<- e[1,] 

Para obtener todos los residuales:

for(i in 2:9131) X[i,]<-A %*% X[i-1,]+B %*% e[i,] 

y para imprimirlos a un archivo, en nuestro espacio de trabajo [verificar con getwd()], empleamos por ejemplo:

write.table(X, "X.out", row.names=FALSE, col.names=FALSE)

Esto nos permitió corroborar posteriormente que, efectivamente, las series de residuales tienen los coeficientes de correlación (autocorrelación y correlación cruzada) que presentan las matrices de covarianza usadas en la generación. Es de hacer notar que las matrices de residuales (X) y de componentes aleatorios independientes (e) fueron interpretados correctamente como vectores columnas (3×1) en:

for(i in 2:9131) X[i,]<-A %*% X[i-1,]+B %*% e[i,] 

a pesar de que en su definición original representaban vectores fila 1×3. La multiplicación de matrices 3×3 por 1×3 no tiene sentido por lo que R asumió, por defecto, la conformidad de la multiplicación de matrices forzándola a 3×3 por 3×1; tal como era requerido.

Con los residuales ya obtenidos, las variables individuales diarias se obtienen multiplicándolas, por ejemplo, por las desviaciones estándares mensuales y sumándoles las medias mensuales.

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

3 respuestas a Generación de residuales con R en un modelo autoregresivo lineal de 1 er orden

  1. Pingback: Coeficientes de correlación para residuales generados con lenguaje R, en un modelo autoregresivo lineal de primer orden |

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

  3. 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