Gov 2000: 10. Multiple Regression in Matrix Form
Matthew Blackwell
Fall 2016
1 / 64
Gov 2000: 10. Multiple Regression in Matrix Form Matthew Blackwell - - PowerPoint PPT Presentation
Gov 2000: 10. Multiple Regression in Matrix Form Matthew Blackwell Fall 2016 1 / 64 1. Matrix algebra review 2. Matrix Operations 3. Linear model in matrix form 4. OLS in matrix form 5. OLS inference in matrix form 2 / 64 Where are we?
Matthew Blackwell
Fall 2016
1 / 64
2 / 64
and two independent variables, varying efgects
covariates
3 / 64
Africans today?
difgerent levels of historical slave exports for a respondentโs ethnic group
interpersonal trust in ways that correlate with the severity of slave exports
groups via multiple regression
4 / 64
Bold letter, quotation marks, what is this?
5 / 64
nunn <- foreign::read.dta("../data/Nunn_Wantchekon_AER_2011.dta") mod <- lm(trust_neighbors ~ exports + age + male + urban_dum + malaria_ecology, data = nunn) summary(mod) ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 1.5030370 0.0218325 68.84 <2e-16 *** ## exports
0.0000409
<2e-16 *** ## age 0.0050447 0.0004724 10.68 <2e-16 *** ## male 0.0278369 0.0138163 2.01 0.044 * ## urban_dum
0.0143549
<2e-16 *** ## malaria_ecology 0.0194106 0.0008712 22.28 <2e-16 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.978 on 20319 degrees of freedom ## (1497 observations deleted due to missingness) ## Multiple R-squared: 0.0604, Adjusted R-squared: 0.0602 ## F-statistic: 261 on 5 and 20319 DF, p-value: <2e-16
6 / 64
7 / 64
8 / 64
๐ง๐ = ๐พ0 + ๐ฆ๐1๐พ1 + ๐ฆ๐2๐พ2 + โฏ + ๐ฆ๐๐๐พ๐ + ๐ฃ๐
9 / 64
๐ง๐ = ๐พ0 + ๐ฆ๐1๐พ1 + ๐ฆ๐2๐พ2 + โฏ + ๐ฆ๐๐๐พ๐ + ๐ฃ๐
conditional on all other ๐ฆ๐๐.
โconditional on the covariates,โ etc
10 / 64
11 / 64
๐ = [ ๐1 ๐2 ๐3 โฏ ๐๐ ]
๐ = โก โข โข โข โฃ ๐1 ๐2 โฎ ๐๐ โค โฅ โฅ โฅ โฆ
vectors will be written with lowercase bold lettering (๐)
12 / 64
๐ฒ๐ = โก โข โข โข โข โข โฃ 1 ๐ฆ๐1 ๐ฆ๐2 โฎ ๐ฆ๐๐ โค โฅ โฅ โฅ โฅ โฅ โฆ
๐ฒ๐ = โก โข โข โข โฃ 1 exports๐ age๐ male๐ โค โฅ โฅ โฅ โฆ
13 / 64
columns.
๐ = โก โข โข โข โฃ ๐11 ๐12 โฏ ๐1๐ ๐21 ๐22 โฏ ๐2๐ โฎ โฎ โฑ โฎ ๐๐1 ๐๐2 โฏ ๐๐๐ โค โฅ โฅ โฅ โฆ
14 / 64
matrix, which has a column of ones, and then each of the subsequent columns is each independent variable in the regression. ๐ = โก โข โข โข โฃ 1 exports1 age1 male1 1 exports2 age2 male2 โฎ โฎ โฎ โฎ 1 exports๐ age๐ male๐ โค โฅ โฅ โฅ โฆ
15 / 64
head(model.matrix(mod), 8) ## (Intercept) exports age male urban_dum malaria_ecology ## 1 1 855 40 28.15 ## 2 1 855 25 1 28.15 ## 3 1 855 38 1 1 28.15 ## 4 1 855 37 1 28.15 ## 5 1 855 31 1 28.15 ## 6 1 855 45 28.15 ## 7 1 855 20 1 28.15 ## 8 1 855 31 28.15 dim(model.matrix(mod)) ## [1] 20325 6
16 / 64
17 / 64
switching the rows and columns of the data and is denoted ๐โฒ.
๐ = โก โข โข โฃ ๐11 ๐12 ๐21 ๐22 ๐31 ๐32 โค โฅ โฅ โฆ ๐โฒ = [ ๐11 ๐21 ๐31 ๐12 ๐22 ๐32 ]
18 / 64
vector and vice versa: ๐ฒ๐ = โก โข โข โข โข โข โฃ 1 ๐ฆ๐1 ๐ฆ๐2 โฎ ๐ฆ๐๐ โค โฅ โฅ โฅ โฅ โฅ โฆ ๐ฒโฒ
๐ = [ 1
๐ฆ๐1 ๐ฆ๐2 โฏ ๐ฆ๐๐ ]
19 / 64
a <- matrix(1:6, ncol = 3, nrow = 2) a ## [,1] [,2] [,3] ## [1,] 1 3 5 ## [2,] 2 4 6 t(a) ## [,1] [,2] ## [1,] 1 2 ## [2,] 3 4 ## [3,] 5 6
20 / 64
๐ = [ ๐11 ๐12 ๐13 ๐21 ๐22 ๐23 ] = [ ๐โฒ
1
๐โฒ
2
] with row vectors ๐โฒ
1 = [ ๐11
๐12 ๐13 ] ๐โฒ
2 = [ ๐21
๐22 ๐23 ]
๐ = โก โข โข โฃ ๐11 ๐12 ๐21 ๐22 ๐31 ๐32 โค โฅ โฅ โฆ = [ ๐๐ ๐๐ ] where ๐๐ and ๐๐ represent the columns of ๐.
๐.
21 / 64
๐ = โก โข โข โข โฃ 1 exports1 age1 male1 1 exports2 age2 male2 โฎ โฎ โฎ โฎ 1 exports๐ age๐ male๐ โค โฅ โฅ โฅ โฆ = โก โข โข โข โฃ ๐ฒโฒ
1
๐ฒโฒ
2
โฎ ๐ฒโฒ
๐
โค โฅ โฅ โฅ โฆ
๐ = [ ๐ ๐ฒ1 ๐ฒ2 โฏ ๐ฒ๐ ]
22 / 64
that the dimensions have to be the same.
where we add each cell together:
๐ + ๐ = [ ๐11 ๐12 ๐21 ๐22 ] + [ ๐11 ๐12 ๐21 ๐22 ] = [ ๐11 + ๐11 ๐12 + ๐12 ๐21 + ๐21 ๐22 + ๐22 ] = [ ๐11 ๐12 ๐21 ๐22 ] = ๐
23 / 64
like a 1 by 1 matrix.
element/cell by that scalar:
๐๐ = ๐ [ ๐11 ๐12 ๐21 ๐22 ] = [ ๐ ร ๐11 ๐ ร ๐12 ๐ ร ๐21 ๐ ร ๐22 ]
24 / 64
25 / 64
all ๐ โ {1, โฆ , ๐}: ๐ง๐ = ๐พ0 + ๐ฆ๐๐พ1 + ๐จ๐๐พ2 + ๐ฃ๐
๐ง1 = ๐พ0 + ๐ฆ1๐พ1 + ๐จ1๐พ2 + ๐ฃ1 (unit 1) ๐ง2 = ๐พ0 + ๐ฆ2๐พ1 + ๐จ2๐พ2 + ๐ฃ2 (unit 2) ๐ง3 = ๐พ0 + ๐ฆ3๐พ1 + ๐จ3๐พ2 + ๐ฃ3 (unit 3) ๐ง4 = ๐พ0 + ๐ฆ4๐พ1 + ๐จ4๐พ2 + ๐ฃ4 (unit 4)
26 / 64
๐ง1 = ๐พ0 + ๐ฆ1๐พ1 + ๐จ1๐พ2 + ๐ฃ1 (unit 1) ๐ง2 = ๐พ0 + ๐ฆ2๐พ1 + ๐จ2๐พ2 + ๐ฃ2 (unit 2) ๐ง3 = ๐พ0 + ๐ฆ3๐พ1 + ๐จ3๐พ2 + ๐ฃ3 (unit 3) ๐ง4 = ๐พ0 + ๐ฆ4๐พ1 + ๐จ4๐พ2 + ๐ฃ4 (unit 4)
โก โข โข โข โฃ ๐ง1 ๐ง2 ๐ง3 ๐ง4 โค โฅ โฅ โฅ โฆ = โก โข โข โข โฃ 1 1 1 1 โค โฅ โฅ โฅ โฆ ๐พ0 + โก โข โข โข โฃ ๐ฆ1 ๐ฆ2 ๐ฆ3 ๐ฆ4 โค โฅ โฅ โฅ โฆ ๐พ1 + โก โข โข โข โฃ ๐จ1 ๐จ2 ๐จ3 ๐จ4 โค โฅ โฅ โฅ โฆ ๐พ2 + โก โข โข โข โฃ ๐ฃ1 ๐ฃ2 ๐ฃ3 ๐ฃ4 โค โฅ โฅ โฅ โฆ
27 / 64
be the following: ๐
(4ร3) =
โก โข โข โข โฃ 1 ๐ฆ1 ๐จ1 1 ๐ฆ2 ๐จ2 1 ๐ฆ3 ๐จ3 1 ๐ฆ4 ๐จ4 โค โฅ โฅ โฅ โฆ ๐ธ
(3ร1)
= โก โข โข โฃ ๐พ0 ๐พ1 ๐พ2 โค โฅ โฅ โฆ
28 / 64
(post-)multiplied by a vector: โก โข โข โข โฃ 1 1 1 1 โค โฅ โฅ โฅ โฆ ๐พ0 + โก โข โข โข โฃ ๐ฆ1 ๐ฆ2 ๐ฆ3 ๐ฆ4 โค โฅ โฅ โฅ โฆ ๐พ1 + โก โข โข โข โฃ ๐จ1 ๐จ2 ๐จ3 ๐จ4 โค โฅ โฅ โฅ โฆ ๐พ2 = ๐๐ธ
combination of the columns of the matrix with the vector elements as weights/coeffjcients.
which is easy!
29 / 64
๐
(๐ร1) = ๐๐ = ๐1๐1 + ๐2๐2 + โฏ + ๐๐๐๐
30 / 64
๐๐ธ = ๐พ0 + ๐พ1๐ฒ1 + ๐พ2๐ฒ2 + โฏ + ๐พ๐๐ฒ๐
following: ๐ณ
(๐ร1) = ๐๐ธ (๐ร1)
+ ๐ฏ
(๐ร1)
31 / 64
(of equal dimension, ๐ ร 1): โจ๐, ๐โฉ = ๐โฒ๐ = ๐1๐1 + ๐2๐2 + โฏ + ๐๐๐๐
๐๐ = ๐โฒ
๐๐
๐ is the ๐th row of ๐, then we write the linear model as:
๐ง๐ = ๐ฒโฒ
๐๐ธ + ๐ฃ๐
= ๐พ0 + ๐ฆ๐1๐พ1 + ๐ฆ๐2๐พ2 + โฏ + ๐ฆ๐๐๐พ๐ + ๐ฃ๐
32 / 64
33 / 64
with dimensions ๐ ร ๐.
multiplication: ๐ = [๐1 ๐2 โฏ ๐๐] ๐๐ = ๐๐๐
columns of ๐.
34 / 64
๐(๐๐) = (๐๐)๐ ๐(๐ + ๐) = ๐๐ + ๐๐
35 / 64
the diagonal and 0s everywhere else. ๐3 = โก โข โข โฃ 1 1 1 โค โฅ โฅ โฆ
returns the matrix: ๐๐๐ = ๐
36 / 64
b <- matrix(1:4, nrow = 2, ncol = 2) b ## [,1] [,2] ## [1,] 1 3 ## [2,] 2 4 diag(b) ## [1] 1 4
diag(3) ## [,1] [,2] [,3] ## [1,] 1 ## [2,] 1 ## [3,] 1
37 / 64
๐ธ be the matrix of estimated regression coeffjcients and ฬ ๐ณ be the vector of fjtted values: ฬ ๐ธ = โก โข โข โข โฃ ฬ ๐พ0 ฬ ๐พ1 โฎ ฬ ๐พ๐ โค โฅ โฅ โฅ โฆ ฬ ๐ณ = ๐ ฬ ๐ธ
ฬ ๐ณ = โก โข โข โข โฃ ฬ ๐ง1 ฬ ๐ง2 โฎ ฬ ๐ง๐ โค โฅ โฅ โฅ โฆ = ๐ ฬ ๐ธ = โก โข โข โข โฃ 1 ฬ ๐พ0 + ๐ฆ11 ฬ ๐พ1 + ๐ฆ12 ฬ ๐พ2 + โฏ + ๐ฆ1๐ ฬ ๐พ๐ 1 ฬ ๐พ0 + ๐ฆ21 ฬ ๐พ1 + ๐ฆ22 ฬ ๐พ2 + โฏ + ๐ฆ2๐ ฬ ๐พ๐ โฎ 1 ฬ ๐พ0 + ๐ฆ๐1 ฬ ๐พ1 + ๐ฆ๐2 ฬ ๐พ2 + โฏ + ๐ฆ๐๐ ฬ ๐พ๐ โค โฅ โฅ โฅ โฆ
38 / 64
ฬ ๐ฏ = ๐ณ โ ๐ ฬ ๐ธ
and is just the square root of the squared entries, โ๐โ = โ๐2
1 + ๐2 2 + โฏ + ๐2 ๐
as: โ ฬ ๐ฏโ2 = ฬ ๐ฏโฒ ฬ ๐ฏ =
๐
โ
๐=1
ฬ ๐ฃ2
๐
39 / 64
arg min
๐โโ๐+1 โ ฬ
๐ฏโ2 = arg min
๐โโ๐+1 โ๐ณ โ ๐๐โ2
๐โฒ(๐ณ โ ๐ ฬ ๐ธ) = 0
๐โฒ๐ ฬ ๐ธ = ๐โฒ๐ณ
๐ธ, we need to move the ๐โฒ๐ term to the
matrix โdivisionโ?
40 / 64
๐ is the value such that
๐ 1
๐ = 1:
1 ๐๐๐ฃ = 1 ๐๐ ๐ฃ = ๐ ๐
๐.
41 / 64
๐โ1, is the matrix such that ๐โ1๐ = ๐.
๐๐ฏ = ๐ ๐โ๐๐๐ฏ = ๐โ๐๐ ๐๐ฏ = ๐โ๐๐ ๐ฏ = ๐โ๐๐
42 / 64
come back to this)
ฬ ๐ธ = (๐โฒ๐)โ1๐โฒ๐ณ
your soul.
43 / 64
โถ Note: A square matrix is symmetric if ๐ = ๐โฒ.
๐ธ?
44 / 64
๐โฒ ฬ ๐ฏ = ๐โฒ(๐ณ โ ๐ ฬ ๐ธ) = 0
ฬ ๐ณโฒ ฬ ๐ฏ = (๐ ฬ ๐ธ)โฒ ฬ ๐ฏ = ฬ ๐ธโฒ๐โฒ ฬ ๐ฏ = 0
45 / 64
ฬ ๐ธ = (๐โฒ๐)โ1๐โฒ๐ณ
X <- model.matrix(trust_neighbors ~ exports + age + male + urban_dum + malaria_ecology, data = nunn) dim(X) ## [1] 20325 6 ## model.frame always puts the response in the first column y <- model.frame(trust_neighbors ~ exports + age + male + urban_dum + malaria_ecology, data = nunn)[,1] length(y) ## [1] 20325
46 / 64
ฬ ๐ธ = (๐โฒ๐)โ1๐โฒ๐ณ
multiplication:
solve(t(X) %*% X) %*% t(X) %*% y ## (Intercept) exports age male urban_dum ## [1,] 1.503 -0.001021 0.005045 0.02784
## malaria_ecology ## [1,] 0.01941 coef(mod) ## (Intercept) exports age male ## 1.503037
0.005045 0.027837 ## urban_dum malaria_ecology ##
0.019411
47 / 64
ฬ ๐ธ = (๐โฒ๐)โ1๐โฒ๐ณ
between the columns of ๐ and ๐ณ
variances and covariances of variables within ๐
ฬ ๐ธ โ (variance of ๐)โ1(covariance of ๐ & ๐ณ)
provide intuition.
48 / 64
49 / 64
๐ฒ๐ = [ ๐ฆ๐1 ๐ฆ๐2 ]
variables.
about the joint distribution of ๐ฆ๐1 and ๐ฆ๐2.
50 / 64
๐ฝ[๐ฒ๐] = [ ๐ฝ[๐ฆ๐1] ๐ฝ[๐ฆ๐2] ]
๐[๐ฒ๐] = [ ๐[๐ฆ๐1] Cov[๐ฆ๐1, ๐ฆ๐2] Cov[๐ฆ๐1, ๐ฆ๐2] ๐[๐ฆ๐2] ]
โถ if ๐ is constant, then ๐[๐โฒ๐ฒ๐] = ๐โฒ๐[๐ฒ๐]๐. โถ if matrix ๐ and vector ๐ are constant, then
๐[๐๐ฒ๐ + ๐] = ๐๐[๐ฒ๐]๐โฒ
51 / 64
๐๐ธ + ๐ฃ๐
๐) are a iid sample from the
population.
๐ + 1
๐ฃ
๐ฃ)
52 / 64
linearly independent columns.
independent if ๐๐ = 0 if and only if ๐ = 0: ๐1๐ฒ1 + ๐2๐ฒ๐ + โฏ + ๐๐๐ฒ๐ = 0
โถ 3 covariates with ๐ฒ1 = ๐ฒ2 + ๐ฒ3
0 = ๐1๐ฒ1 + ๐2๐ฒ2 + ๐3๐ฒ3 = ๐1(๐ฒ2 + ๐ฒ3) + ๐2๐ฒ2 + ๐3๐ฒ3 = (๐1 + ๐2)๐ฒ2 + (๐1 + ๐3)๐ฒ3
53 / 64
linearly independent
โถ Generalization of no perfect collinearity to arbitrary ๐.
invertible.
54 / 64
๐ฝ[๐ฃ๐|๐] = ๐ฝ[๐ฃ๐|๐ฒ๐] = 0
๐ฝ[๐ฏ|๐] = โก โข โข โข โฃ ๐ฝ[๐ฃ1|๐] ๐ฝ[๐ฃ2|๐] โฎ ๐ฝ[๐ฃ๐|๐] โค โฅ โฅ โฅ โฆ = โก โข โข โข โฃ โฎ โค โฅ โฅ โฅ โฆ
55 / 64
ฬ ๐ธ = (๐โฒ๐)โ1 ๐โฒ๐ณ = (๐โฒ๐)โ1 ๐โฒ(๐๐ธ + ๐ฏ) = (๐โฒ๐)โ1 ๐โฒ๐๐ธ + (๐โฒ๐)โ1 ๐โฒ๐ฏ = ๐ธ + (๐โฒ๐)โ1 ๐โฒ๐ฏ
๐ฝ[ ฬ ๐ธ|๐] = ๐ธ + (๐โฒ๐)โ1 ๐โฒ๐ฝ[๐ฏ|๐] = ๐ธ + (๐โฒ๐)โ1 ๐โฒ๐ = ๐ธ
๐ธ] = ๐ธ
56 / 64
๐ธ|๐]?
๐[ ฬ ๐ธ|๐] = (๐โฒ๐)โ1 ๐โฒ๐[๐ฏ|๐]๐ (๐โฒ๐)โ1
๐[๐ฏ|๐] = โก โข โข โข โฃ ๐[๐ฃ1|๐] cov[๐ฃ1, ๐ฃ2|๐] โฆ cov[๐ฃ1, ๐ฃ๐|๐] cov[๐ฃ2, ๐ฃ1|๐] ๐[๐ฃ2|๐] โฆ cov[๐ฃ2, ๐ฃ๐|๐] โฎ โฑ cov[๐ฃ๐, ๐ฃ1|๐] cov[๐ฃ๐, ๐ฃ2|๐] โฆ ๐[๐ฃ๐|๐] โค โฅ โฅ โฅ โฆ
57 / 64
โถ ๐[๐ฃ๐|๐] = ๐[๐ฃ๐|๐ฒ๐] = ๐2
๐ฃ (constant variance)
โถ cov[๐ฃ๐ก, ๐ฃ๐ข|๐] = 0 (uncorrelated errors)
๐[๐ฏ|๐] = ๐2
๐ฃ๐๐ =
โก โข โข โข โฃ ๐2
๐ฃ
โฆ ๐2
๐ฃ
โฆ โฎ โฆ ๐2
๐ฃ
โค โฅ โฅ โฅ โฆ
๐[ ฬ ๐ธ|๐] = (๐โฒ๐)โ1 ๐โฒ๐[๐ฏ|๐]๐ (๐โฒ๐)โ1 = (๐โฒ๐)โ1 ๐โฒ(๐2
๐ฃ๐๐)๐ (๐โฒ๐)โ1
= ๐2
๐ฃ (๐โฒ๐)โ1 ๐โฒ๐ (๐โฒ๐)โ1
= ๐2 (๐โฒ๐)โ1
58 / 64
estimator can be written in matrix form as the following: ๐[ ฬ ๐ธ|๐] = ๐2
๐ฃ(๐โฒ๐)โ1
โก โข โข โข โข โฃ ๐ [ ฬ ๐พ0|๐] Cov [ ฬ ๐พ0, ฬ ๐พ1|๐] โฏ Cov [ ฬ ๐พ0, ฬ ๐พ๐|๐] Cov [ ฬ ๐พ0, ฬ ๐พ1|๐] ๐ [ ฬ ๐พ1|๐] โฏ Cov [ ฬ ๐พ1, ฬ ๐พ๐|๐] โฎ โฎ โฑ โฎ Cov [ ฬ ๐พ0, ฬ ๐พ๐|๐] Cov [ ฬ ๐พ๐, ฬ ๐พ1|๐] โฏ ๐ [ ฬ ๐พ๐|๐] โค โฅ โฅ โฅ โฅ โฆ
59 / 64
ฬ ๐พ๐ โ ๐พ๐ ฬ se[ ฬ ๐พ๐] โผ ๐(0, 1)
ฬ ๐พ๐ โ ๐พ๐ ฬ se[ ฬ ๐พ๐] โผ ๐ข๐โ(๐+1)
ฬ ๐พ๐ ฬ se[ ฬ ๐พ๐] โผ ๐ข๐โ(๐+1)
ฬ ๐[ ฬ ๐ธ] = ฬ ๐2
๐ฃ(๐โฒ๐)โ1
ฬ ๐2
๐ฃ =
ฬ ๐ฏโฒ ฬ ๐ฏ ๐ โ (๐ + 1)
60 / 64
๐2
๐ฃ(๐โฒ๐)โ1,
in R:
vcov(mod) ## (Intercept) exports age male ## (Intercept) 0.0004766593 1.164e-07 -7.956e-06 -6.676e-05 ## exports 0.0000001164 1.676e-09 -3.659e-10 7.283e-09 ## age
2.231e-07 -7.765e-07 ## male
7.283e-09 -7.765e-07 1.909e-04 ## urban_dum
7.108e-07 -1.711e-06 ## malaria_ecology -0.0000069094 -2.124e-08 2.324e-10 -1.017e-07 ## urban_dum malaria_ecology ## (Intercept)
## exports
## age 7.108e-07 2.324e-10 ## male
## urban_dum 2.061e-04 2.724e-09 ## malaria_ecology 2.724e-09 7.590e-07
61 / 64
sqrt(diag(vcov(mod))) ## (Intercept) exports age male ## 0.02183253 0.00004094 0.00047237 0.01381627 ## urban_dum malaria_ecology ## 0.01435491 0.00087123 coef(summary(mod))[, "Std. Error"] ## (Intercept) exports age male ## 0.02183253 0.00004094 0.00047237 0.01381627 ## urban_dum malaria_ecology ## 0.01435491 0.00087123
62 / 64
63 / 64
concepts in regression and beyond.
model.
64 / 64