Ejercicio 8

In this exercise, we will generate simulated data, and will then use this data to perform best subset selection. 1. Use the rnorm() function to generate a predictor X of length n = 100, as well as a noise vector of length n = 100. 2. Generate a response vector Y of length n = 100 according to the model \(y=\beta_0+\beta_1x+\beta_2x^2+\beta_3x^3+\epsilon\) where \(\beta_0,\: \beta_1,\: \beta_2 \:and\: \beta_3\) are constants of your choice. 3. Use the regsubsets() function to perform best subset selection in order to choose the best model containing the predictors \(x,\:x^2,\:\dots,\: x^{10}\) What is the best model obtained according to Cp, BIC, and adjusted R2? Show some plots to provide evidence for your answer, and report the coefficients of the best model obtained. Note you will need to use the data.frame() function to create a single data set containing both X and Y. 4. Repeat (c), using forward stepwise selection and also using backwards stepwise selection. How does your answer compare to the results in (c)? 5.Now fit a lasso model to the simulated data, again using \(x,\:x^2,\:\dots,\: x^{10}\) as predictors. Use cross-validation to select the optimal value of \(\lambda\). Create plots of the cross-validation error as a function of \(\lambda\). Report the resulting coefficient estimates, and discuss the results obtained. 6. Now generate a response vector Y according to the model \(y=\beta_0+\beta_7x^7+\epsilon\) and perform best subset selection and the lasso. Discuss the results obtained.

  1. Simulación.
set.seed(10197)
x<-rnorm(100, 10, 20)
e<-rnorm(100, 0, 1)
  1. Genero variable respuesta.
y<-.1+.2*x+3*x^2+4.4*x^3+e
data<-data.frame(y, x, x^2, x^3, x^4, x^5, x^6, x^7, x^8, x^9, x^10)
  1. Aplicando bestsubset

El modelo 5 tiene el R2_aj más alto y CP más bajo, sin embargo el modelo 3 tiene BIC más bajo

Coeficientes de los modelos:

## (Intercept)           x         x.2         x.3         x.8        x.10 
##   7.605e-02   2.164e-01   2.999e+00   4.400e+00   4.788e-13  -1.528e-16
## (Intercept)           x         x.2         x.3 
##    0.001118    0.197930    2.999673    4.400008
  1. Forward y backward

Forward

Coeficientes de los modelos:

## (Intercept)           x         x.2         x.3         x.4         x.5         x.8        x.10 
##   5.293e-02   2.005e-01   3.000e+00   4.400e+00  -1.282e-06  -4.559e-08   1.287e-12  -3.373e-16
## (Intercept)           x         x.2         x.3 
##    0.001118    0.197930    2.999673    4.400008
## (Intercept)           x         x.2         x.3         x.4 
##   7.071e-02   2.125e-01   2.999e+00   4.400e+00   5.951e-07

Modelo 7 con mayor R2_aj, modelo 3 con menor BIC y modelo 4 con menor CP

Backward

Modelo 5 con mayor R2_aj y menor CP, modelo 3 con menor BIC.

Coeficientes de los modelos:

## (Intercept)           x         x.2         x.3         x.6        x.10 
##   9.869e-02   2.159e-01   2.999e+00   4.400e+00   5.956e-10  -5.266e-17
## (Intercept)           x         x.2         x.3 
##    0.001118    0.197930    2.999673    4.400008

En bestsubset quedan los modelos 3 y 5. El modelo 5 tiene a las variables: x, x.2, x.3 x.8 y x.10, más el intercepto. El modelo 3 tiene a las variables: x, x.2 y x.3, más el intercepto.

En backward quedan los modelos 3 y 5, pero con distintas variables. El modelo 5 tiene a las variables: x, x.2, x.3, x.6 y x.10, más el intercepto. El modelo 3 tiene a las variables: x, x.2 y x.3, más el intercepto.

En forward quedan los modelos 7, 3 y 4. El modelo 7 tiene a las variables: x, x.2, x.3, x.4, x.5 x.8, x.10, más el intercepto. El modelo 3 tiene a las variables: x, x.2 y x.3, más el intercepto y el modelo 4 tiene a las variables: x, x.2, x.3 y x.4.

  1. Lasso

## (Intercept)           x         x.2         x.3         x.4         x.5         x.6         x.7         x.8         x.9        x.10 
##   2.954e+03   0.000e+00   3.506e-02   4.312e+00   0.000e+00   0.000e+00   0.000e+00   0.000e+00   0.000e+00   0.000e+00   0.000e+00

Solo quedan x.2, x.3 y el intercepto con coeficientes distintos de cero. Lo cual nos da un nuevo modelo.

  1. Generar nuevo vector de respuesta
