Introduccion

En este taller de regresión, aprenderás los conceptos básicos de la regresión y sus aplicaciones. Estudiaremos modelos de regresión lineal, su formulación matemática y cómo interpretar los resultados. Discutiremos las suposiciones necesarias para la validez del modelo, y aprenderás a evaluar la calidad del mismo usando diversas métricas. También exploraremos métodos avanzados de regresión no lineal. Finalmente, realizarás ejercicios prácticos con software estadístico para aplicar los conceptos y trabajar con datos reales.

Primer Ejercicio 1. El artículo .The Incorporation of Uranium and Silver by Hydrothermally Synthesized Galena (Econ. Geology, 1964: 1003-1024) reporta sobre la determinación de contenido de plata de cristales de galena desarrollados en un sistema hidrotérmico cerrado dentro de un rango de temperatura. Con x : temperatura de cristalización en °C y y : Ag2S en mol %, los datos son los siguientes:

  1. Aplique el análisis de regresión lineal simple (gráfico de dispersión, ajuste del modelo, hipótesis para los parámetros del modelo, anova , verificación de los supuestos) a los datos y publicar los resultados e Rpub.

  2. Suponga que previamente se creía que cuando la temperatura de cristalización era de 410°C, el contenido de plata promedio verdadero sería de 0.20. Realice una prueba a un nivel de significación de 0.05 para decidir si los datos muestrales contradicen esta creencia previa

Datos:

x <- c(398, 292, 352, 575, 568, 450, 550, 408, 484, 350, 503, 600, 600)
y <- c(0.15, 0.05, 0.23, 0.43, 0.23, 0.40, 0.44, 0.44, 0.45, 0.09, 0.59, 0.63, 0.63)
  1. Gráfico de Dispersión:
plot(x, y, main="Gráfico de dispersión de Temperatura vs Ag2S", xlab="Temperatura (°C)", ylab="Ag2S (mol%)")

  1. Ajuste del modelo de regresión lineal:
modelo <- lm(y ~ x)
summary(modelo)
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.27713 -0.08736  0.03855  0.07610  0.17786 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept) -0.3230052  0.1754542  -1.841  0.09273 . 
## x            0.0014615  0.0003639   4.016  0.00203 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.132 on 11 degrees of freedom
## Multiple R-squared:  0.5945, Adjusted R-squared:  0.5577 
## F-statistic: 16.13 on 1 and 11 DF,  p-value: 0.002029
  1. Añadir la línea de regresión al gráfico:
plot(x, y, main="Gráfico de dispersión de Temperatura vs Ag2S", xlab="Temperatura (°C)", ylab="Ag2S (mol%)")
abline(modelo, col="black")

  1. ANOVA del modelo:
anova(modelo)
## Analysis of Variance Table
## 
## Response: y
##           Df  Sum Sq  Mean Sq F value   Pr(>F)   
## x          1 0.28093 0.280927   16.13 0.002029 **
## Residuals 11 0.19158 0.017416                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  1. Verificación de los supuestos del modelo:
par(mfrow=c(2,2))
plot(modelo)

  1. Prueba de Hipótesis para x=410°C:
nuevo_dato <- data.frame(x = 410)
prediccion <- predict(modelo, nuevo_dato, interval = "confidence")
prediccion
##         fit       lwr       upr
## 1 0.2762147 0.1817718 0.3706575
#Prueba t
t.test(y, mu=0.20, alternative="two.sided", conf.level=0.95)
## 
##  One Sample t-test
## 
## data:  y
## t = 3.019, df = 12, p-value = 0.01068
## alternative hypothesis: true mean is not equal to 0.2
## 95 percent confidence interval:
##  0.2462420 0.4860657
## sample estimates:
## mean of x 
## 0.3661538

Conclucion del primer ejecicio

En el primer ejercicio del taller de regresión, los participantes aplican los conceptos fundamentales de la regresión lineal simple utilizando un conjunto de datos real. Construyen un modelo de regresión para analizar la relación entre dos variables, enfatizando la interpretación de los coeficientes y la evaluación del modelo a través del análisis de residuos y métricas de rendimiento. Al concluir el ejercicio, los participantes deben ser capaces de evaluar la efectividad del modelo y comprender cómo las variaciones en la variable independiente influyen en la variable dependiente.

