11.3: Regresión de OLS en forma de matriz
- Page ID
- 150248
Como fue el caso de la regresión simple, queremos minimizar la suma de los errores al cuadrado, ee. En notación matricial, el modelo OLS es Y=xB+EY=Xb+E, donde E=Y−xBe=Y−xB. La suma del ee cuadrado es:
e2i= [e1e2es] e1e2en=e′e (11.1) (11.1) ei2= [e1e2en] [e1e2es] =e′e
Por lo tanto, queremos encontrar el bb que minimiza esta función:
e′e= (Y−xB) ′ (Y−xB) =Y′y−x′y−Y′xb+B′xxb=Y′y−2B′x'y+B′xB′xB+B′xb′ (Y−xB) '(Y−xB) =Y′y−xXb+B′x′xB+B′x′xb+B′x′xb+B′x′xb+B′x′xb+B′x′xb+= Y′y−2B′x′y+B′x′xB
Para ello tomamos la derivada de e′ee′e w.r.t bb y la establecemos igual a 00.
e′eb=−2x′y+2x′xb=0e′eb=−2x′y+2x′xb=0Para resolver esto restamos 2X′Xb2x′Xb de ambos lados: −2x′xb=−2x′y−2x′xb=−2x′y
Luego para eliminar los −2−2's, multiplicamos cada lado por −1/2−1/2. Esto nos deja con:
(X′X) B = X′y (X′X) B = X′y
Para resolver para bb multiplicamos ambos lados por la inversa de X′X, (X′X) −1X′X, (X′X) −1. Tenga en cuenta que para las matrices esto equivale a dividir cada lado por X′XX′X. Por lo tanto:
b= (X′X) −1x′Y (11.2) (11.2) b= (X′X) −1x′Y
La matriz X′XX′X es cuadrada, y por lo tanto invertible (es decir, existe la inversa). Sin embargo, la matriz X′XX′X puede ser no invertible (es decir, singular) si n<kn<k —el número de variables independientes kk excede el nn-tamaño— o si una o más de las variables independientes están perfectamente correlacionadas con otra variable independiente. Esto se califica de multicolinealidad perfecta y se discutirá con más detalle en el Capítulo 14. También tenga en cuenta que la matriz X′XX′X contiene la base de todas las medias, varianzas y covarianzas necesarias entre los XX.
X′X=nx1x2x3x3x1x21x1x2x1x3x2x2x2X1x22x2x3x3x3x3x1λx2x23X′X= [nx1X2x3x1X12x1x3x2x2x1x22x2x3x3x3x3x1x3x2x32]
Regresión en forma de matriz
Suponga un modelo usando observaciones nn, parámetros kk y variables k−1k−1, XiXi (independientes).
y=xb+e^y=xBB =( X′X) −1x′yy=xb+ey^=xBB =( X′X) −1x′y
- y=n*1y=n*1 vector de columna de observaciones del DV, YY
- ^y=n*1y^=n*1 vector de columna de valores YY predichos
- x=N*kx=N*K matriz de observaciones de los IVs; primera columna 11s
- b=k*1b=k*1 vector de columna de coeficientes de regresión; la primera fila es AA
- e=n*1e=n*1 vector de columna de nn valores residuales
Usando los siguientes pasos, usaremos R
para calcular bb, un vector de coeficientes de regresión; ^yy^, un vector de valores yy pronosticados; y ee, un vector de residuales.
Queremos ajustar el modelo y=xb+EY=xb+e a las siguientes matrices:
y=6114359104517341825]
Crea dos objetos, la matriz yy y la matriz XX.
y <- matrix(c(6,11,4,3,5,9,10),7,1)
y
## [,1]
## [1,] 6
## [2,] 11
## [3,] 4
## [4,] 3
## [5,] 5
## [6,] 9
## [7,] 10
X <- matrix(c(1,1,1,1,1,1,1,4,7,2,1,3,7,8,5,2,6,9,4,3,2,4,3,4,6,5,4,5),7,4)
X
## [,1] [,2] [,3] [,4]
## [1,] 1 4 5 4
## [2,] 1 7 2 3
## [3,] 1 2 6 4
## [4,] 1 1 9 6
## [5,] 1 3 4 5
## [6,] 1 7 3 4
## [7,] 1 8 2 5
Calcular bb: b= (X′X) −1x′yb= (X′X) −1x′y.
Podemos calcular esto en R
en tan solo unos pasos. Primero, transponemos XX para obtener X′X′.
X.prime <- t(X)
X.prime
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] 1 1 1 1 1 1 1
## [2,] 4 7 2 1 3 7 8
## [3,] 5 2 6 9 4 3 2
## [4,] 4 3 4 6 5 4 5
Después multiplicamos XX por X′X′; (X′XX′X).
X.prime.X <- X.prime %*% X
X.prime.X
## [,1] [,2] [,3] [,4]
## [1,] 7 32 31 31
## [2,] 32 192 104 134
## [3,] 31 104 175 146
## [4,] 31 134 146 143
A continuación, encontramos la inversa de X′XX′X; X′X−1X′X−1
X.prime.X.inv<-solve(X.prime.X)
X.prime.X.inv
## [,1] [,2] [,3] [,4]
## [1,] 12.2420551 -1.04528602 -1.01536017 -0.63771186
## [2,] -1.0452860 0.12936970 0.13744703 -0.03495763
## [3,] -1.0153602 0.13744703 0.18697034 -0.09957627
## [4,] -0.6377119 -0.03495763 -0.09957627 0.27966102
Luego, multiplicamos X′X−1X′X−1 por X′X′.
X.prime.X.inv.X.prime<-X.prime.X.inv %*% X.prime
X.prime.X.inv.X.prime
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.43326271 0.98119703 1.50847458 -1.7677436 1.8561970 -0.6718750
## [2,] 0.01959746 0.03032309 -0.10169492 0.1113612 -0.2821769 0.1328125
## [3,] 0.07097458 0.02198093 -0.01694915 0.2073623 -0.3530191 0.1093750
## [4,] -0.15677966 -0.24258475 -0.18644068 0.1091102 0.2574153 -0.0625000
## [,7]
## [1,] -1.33951271
## [2,] 0.08977754
## [3,] -0.03972458
## [4,] 0.28177966
Finalmente, para obtener el vector bb multiplicamos X′X−1X′X′X−1X′ por yy.
b<-X.prime.X.inv.X.prime %*% y
b
## [,1]
## [1,] 3.96239407
## [2,] 1.06064619
## [3,] 0.04396186
## [4,] -0.48516949
Podemos usar la función lm
en R
para verificar y ver si nuestro enfoque de matriz “a mano” obtiene el mismo resultado que la rutina de regresión múltiple “enlatada”:
lm(y~0+X)
##
## Call:
## lm(formula = y ~ 0 + X)
##
## Coefficients:
## X1 X2 X3 X4
## 3.96239 1.06065 0.04396 -0.48517
Calcular ^yy^: ^y=xBy^=xB.
Para calcular el vector ^yy^ en R
, simplemente multiplique X
y b
.
y.hat <- X %*% b
y.hat
## [,1]
## [1,] 6.484110
## [2,] 10.019333
## [3,] 4.406780
## [4,] 2.507680
## [5,] 4.894333
## [6,] 9.578125
## [7,] 10.109640
Calcular ee.
Para calcular ee, el vector de residuos, simplemente restar el vector yy del vector ^yy^.
e <- y-y.hat
e
## [,1]
## [1,] -0.4841102
## [2,] 0.9806674
## [3,] -0.4067797
## [4,] 0.4923199
## [5,] 0.1056674
## [6,] -0.5781250
## [7,] -0.1096398