R2 increases if random variable is added In regression, I thought if you added a predictor unrelated to the criterion, R2 would stay the same. However R2 increases non-trivially in the example below, even though the correlation between response and predictor3 is virtually 0. What's going on?
More generally, can someone tell me what happens to R2 and betas under these conditions:


*

*Add predictor unrelated to y or any other predictors (assume that R2 and betas remain unchanged?)

*Add predictor unrelated to y but related to other predictors (apparently R2 goes up and the predictors remain unchanged?)
R code:
R = matrix(cbind(1,.80,.2,0, 
             .80,1,.7,.3,  
             .2,.7,1, .3,
             0,.3,.3,1),nrow=4)
U = t(chol(R))
nvars = dim(U)[1]
numobs = 100000
set.seed(1)
random.normal = matrix(rnorm(nvars*numobs,0,1), nrow=nvars, ncol=numobs);
X = U %*% random.normal
newX = t(X)
raw = as.data.frame(newX)
names(raw) = c("response","predictor1","predictor2","predictor3")
cor(raw)

lm1<-lm(response ~ predictor1 + predictor2, data=raw)
lm2<-lm(response ~ predictor1 + predictor2 + predictor3, data=raw)

summary(lm1)
summary(lm2)

 A: Note that the residual vector can have a component that is perpendicular to the response vector, and therefore the zero correlation between an additional variable and the response, is not relevant (sufficient). 
The additional variable in the models can decrease the residuals, increasing the $R^2$, even when it does not correlate with the response... 
...by correlating with the difference between the response and the earlier variables.
Simple example:
$$\begin{bmatrix}1\\0 \end{bmatrix} = a_1 \begin{bmatrix}1\\1 \end{bmatrix} + a_2 \begin{bmatrix}0\\1 \end{bmatrix} + \epsilon $$
which clearly shows how a model variable that is perpendicular to the response can still play a role in the model by correlating with the difference between the response and other model vectors. 
But indeed, it is different when the additional variable is perpendicular to both response and other variables:
$$\begin{bmatrix}1\\0\\0 \end{bmatrix} = a_1 \begin{bmatrix}1\\1 \\0\end{bmatrix} + a_2 \begin{bmatrix}0\\0\\1 \end{bmatrix} + \epsilon$$
In that case it can't be correlating with previous residual term either. since a sum vectors, which are perpendicular to a vector $x$, is also perpendicular to $x$.
A: I'm not an expert in Cholesky decomposition, but appears that the uncorrelated variable somehow retains some structure related to the response after predictor1 and predictor2 are accounted for. 
cor(resid(lm1),raw$predictor3)
[1] -0.5435588

If you instead generate predictor3 manually, you'll find that your R-sqare value does not change
raw$predictor3 = runif(length(raw$predictor3),0,1)
lm1<-lm(response ~ predictor1 + predictor2, data=raw)
lm2<-lm(response ~ predictor1 + predictor2 + predictor3, data=raw)

summary(lm1)['r.squared']$r.squared
[1] 0.8948916

summary(lm2)['r.squared']$r.squared
[1] 0.8948917

I'd love to know why...