detach(data)
y<-.1+7.7*x^7+e
data1<-data.frame(y, x, x^2, x^3, x^4, x^5, x^6, x^7, x^8, x^9, x^10)

Bestsubset

Modelo 4 y modelo 1. El modelo 4 tiene a las variables: x.3, x.7, x.5 y x.9, más el intercepto. El modelo 1 solo tiene a la variable x.7 y al intercepto.

Lasso

## (Intercept)           x         x.2         x.3         x.4         x.5         x.6         x.7         x.8         x.9        x.10 
##   1.322e+10   0.000e+00   0.000e+00   0.000e+00   0.000e+00   0.000e+00   1.612e+00   7.421e+00   0.000e+00   0.000e+00   0.000e+00

En Lasso, las variables cuyos coeficientes son distintos de cero son: x.2, x.7 y el intercepto.

Ejercicio 11

We will now try to predict per capita crime rate in the Boston data set. 1. Try out some of the regression methods explored in this chapter, such as best subset selection, the lasso, ridge regression, and PCR. Present and discuss results for the approaches that you consider. 2. Propose a model (or set of models) that seem to perform well on this data set, and justify your answer. Make sure that you are evaluating model performance using validation set error, crossvalidation, or some other reasonable alternative, as opposed to using training error. 3. Does your chosen model involve all of the features in the data set? Why or why not?

Best-subset

El criterio de BIC es más estricto y por eso aparece como mejor el modelo 6; R2 y RSS aumentan porque tenemos más variables incluidas, sin embargo el CP y R2_aj son buenos para el modelo 9, el modelo 9 es el mejor modelo con 9 variables, que son: zn, indus, nox, dis, rad, tax, ptratio, black y medv, más el intercepto. Variables del modelo 6: indus, nox, dis, rad, black y medv, más el intercepto.

Backward

De nuevo el mejor modelo es el que tiene 9 variables: zn, indus, nox, dis, rad, tax, ptratio, black y medv, más el intercepto. Y el modelo con 6 variables

Forward

De igual manera, sale el modelo con nueve variables. Y el modelo con seis variables

Validation set

Como las tres regresiones, bestsubset, forward y backward, arrojan los mismos modelos, solo voy a tomar el método de bestsubset

coef(reg.val.set, id=7)
## (Intercept)       indus         nox         dis         rad         tax       black        medv 
##     -1.5261      0.2810      2.7296     -0.5430      1.0074      0.4467     -0.1180     -0.4562
coef(bs, id=7)
## (Intercept)       indus         nox         dis         rad         tax       black        medv 
##     -1.5630      0.2412      2.4979     -0.5655      1.1087      0.4227     -0.1275     -0.4555

Aquí el mejor modelo es el que tiene siete variables: indus, nox, dis, rad, tax, black y medv, más el intercepto. El mejor modelo con siete variables y que fue calculado con bestsubset, forward y backward, tal que train=test, está formado por las mismas variables que al hacer remuestreo y partir en conjunto de entrenamiento y prueba, pero con distintos coeficientes.

Cross-Validation

Cross-Validation para escoger el mejor modelo.

Cross validation dice que tomemos el modelo con 9 variables, el cual ya fue obtenido con bestsubset.

Ridge regression

Plots sin particionar en test y train

Plots con conjunto de train y test

Resultados

##      MSE apartente mejor lambda MSE test Mejor lambda train y test
## [1,]        0.6205        0.198   0.7484                    0.2031

Ridge no nos sirve para seleccionar modelo.

Lasso

Plots sin particionar en test y train

Plots con train y test

Resultados

##      MSE apartente mejor lambda MSE test Mejor lambda train y test
## [1,]        0.6334      0.01187   0.6195                   0.05774

Con Lasso sí hay selección de modelo ya que algunos betas son iguales a cero. Cuando no particiono lasso arroja el modelo con las siguientes variables cuyos coeficientes son distintos de cero: zn, indus, nox, dis, rad, tax, black, lstat y medv, más intercepto. En el mejor modelo con 9 variables, obtenido con bs, fw y bw, usamos ptratio en vez de lstat. Cuando particionamos en train y test tenemos las Variables con coeficientes distintos de cero: nox, dis, rad, tax, lstat y medv, más intercepto.

Propuesta de mejores modelos: modelo con 6 variables(BIC), el modelo con 9(bs, fw, bw y cv), el modelo 7(validation set) y los dos obtenidos con lasso. Aunque el que más veces apareció como buen modelo, es el que está formado por 9 variables, y éstas variables son las que arrojó bs, fw, bw y cv. Sin embargo ninguno de estos modelos incluye a todos los predictores, ésto porque con los criterios usados los modelos obtenidos son los mejores y si agregamos más predictores no hay tan buen ajuste.