segundo Ejercicio 2. queremos predecir el y : tiempo de respuesta de un servidor (en milisegundos) en función de varias variables independientes: el x1: número de usuarios concurrentes, x2 uso de la CPU ( %), x3 cantidad de memoria disponible (MB), x4 ancho de banda (Mbps) y x5 latencia de red (ms)

Datos:

datos <- data.frame(
  tiempo_respuesta = c(170, 165, 168, 175, 180, 190, 185, 220, 220, 240),
  usuarios_concurrentes = c(13, 12, 11, 16, 15, 20, 19, 24, 25, 28),
  uso_cpu = c(40, 35, 32, 40, 60, 55, 55, 65, 72, 75),
  memoria_disponible = c(1648, 1900, 1740, 1710, 1600, 1500, 1360, 1300, 1200, 1100),
  ancho_banda = c(80, 95, 85, 82, 80, 75, 70, 65, 60, 55),
  latencia_red = c(18, 25, 28, 30, 40, 45, 50, 55, 60, 65)
)
  1. Ajuste del modelo de regresión lineal múltiple:
modelo_multiple <- lm(tiempo_respuesta ~ ., data=datos)
summary(modelo_multiple)
## 
## Call:
## lm(formula = tiempo_respuesta ~ ., data = datos)
## 
## Residuals:
##       1       2       3       4       5       6       7       8       9      10 
##  1.0267  5.6131  5.7701 -7.8724 -0.7862 -6.4893 -6.7745  4.9594 -1.8551  6.4082 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)
## (Intercept)           125.26435   88.78967   1.411    0.231
## usuarios_concurrentes   2.93885    2.04789   1.435    0.225
## uso_cpu                 0.23891    0.58176   0.411    0.702
## memoria_disponible      0.09949    0.14408   0.690    0.528
## ancho_banda            -2.16073    2.76459  -0.782    0.478
## latencia_red            0.26966    0.77829   0.346    0.746
## 
## Residual standard error: 8.449 on 4 degrees of freedom
## Multiple R-squared:  0.9535, Adjusted R-squared:  0.8954 
## F-statistic: 16.41 on 5 and 4 DF,  p-value: 0.009021
  1. ANOVA del modelo:
anova(modelo_multiple)
## Analysis of Variance Table
## 
## Response: tiempo_respuesta
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## usuarios_concurrentes  1 5797.2  5797.2 81.2057 0.0008397 ***
## uso_cpu                1   10.9    10.9  0.1530 0.7156091    
## memoria_disponible     1    3.2     3.2  0.0445 0.8431616    
## ancho_banda            1   36.7    36.7  0.5142 0.5129565    
## latencia_red           1    8.6     8.6  0.1200 0.7464419    
## Residuals              4  285.6    71.4                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  1. Verificación de los supuestos del modelo:
par(mfrow=c(2,2))
plot(modelo_multiple)
## Warning in sqrt(crit * p * (1 - hh)/hh): Se han producido NaNs
## Warning in sqrt(crit * p * (1 - hh)/hh): Se han producido NaNs

  1. Método backward:
