Processing math: 100%

jueves, 10 de diciembre de 2015

La descomposición de Choleski

Si A es una matriz cuadrada simétrica y definida positiva (todos sus valores propios son estrictamente positivos), entonces existen matrices B tales que B2=A.

La descomposición de Choleski de la matriz A es una matriz U triangular superior tal que A=UU.

En R, esta descomposición se obtiene con la función chol().

( m <- matrix(c(5,1,1,3),2,2) )
##      [,1] [,2]
## [1,]    5    1
## [2,]    1    3
( cm <- chol(m) )
##          [,1]      [,2]
## [1,] 2.236068 0.4472136
## [2,] 0.000000 1.6733201
t(cm) %*% cm
##      [,1] [,2]
## [1,]    5    1
## [2,]    1    3

La función crossprod() calcula el producto UU de forma mucho más eficiente

crossprod(cm)
##      [,1] [,2]
## [1,]    5    1
## [2,]    1    3

La inversa de la matriz A se puede calcular como A1=U1(U)1 o con la función chol2inv()

( mi <- chol2inv(cm) )
##             [,1]        [,2]
## [1,]  0.21428571 -0.07142857
## [2,] -0.07142857  0.35714286
m %*% mi
##              [,1]         [,2]
## [1,] 1.000000e+00 5.551115e-17
## [2,] 2.775558e-17 1.000000e+00

Resolver un sistema con la descomposición de Choleski

Supongamos un sistema lineal Ax=b donde la matriz A es simétrica y definida positiva. Entonces UUx=bUx=(U)1b De modo que podemos resolver el sistema en dos pasos

  1. Resolver Uy=b, de modo que y=(U)1b
  2. Resolver Ux=y

En R, podemos utilizar la función solve() para resolver los sitemas lineales, pero cuando las matrices son triangulares es mejor utilizar las funciones backsolve() y forwardsolve() para matrices triangulares superiores e inferiores, respectivamente.

b <- c(11,5)
y <- forwardsolve(t(cm), b)
( x <- backsolve(cm, y) )
## [1] 2 1

Mínimos cuadrados generalizados

Supongamos que la matriz de varianzas-covarianzas de los errores es var(ϵ)=σ2Σ, donde σ2 es desconocida pero Σ es conocida. Es decir, conocemos las varianzas y las correlaciones entre los errores, pero no su escala. Con la ayuda de la descomposición de Choleski podemos escribir Σ=UU=SS, donde S=U es triangular inferior. De este modo podemos transformar la regresión así: y=Xβ+ϵS1y=S1Xβ+S1ϵ˜y=˜Xβ+˜ϵ En este último modelo se verifica que var(˜ϵ)=var(S1ϵ)=S1var(ϵ)(S)1=(U)1σ2UUU1=σ2I De esta forma hemos transformado un problema GLS en un caso ordinario OLS entre ˜y y la matriz ˜X donde los errores ˜ϵ son i.i.d. En el modelo transformado la suma de cuadrados es (S1yS1Xβ)(S1yS1Xβ)=(yXβ)(S)1S1(yXβ)=(yXβ)Σ1(yXβ) que se minimiza con ˆβ=(XΣ1X)1XΣ1y de forma que var(ˆβ)=σ2(XΣ1X)1 Como ˜ϵ=S1ϵ, el análisis de los residuos se debe aplicar a S1e. Si disponemos de la matriz Σ correcta, entonces estos residuos deben ser aproximadamente i.i.d. El principal problema para aplicar este método es que en la práctica desconocemos Σ y hay que estimarla.