---
# System prepended metadata

title: ISLR hw11
tags: [ISLR]

---

---
tags: ISLR
---

# ISLR hw11

**M094020055 陳耀融**

「課本 第六章習題：第6題、第7題、第10題；第七章習題：第3題 、第4題 」


## ch06 Q6
### a

Set y1 = -3 and lambda = 0.5

```r
beta <- seq(-10,10,0.05)
ridge <- (-3-beta)^2 + 0.5 * beta^2
plot(beta, ridge, main = 'ridge')
```

![](https://i.imgur.com/Q5MUYkd.png)


It achieve minima in x = -2
$y / (1 + \lambda) = -3 / (1 + 0.5) = -2$

It get the same result as 6.14

### b

Set y1 = -3 and lambda = 0.5

```r
beta <- seq(-10,10,0.05)
lasso <- (-3-beta)^2 + 0.5 * abs(beta)
plot(beta, lasso, main = 'lasso')
```

![](https://i.imgur.com/JvUnFFM.png)

It achieve minima in x = -2.75
$y + (\lambda / 2) = -3 + (0.5 / 2) = -2.75$

It get the same result as 6.15

## Q7
### a

$$
\begin{aligned}
Likelihood&=P(\bf{y}|\beta)\\
&=\prod_{i=1}^n P(y_i|\beta,\delta^2)\\
&=\prod_{i=1}^n \frac{1}{\delta\sqrt{2\pi}}\exp(-\frac{(y_i-\beta_0+\sum_{j=1}^px_{ij}\beta_j)^2}{2\delta^2})\\
&=(\frac{1}{\delta\sqrt{2\pi}})^n\exp(-\frac{\sum_{i=1}^n(y_i-\beta_0+\sum_{j=1}^px_{ij}\beta_j)^2}{2\delta^2})
\end{aligned}
$$

## Q10
### A
```r
set.seed(1340)
p <- 20
n <- 1000
x <- matrix(rnorm(n * p), n, p)
B <- rnorm(p)
idx <- sample(length(B), 5)
idx
# [1] 15 18  3  4 12
B[idx] <- 0
eps <- rnorm(p)
y <- x %*% B + eps
```

15 18  3  4 12 is set 0

### B
```r
train_idx <- sample(1:nrow(y), 100)
test_idx <- setdiff(1:nrow(y), train_idx)
data <- as.data.frame(cbind(x, y))
train_data <- data[train_idx, ]
test_data <- data[test_idx, ]
```

### C
```r
library(leaps)
subsut_model <- regsubsets(y ~ . - y, data = train_data, nvmax = p)

x_cols <- colnames(train_data)
errs <- sapply(1:p, function(i){
  coef_i <- coef(subsut_model, id = i)
  pred <- as.matrix(train_data[, x_cols %in% names(coef_i)]) %*% coef_i[names(coef_i) %in% x_cols]
  return(mean((train_data$y - pred) ^ 2))
})

plot(errs, ylab = 'train MSE', pch = 19, type = 'b')
```

![](https://i.imgur.com/VTV2JO0.png)


### D
```r
x_cols <- colnames(test_data)
errs <- sapply(1:p, function(i){
  coef_i <- coef(subsut_model, id = i)
  pred <- as.matrix(test_data[, x_cols %in% names(coef_i)]) %*% coef_i[names(coef_i) %in% x_cols]
  return(mean((test_data$y - pred) ^ 2))
})

plot(errs, ylab = 'test MSE', pch = 19, type = 'b')
```

![](https://i.imgur.com/gK4tksl.png)


### E
```r
which.min(errs)
# [1] 14
```
suset 14 is has the smallest test MSE

### F

```r
coef(subsut_model, id = 14)
# (Intercept)          V1          V2          V5          V6          V8 
#   0.1171912  -0.3607490  -0.3476855   0.6318350   1.6626315  -0.9141119 
#          V9         V10         V11         V13         V14         V16 
#  -1.5357956  -0.8530650  -1.3449624   0.7450864  -0.5650095   0.6642357 
#         V17         V19         V20 
#   0.4426464   0.4497942   0.4502551
```

3, 4, 12, 15, 18 is all caught by subsets

### G
```r
errs <- rep(NA, p)
b <- rep(NA, p)
for (i in 1:p) {
  coefi = coef(subsut_model, id = i)
  b[i] = sqrt(sum((B[x_cols %in% names(coefi)] - coefi[names(coefi) %in% x_cols])^2) + 
                sum(B[!(x_cols %in% names(coefi))])^2)
}
plot(x = 1:p, y = b, xlab = "number of coefficients", ylab = "error between estimated and true coefficients", ylim=c(0, 3.5))
```

Got some error, not plot correctly

but its minima should be x = 14

## ch07 Q3
### a
```r
x <- seq(-2, 2, 0.01)
y <- 1 + x + -2 * (x-1)^2 * I(x>1)
plot(x, y)
```
![](https://i.imgur.com/PzwRTW8.png)

## Q4
```r
x1 <- seq(-2, 0, 0.01)
y1 <- rep(1, length(x1))
x2 <- seq(0, 1, 0.01)
y2 <- rep(2, length(x2))
x3 <- seq(1, 2, 0.01)
y3 <- 3 - x3
x <- c(x1, x2, x3)
y <- c(y1, y2, y3)
plot(x, y)
```

![](https://i.imgur.com/8EQkgv9.png)
