---
title: "Práctica 1b"
output:
  html_document:
    df_print: paged
  pdf_document: default
date: "2026-02-25"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

<!--## R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.

When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:-->

## Ejercicio 1:

N.H. Prater  desarrolló una ecuación de regresión para estimar la producción de gasolina como una función de las propiedades de destilación de cierto tipo de petróleo crudo. Se identificaron cuatro variables de predicción: la graduación del petróleo crudo,  grados API ($x1$); la presión de vapor del petróleo crudo, psi ($x2$); el punto de 10% ASTM para el petróleo crudo, grados Fahrenheit ($x3$) y el punto final ASTM para la gasolina, grados Farenheit ($x4$). Los dos primeros miden la graduación y la presión de vapor del petróleo crudo. El punto de 10% ASTM es la temperatura para la cual se ha evaporado cierta cantidad de líquido, y el punto final para la gasolina es la temperatura para la cual se ha evaporado todo el líquido. La variable respuesta ($y$) fue la cantidad de gasolina producida expresada como un porcentaje respecto al total de petróleo crudo. Los datos de laboratorio obtenidos por Prater se muestran en el archivo PRATER.DAT. Se trata de realizar un análisis de estos datos.


Vamos a importar y chequear los datos.

```{r Captura de datos, message=FALSE}
prater<-read.table("./datos/prater.dat",head=T)
  colnames(prater)
  summary(prater)
```


### Ajuste del modelo

Ajustamos el modelo de regresión lineal de $y$ sobre el resto de variables:

$y=\beta_0+\beta_1x_1+\beta_2x_2+\beta_3x_3+\beta_4x_4+\varepsilon$

```{r Ajuste del modelo lineal, message=FALSE}
ml1<-lm(y~x1+x2+x3+x4,data=prater)
  summary(ml1)
```


**Multicolinealidad**  Se utilizan los factores de inflacción de la varianza (vif).

```{r Multicolinealidad, message=F}
  library(car)
  vif(ml1)
```


### Selección de variables

Si el modelo presenta multicolinealidad o si deseamos eliminar variables regresoras que no sean significativas, debemos utilizar métodos de selección de variables. Estos métodos se basan en ciertos coeficientes que proporcionan información sobre la adecuación del modelo con y sin la variable. Se consideran para su selección desde el modelo sin variables regresoras hasta el modelo que hemos analizado con todas las posibles variables regresoras.

Ajustemos el modelo sin variables regresoras:

```{r Modelo sin variables regresoras, message=F}
   ml0<-lm(y~1,data=prater)
```

***Selección basada en AIC***. El Criterio de Información de Akaike (AIC) está basado en la verosimilitud  máxima ($Lmax$) del modelo:
$$
AIC=2k-2\log(Lmax)
$$
siendo $k$ el número de parámetros del modelo. El ajuste será mejor cuanto mayor sea el valor de AIC. Se busca por tanto el modelo con el menor AIC de todos los considerados.

```{r Selección basada en AIC, message=F}
   library(MASS)
   ml0<-lm(y~1,data=prater)
   stepAIC(ml0,scope=list(upper=ml1,lower=ml0),direction="forward")
   stepAIC(ml1,scope=list(upper=ml1,lower=ml0),direction="backward")
```
  
***Comentarios***


***Selección basada en los p-valores***. Se fija un umbral. En el método *forward* entra en el modelo la variable con el menor p-valor por debajo de dicho umbral (caso de que exista). En el método *backward* sale del modelo la variable con mayor p-valor por encima de dicho umbral.

```{r Selección basada en p-valor, message=F}
  library(olsrr)
  ols_step_backward_p(ml1, p_val=0.1,print_plot=T)
  ols_step_forward_p(ml1, p_val = 0.1)
  ols_step_forward_p(ml1, p_val = 0.1,details=T)
```
  
***Comentarios***


### Predicciones
Utilicemos el modelo para realizar predicciones de nuevos valores de $y$.
```{r Predicciones, message=F}
  ml2<-lm(y~x1+x3+x4,data=prater)
  predict(ml2,data.frame(x1=40, x2=5, x3=270,  x4=350), interval="confidence")
  predict(ml2,data.frame(x1=40, x2=5, x3=270,  x4=350), interval="prediction")
```

***Comentarios***

  
##  Ejercicio 2:
Se realiza un experimento para determinar el calor desarrollado en la fabricación de cemento en función de los porcentajes de 4 compuestos activos que se utilizan en la fabricación. Para ello se elige una muestra de 13 cementos, midiéndose el calor desarrollado de cals/g ($y$) y los porcentajes de los compuestos referidos ($x1, x2, x3, x4$). Los datos se encuentran en el archivo CEMENTO.DAT. Calcula la ecuación pedida, investigando la bondad del ajuste y eliminando de modo razonado  alguna de las variables predictoras del modelo, si ello fuera necesario.
  
**Ajuste y análisis del modelo**
```{r Captura de datos y ajuste del modelo, message=F}
  cemento<-read.table("./datos/cemento.dat",head=T)
  colnames(cemento)
  ml3<-lm(y~.,data=cemento)
  summary(ml3)
```
  
***Comentarios***


**Estudio de multicolinealidad**
```{r Multicolinealidad ejercicio 2, message=F}
  library(car)
  vif(ml3)
```

***Comentarios***

  
  
**Selección de variables**
```{r Selección de variables ejercicio 2, message=F}
  library(olsrr)
  ols_step_backward_p(ml3,prem=0.1,details=T)
  ols_step_backward_aic(ml3,details=T)
  ols_step_forward_p(ml3,prem=0.1,details=T)
  ols_step_forward_aic(ml3,details=T)
```
  
***Comentarios***



## Ejercicio 3:
A la hora de vigilar la concentración de contaminantes en los acuíferos, se piensa que un cambio en la concentración de un contaminante causará un cambio en el valor del flujo de radiaciones, es decir, si se conocen los valores de la radiación para diferentes bandas espectrales, entonces es posibles predecir la concentración de un contaminante en una fuente de agua
dada. El problema reside en el hecho de identificar, de entre todas las bandas, cuál es la que puede predecir la concentración del contaminante. En un laboratorio, se obtuvieron datos reales de percepción remota, bajo condiciones controladas, que empleó cinco bandas y varios constituyentes, entre ellos el sedimento del feldespato. Los datos de la muestra se proporcionan en el archivo ACUIF.DAT.

Como continuación del análisis realizado en la práctica anterior, selecciona las bandas espectrales que determinan la concentración del contaminante.



## Ejercicio 4 
Se toman datos de 209 ordenadores con el objeto de predecir el rendimiento de la cpu ($y$) en función de una serie de variables. El rendimiento se mide tomando como punto de referencia la cpu de un determinado modelo de la firma IBM. Las variables predictoras son el tiempo de cada ciclo en nanosegundos ($x1$), la memoria principal máxima ($x2$), la memoria principal mínima ($x3$), ambas en kilobytes, el tamaño de la memoria caché ($x4$), también en kilobytes, el número mínimo ($x5$) y máximo ($x6$) de canales. Los datos se encuentran en el archivo CPUS.DAT.

Como continuación del análisis realizado en la práctica anterior, determina el grupo de variables que resultan significativas mediante un procedimiento de entrada o salida.

