Section 29 MLR: Matrix Implementation in R
Multiple Linear Regression: Matrix Implementation
Note: You may skip this section if you are not familiar with matrix operations.
29.2 Matrix implementation
X <- model.matrix(~ BMI + Age, data=BP)
y <- BP$SBP
n <- length(y)
Xt.X <- t(X) %*% X
Xt.y <- t(X) %*% y
yt.y <- t(y) %*% y
# Using matrix functions
b <- solve(Xt.X) %*% Xt.y
# Mathematically efficient approach
# b <- solve(crossprod(X,X),crossprod(X,y))
# Hat matrix
H <- X %*% solve(Xt.X) %*% t(X)
# Identity matrix
I <- diag(n)
RSS <- t(y) %*% (I-H) %*% y
df.reg <- length(b) - 1
df.res <- n - df.reg - 1
MSE <- RSS/df.res
sigma2 <- MSE
SE.b <- sqrt(diag(solve(Xt.X)) * sigma2)
t.stat <- b / SE.b
prob <- 2 * pt(q = t.stat, df = df.res, lower.tail = FALSE)
pred <- X %*% b
DF <- data.frame(Estimate = b,
SE = SE.b,
t.stat = t.stat,
Prob = prob)
row.names(DF) <- c('Intercept', 'BMI', 'Age')
DF
anova(fm)