# LA rent example la.rent <- read.table("D:/Courses/regression/data sets/LARENT.txt",header=F) rent.price <- la.rent[,1] area.bath <- la.rent[,6] dist.beach <- la.rent[,8] lm.1 <- lm(rent.price ~ area.bath + dist.beach) summary(lm.1) y <- rent.price x.mat <- cbind(intercept=rep(1,26),area.bath,dist.beach) solve( t(x.mat) %*% x.mat ) %*% t(x.mat) %*% y # Simple linear regression lm.2 <- lm(rent.price ~ area.bath) summary(lm.2) y <- rent.price x.mat <- cbind(intercept=rep(1,26),area.bath) solve( t(x.mat) %*% x.mat ) %*% t(x.mat) %*% y # Geometric interpretation of R^2 lm.1 <- lm(rent.price ~ area.bath + dist.beach) summary(lm.1) X.1 <- 0.5*area.bath - 3*dist.beach X.2 <- 1.5*area.bath - 14.5*dist.beach lm.1a <- lm(rent.price ~ X.1 + X.2) summary(lm.1a) lm.1$fit[1:4] lm.1a$fit[1:4] (SSE.1 <- sum(lm.1$res^2)) (SSE.1a <- sum(lm.1a$res^2)) (SST <- sum((rent.price - mean(rent.price))^2)) SST - SSE.1 (SSR <- sum((lm.1$fit - mean(rent.price))^2)) SSR / SST # Regression without intercept lm.3 <- lm(rent.price ~ area.bath + dist.beach + 0) summary(lm.3) x.mat <- cbind(area.bath,dist.beach) solve( t(x.mat) %*% x.mat ) %*% t(x.mat) %*% y vec.1 <- rep(1,26) lm.1b <- lm(rent.price ~ vec.1 + area.bath + dist.beach + 0) summary(lm.1b) (SSE.1b <- sum(lm.1b$res^2)) (SST.1b <- sum(rent.price^2)) SST.1b - SSE.1b (SSR.1b <- sum(lm.1b$fit^2)) SSR.1b / SST.1b anova(lm.1) anova(lm.1b) sum(rep(mean(rent.price)^2,26)) sum(anova(lm.1b)[,2])