---
title: "Práctica 1"
output:
  pdf_document: default
  html_document:
    df_print: paged
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)
  str(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)
```

Al ajustar el modelo realizamos los siguientes cálculos, aunque no aparezcan directamente.

```{r Exploración del modelo ajustado, message=FALSE}
  attributes(ml1)
  attributes(summary(ml1))
```

Extraigamos las estimaciones de los coeficientes, valores ajustados y residuos.

```{r Cálculos, message=FALSE}
  ml1$coefficients
  ml1$fitted.values
  ml1$residuals
```


***Comentarios***


La ecuación ajustada por mínimos cuadrados es:

y= -6.8207741 +  0.2272460x1 +   0.5537262x2  - 0.1495356x3   0.1546501x4


### Diagnóstico del modelo
Antes de interpretar los resultados del ajuste, debemos comprobar que los datos no contradicen las hipótesis teóricas 
del modelo ajustado. Para ello se realiza un análisis de residuos. Se utilizan los residuos definidos en clase y también los residuos estandarizados

$$s_i=\frac{e_i}{\sqrt{\hat\sigma^2(1-h_{ii})}}$$
siendo $e_i$ y $h_{ii}$ el $i$-ésimo residuo y el $i$-ésimo coeficiente de la diagonal de la matriz $H=X(X^tX)^{-1}X^t$, respectivamente.
 

En primer lugar realizaremos los gráficos de residuos.

```{r Gráficos de residuos, message=FALSE}
  layout(matrix(1:4,2))
  plot(ml1)
```


Hay que comprobar:


**La linealidad de los datos**. Consiste en ver lo adecuado que es el modelo lineal supuesto. Se comprueba con el gráfico de residuos frente a valores ajustados.


***Comentarios***


   
**La normalidad de los datos (o de los errores)**. Para ello, además del gráfico de cuantiles con los residuos estandarizados, podemos realizar el contraste:
  
  $H_0: \varepsilon$ se ajusta a la distribución Normal
  
```{r Normalidad, message=FALSE}
    shapiro.test(rstandard(ml1))
```


***Comentarios***



  
**La igualdad de las varianzas de los errores (homocedasticidad)**. Se comprueba con el gráfico de residuos frente a valores ajustados o también realizando el contraste de Breusch-Pagan:
  
  $H_0:\sigma_1^2=\dots=\sigma_n^2$
  
  
```{r Igualdad de varianzas, message=F}
  library(lmtest)
  bptest(ml1)
```
  

***Comentarios***

  
  
**La no correlación de los errores (autocorrelación)**. Para ello se asume que cada error se relaciona con el anterior mediante la ecuación $\varepsilon_{i+1}=\rho\varepsilon_i+u_i$ con $u_i$ variable normal de media 0, es decir autocorrelaciones de primer orden. El test de Durbin-Watson contrasta

$H_0:\rho=0$ (es decir, ausencia de autocorrelación)
  
```{r Autocorrelación de orden 1, message=F}
  library(lmtest)
  dwtest(ml1)
```

Si se desea contrastar autocorrelaciones de órdenes superiores se puede utilizar el test de Breusch-Godfrey:

```{r Autocorrelación de orden superior, message=FALSE}
  library(lmtest)
  bgtest(ml1,order=2)
```


***Comentarios***



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

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


***Comentarios***

 

### Análisis del modelo

Si todo ha funcionado, interpretamos los resultados del modelo
  
```{r Resumen del modelo, message=F}
  summary(ml1)
```
  
***Comentarios***



Calculemos intervalos de confianza para los coeficientes, en este caso al nivel de confianza del 99%
  
```{r Intervalos de confianza, message=F} 
confint(ml1,level=0.99)
```
  

  
##  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.
  

**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***

  



## 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.

Utilizar las cinco bandas de radiación ($x1, x2, x3, x4, x5$) como variables de predicción y las concentraciones de feldespato ($y$) como la respuesta, para ajustar un modelo de regresión lineal. 



## 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.

Obtener una ecuación que permita predecir el rendimiento en función de las variables anteriormente citadas. Determinar la bondad del ajuste.

