recycle <- read.csv("http://www.stat.ufl.edu/~winner/sta4210/mydata/scottish_recycle.csv", header=TRUE) attach(recycle); names(recycle) recycle.ols <- lm(yield ~ reccap.x1 + rescap.x2 + nummat.x3) summary(recycle.ols) ####### Matrix approach for White's robust standard errors n <- length(yield) X <- as.matrix(cbind(int.x0,reccap.x1,rescap.x2,nummat.x3)) Y <- as.matrix(yield) b.ols <- solve(t(X) %*% X) %*% t(X) %*% Y e <- Y - (X %*% b.ols) e2 <- e %*% t(e) i.n <- diag(n) S.0 <- e2 * i.n s2.b.rob <- solve(t(X) %*% X) %*% (t(X) %*% S.0 %*% X) %*% solve(t(X) %*% X) s.b.rob <- sqrt(diag(s2.b.rob)) t.b.rob <- b.ols/s.b.rob print(round(cbind(b.ols,s.b.rob,t.b.rob),5))