```{r, message = FALSE}
library(mosaic)
set.seed(123456)
n <- 11; k <- 10
Predictors <- do(n) * rnorm(k, mean = 0, sd = 0.5)
## set beta_0 to 0
beta0 <- 0
## choose the other betas randomly between -1 and 1
(beta <- runif(4, min = -1, max = 1))
FakeData <- 
  mutate(Predictors, 
         Yhat = beta[1] * V1 + beta[2] * V2 + beta[3] * V3 + beta[4] * V4, 
         epsilon = rnorm(n, mean = 0, sd = 0.5),
         Y = Yhat + epsilon)
m1 <- lm(Y ~ V1, data = FakeData)
m2 <- lm(Y ~ V1 + V2, data = FakeData)
m3 <- lm(Y ~ V1 + V2 + V3, data = FakeData)
m4 <- lm(Y ~ V1 + V2 + V3 + V4, data = FakeData)
m5 <- lm(Y ~ V1 + V2 + V3 + V4 + V5, data = FakeData)
m6 <- lm(Y ~ V1 + V2 + V3 + V4 + V5 + V6, data = FakeData)
m7 <- lm(Y ~ V1 + V2 + V3 + V4 + V5 + V6 + V7, data = FakeData)
m8 <- lm(Y ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8, data = FakeData)
m9 <- lm(Y ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8 + V9, data = FakeData)
m10 <- lm(Y ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8 + V9 + V10, data = FakeData)
```

```{r}
get.r.squared <- function(model) {return(summary(model)$r.squared)}
get.adj.r.squared <- function(model) {return(summary(model)$adj.r.squared)}
models <- list(m1, m2, m3, m4, m5, m6, m7, m8, m9, m10)
rsq <- sapply(models, get.r.squared)
adjrsq <- sapply(models, get.adj.r.squared)
plot(1:10, rsq, ylim = c(-1,1), type = "b", xlab = "Model", ylab = expression(R^2))
points(1:10, adjrsq, type = "b", lty = 2, pch = 15)
legend("topleft", legend = c("Raw", "Adj."), lty = 1:2, pch = c(1,15))
```