modelo_backward <- step(modelo_multiple, direction="backward")
## Start:  AIC=45.52
## tiempo_respuesta ~ usuarios_concurrentes + uso_cpu + memoria_disponible + 
##     ancho_banda + latencia_red
## 
##                         Df Sum of Sq    RSS    AIC
## - latencia_red           1     8.570 294.12 43.814
## - uso_cpu                1    12.039 297.59 43.931
## - memoria_disponible     1    34.037 319.59 44.645
## - ancho_banda            1    43.608 329.16 44.940
## <none>                               285.55 45.518
## - usuarios_concurrentes  1   147.018 432.57 47.672
## 
## Step:  AIC=43.81
## tiempo_respuesta ~ usuarios_concurrentes + uso_cpu + memoria_disponible + 
##     ancho_banda
## 
##                         Df Sum of Sq    RSS    AIC
## - uso_cpu                1    18.574 312.70 42.427
## - memoria_disponible     1    26.232 320.36 42.668
## - ancho_banda            1    36.710 330.84 42.990
## <none>                               294.12 43.814
## - usuarios_concurrentes  1   289.324 583.45 48.664
## 
## Step:  AIC=42.43
## tiempo_respuesta ~ usuarios_concurrentes + memoria_disponible + 
##     ancho_banda
## 
##                         Df Sum of Sq    RSS    AIC
## - memoria_disponible     1     12.14 324.84 40.808
## - ancho_banda            1     23.14 335.84 41.140
## <none>                               312.70 42.427
## - usuarios_concurrentes  1    435.74 748.44 49.154
## 
## Step:  AIC=40.81
## tiempo_respuesta ~ usuarios_concurrentes + ancho_banda
## 
##                         Df Sum of Sq    RSS    AIC
## - ancho_banda            1     20.10 344.94 39.408
## <none>                               324.84 40.808
## - usuarios_concurrentes  1    425.26 750.10 47.176
## 
## Step:  AIC=39.41
## tiempo_respuesta ~ usuarios_concurrentes
## 
##                         Df Sum of Sq    RSS    AIC
## <none>                                344.9 39.408
## - usuarios_concurrentes  1    5797.2 6142.1 66.203
summary(modelo_backward)
## 
## Call:
## lm(formula = tiempo_respuesta ~ usuarios_concurrentes, data = datos)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -9.317 -4.835  1.197  3.831  8.162 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           112.4300     7.1118   15.81 2.56e-07 ***
## usuarios_concurrentes   4.3098     0.3717   11.60 2.78e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.566 on 8 degrees of freedom
## Multiple R-squared:  0.9438, Adjusted R-squared:  0.9368 
## F-statistic: 134.5 on 1 and 8 DF,  p-value: 2.783e-06
  1. Método forward:
modelo_forward <- step(lm(tiempo_respuesta ~ 1, data=datos), scope=formula(modelo_multiple), direction="forward")
## Start:  AIC=66.2
## tiempo_respuesta ~ 1
## 
##                         Df Sum of Sq    RSS    AIC
## + usuarios_concurrentes  1    5797.2  344.9 39.408
## + ancho_banda            1    5392.0  750.1 47.176
## + memoria_disponible     1    5345.0  797.1 47.784
## + latencia_red           1    5194.2  947.9 49.517
## + uso_cpu                1    5124.1 1018.0 50.230
## <none>                               6142.1 66.203
## 
## Step:  AIC=39.41
## tiempo_respuesta ~ usuarios_concurrentes
## 
##                      Df Sum of Sq    RSS    AIC
## <none>                            344.94 39.408
## + ancho_banda         1   20.0960 324.84 40.808
## + uso_cpu             1   10.9239 334.01 41.086
## + memoria_disponible  1    9.1019 335.84 41.140
## + latencia_red        1    0.7420 344.20 41.386
summary(modelo_forward)
## 
## Call:
## lm(formula = tiempo_respuesta ~ usuarios_concurrentes, data = datos)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -9.317 -4.835  1.197  3.831  8.162 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           112.4300     7.1118   15.81 2.56e-07 ***
## usuarios_concurrentes   4.3098     0.3717   11.60 2.78e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.566 on 8 degrees of freedom
## Multiple R-squared:  0.9438, Adjusted R-squared:  0.9368 
## F-statistic: 134.5 on 1 and 8 DF,  p-value: 2.783e-06

Conclucion del segundo ejercicio

En el segundo ejercicio del taller de regresión, los participantes exploran modelos de regresión múltiple para analizar la influencia de varias variables independientes sobre una variable dependiente. Utilizando un conjunto de datos más complejo, construyen un modelo que permite evaluar la contribución individual de cada variable independiente. Al concluir el ejercicio, los participantes deben ser capaces de interpretar los coeficientes de cada variable, entender las interacciones entre ellas y evaluar la robustez del modelo. Este ejercicio resalta la importancia de considerar múltiples factores al analizar datos y mejora la capacidad de construir modelos predictivos más precisos.