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=U′U.
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 U′U 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 A−1=U−1(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 U′Ux=b→Ux=(U′)−1b De modo que podemos resolver el sistema en dos pasos
- Resolver U′y=b, de modo que y=(U′)−1b
- 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 Σ=U′U=SS′, donde S=U′ es triangular inferior. De este modo podemos transformar la regresión así: y=Xβ+ϵS−1y=S−1Xβ+S−1ϵ˜y=˜Xβ+˜ϵ En este último modelo se verifica que var(˜ϵ)=var(S−1ϵ)=S−1var(ϵ)(S′)−1=(U′)−1σ2U′UU−1=σ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 (S−1y−S−1Xβ)′(S−1y−S−1Xβ)=(y−Xβ)′(S′)−1S−1(y−Xβ)=(y−Xβ)′Σ−1(y−Xβ) que se minimiza con ˆβ=(X′Σ−1X)−1X′Σ−1y de forma que var(ˆβ)=σ2(X′Σ−1X)−1 Como ˜ϵ=S−1ϵ, el análisis de los residuos se debe aplicar a S−1e. 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.