library(rsconnect)
## Warning: package 'rsconnect' was built under R version 4.0.5
rpubsUpload("Actividad3","Actividad3.html", originalDoc = NULL,id = NULL,properties = list())
## $id
## [1] "https://api.rpubs.com/api/v1/document/804839/1bdda7fcbd8e4df8bba12c00c70b960b"
## 
## $continueUrl
## [1] "http://rpubs.com/publish/claim/804839/c9f37123c43042ddaac7178e6ceea3e5"
Con la intención de comparar el desempeño de dos clases de disco duros (0:SDD, 1:HDD). Este desempeño es medido a través de la variable Y: tiempo de respuesta del disco (segundos), la cual se relaciona, posiblemente bajo una dependencia no lineal, de X: la carga del sistema (número de consultas por minuto). Se han realizado múltiples ensayos bajo ambas configuraciones y bajo variación de la carga del sistema. Los resultados se presentan en la siguiente tabla.

 

Datos<- read.delim(file.choose("DatosTaller.txt"))
library(tidyverse)
library(kableExtra)
DatosActividad3<- Datos[1:25, 1:3]
kbl(DatosActividad3) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Conf Carga Tiempo
1 1.0 0.9
0 2.0 0.3
1 2.4 2.0
0 3.1 0.8
1 4.0 2.7
1 4.3 2.6
0 5.8 2.5
0 6.6 3.2
0 7.5 3.7
1 8.0 3.9
0 9.0 5.3
1 9.2 4.2
1 10.2 3.9
1 1.8 1.1
1 2.0 1.5
0 2.5 0.5
0 3.9 1.5
0 4.2 1.6
1 5.5 3.3
0 6.4 3.3
1 7.0 3.5
0 8.0 4.3
1 8.2 4.0
1 9.1 4.3
0 9.5 5.8
1. Represente gráficamente la relación entre el tiempo de respuesta y la carga de trabajo diferenciando los dos tipos de disco duro. ¿Se evidencia una relación lineal? Mida la fuerza de esta relación para ambos tipos de disco realizando los test correspondientes test de correlación en cada caso.

 

Carga <- DatosActividad3$Carga
Tiempo <- DatosActividad3$Tiempo
Disco <- as.factor(DatosActividad3$Conf)
ggplot(data= DatosActividad3)+
  geom_point(aes(x=Carga, y=Tiempo, col = Disco))
Relacionando las variables con las que se va a trabajar a lo largo del informe y diferenciando con los dos tipos de disco duro se aprecia que ambos a simple vista siguen trayectorias distintas y relaciones algo diferentes. Con esto, claramente en conjunto los datos no siguen una relación tan lineal.

 

Como se busca identificar las diferencias en desempeño para los dos tipos de disco duro se procederá a extraer dos subsets de datos respectivos para cada disco.
library(dplyr)
Datos1 <- DatosActividad3 %>% filter(Conf == 1)
Datos1
##    Conf Carga Tiempo
## 1     1   1.0    0.9
## 2     1   2.4    2.0
## 3     1   4.0    2.7
## 4     1   4.3    2.6
## 5     1   8.0    3.9
## 6     1   9.2    4.2
## 7     1  10.2    3.9
## 8     1   1.8    1.1
## 9     1   2.0    1.5
## 10    1   5.5    3.3
## 11    1   7.0    3.5
## 12    1   8.2    4.0
## 13    1   9.1    4.3
Datos2 <- DatosActividad3 %>% filter(Conf == 0)
Datos2
##    Conf Carga Tiempo
## 1     0   2.0    0.3
## 2     0   3.1    0.8
## 3     0   5.8    2.5
## 4     0   6.6    3.2
## 5     0   7.5    3.7
## 6     0   9.0    5.3
## 7     0   2.5    0.5
## 8     0   3.9    1.5
## 9     0   4.2    1.6
## 10    0   6.4    3.3
## 11    0   8.0    4.3
## 12    0   9.5    5.8
Continuando se pasa a analizar de manera breve las dos variables (Carga, Tiempo), por medio de los histogramas que incluyan lineas de densidad.

 

ggplot(data = DatosActividad3, mapping = aes(x=DatosActividad3$Carga)) +
  geom_histogram(aes(y= ..density..), color = "gray", fill="darkmagenta") +
  stat_function(fun = dnorm, args = list(mean= mean(DatosActividad3$Carga), sd= sd(DatosActividad3$Carga)))+
  geom_density(fill="black", alpha=0.2)+
    labs(title = "                                       Histograma de la variable carga",
         x = "Carga del sistema",
         y = "Densidad",
         caption = "Fuente: elaboración popia.")

ggplot(data = DatosActividad3, mapping = aes(x=DatosActividad3$Tiempo)) +
  geom_histogram(aes(y= ..density..), color = "gray", fill="darkmagenta") +
  stat_function(fun = dnorm, args = list(mean= mean(DatosActividad3$Tiempo), sd= sd(DatosActividad3$Tiempo)))+
  geom_density(fill="black", alpha=0.2)+
    labs(title = "                                       Histograma de la variable Tiempo",
         x = "Tiempo de respuesta",
         y = "Densidad",
         caption = "Fuente: elaboración popia.")
Al observar ambos histogramas es dificil a primera vista concluir acerca de la normalidad de dichas variables, aunque las frecuencias están distribuidas de manera uniforme a lo largo de los dos gráficos, con las lineas de densidad tambien se logra detallar una cierta normalidad.

 

Con la prueba formal de Anderson-Darling Bera, se puede validar la normalidad a las dos variables. Con unos contrastes de hipótesis:

\[H_0 ∶ l a \ variable\ carga\ es \ normal\\ 𝐻_1 ∶ l a \ variable\ carga\ no\ es \ normal\\\]

\[H_0 ∶ l a \ variable\ tiempo\ es \ normal\\ 𝐻_1 ∶ l a \ variable\ tiempo\ no\ es \ normal\\\]

library(nortest)
ad.test(DatosActividad3$Carga)
## 
##  Anderson-Darling normality test
## 
## data:  DatosActividad3$Carga
## A = 0.52694, p-value = 0.1617
ad.test(DatosActividad3$Tiempo)
## 
##  Anderson-Darling normality test
## 
## data:  DatosActividad3$Tiempo
## A = 0.35944, p-value = 0.4221
Observando los anteriores resultados en los cuales los tests arrojan unos p-valores mayores al nivel de significancia de 0.05, esto lleva al no rechazo de las hipótesis nulas, de lo que se puede concluir que las variables carga y tiempo no presentan problemas de normalidad.

 

Para poder utilizar algún test de correlación (Pearson o Spearman), anteriormente se analizó de manera gráfica con un histograma el comportamiento de la variable;adicional, se realizó una prueba formal para que de manera conjunta se determine la normalidad o no de dichas variables. Se llega a la conclusión de que las dos variables siguen una distribución normal por lo tanto el test de correlación que se utiliza en este caso es el de Pearson.

 

  • Fuerza de la relación para HDD:
cor.test(x= Datos1$Carga, y= Datos1$Tiempo, alternative = "less", method = "pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  Datos1$Carga and Datos1$Tiempo
## t = 12.024, df = 11, p-value = 1
## alternative hypothesis: true correlation is less than 0
## 95 percent confidence interval:
##  -1.0000000  0.9871297
## sample estimates:
##       cor 
## 0.9640003
Los resultados del test de Pearson indican una correlación lineal entre el tiempo y la carga, esta es alta, positiva, y estadísticamente no significativa (t(11) = 12.02, p > 0.001, r = 0.96). Este valor indica una relación lineal fuerte entre las variables.

 

  • Fuerza de la relación para SDD:
cor.test(x= Datos2$Carga, y= Datos2$Tiempo, alternative = "less", method = "pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  Datos2$Carga and Datos2$Tiempo
## t = 28.334, df = 10, p-value = 1
## alternative hypothesis: true correlation is less than 0
## 95 percent confidence interval:
##  -1.0000000  0.9979347
## sample estimates:
##       cor 
## 0.9938293
Para el caso del tipo de disco SDD, la prueba de correlación de Pearson arroja que se tiene una relación positiva, y alta, un poco más que para el caso del disco HDD, y estadísticamente no significa (t(10) = 28.334, p > 0.001, r = 0.99). El coeficiente de 0.99 es lo suficientemente cercano a 1 para indicar cercanía a una relación lineal perfecta.

 

2. Ajuste un primer modelo de regresión simple (Modelo 1) que reproduzca la relación entre la carga y el modelo e interprete los resultados obtenidos.
Carga <- DatosActividad3$Carga
Tiempo <- DatosActividad3$Tiempo
Modelo1 <- lm(Tiempo ~ Carga)
summary(Modelo1)
## 
## Call:
## lm(formula = Tiempo ~ Carga)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.16824 -0.40281 -0.03945  0.43541  1.07627 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.04838    0.26321   0.184    0.856    
## Carga        0.49214    0.04177  11.783 3.18e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5837 on 23 degrees of freedom
## Multiple R-squared:  0.8579, Adjusted R-squared:  0.8517 
## F-statistic: 138.8 on 1 and 23 DF,  p-value: 3.177e-11
Observado la salida del Modelo 1, en primera instancia se analiza el p-valor asociado a esta prueba, esto para conocer si el ajuste del modelo es adecuado, es decir, que sea realmente significativo. Con lo cual se puede concluir que dado un p-valor de 8.571e-11, este es < 0.05, por lo que lleva al rechazo de la hipótesis nula, con lo cual el modelo de regresión descrito anteriormente es estadisticamente significativo.

 

Por otro lado se tiene al R-cuadrado, en este caso el valor es de 0.8579, esto quiere decir que la variabilidad total en la variable Y(Tiempo de respuesta de los discos duros) se explica en más del 85% por la variación de la variable X (Carga del sistema), esto implica que hay un ajuste lineal muy alto entre ambas variables.

 

Por último se tienen al intercepto y la pendiente; el primero quiere decir que cuando la variable X(Carga del sistema) es igual a cero, dicho en otras palabras, cuando no haya número de consultas por minuto, el valor promedio de la variable Y(Tiempo de respuesta) será de 0.13527. Y el segundo quiere decir que cuando la variable independiente “carga del sistema” aumenta en una unidad, el tiempo de respuesta de los discos duros va a aumentar en promedio 0.46814.

 

ggplot(DatosActividad3, aes(x= Carga, y=Tiempo)) +
  geom_point(col = "#6930c3") +
  geom_line(aes(x=Carga, y= predict(Modelo1)),
            col = "#e0aaff", size = 1.3) +
        labs(title ="        Relación entre tiempo de respuesta y la carga de trabajo (Modelo 1)",
         x = "Carga del sistema",
         y = "Tiempo de respuesta del disco",
         caption = "Fuente: elaboración popia.") 

par(mfrow=c(2,2))
plot(Modelo1)

En la primera gráfica que relaciona los residuales y los valores estimados, aquí no hay una tendencia tan marcada de los valores, pero si se puede observar que oscilan de manera constante alrededor del cero, a excepción de unos valores atipicos que desvian la muestra; esto se aprecia tambien en la gráfica de normalidad, la cual tiene una tendencia uniforme y visualmente se dice que se sigue una distribución normal, pero persiste tambien visualmente estos valores atipicos. En la última gráfica se puede anotar que existe un punto influyente, el cual es el dato 13, este corresponde a la mayor carga del sistema registrada en la muestra (10.2), de ahí que sea tan diferente al conjunto de datos.

 

3. Obtenga un nuevo modelo (Modelo 2) en el que incluya el tipo de disco y su interacción con la carga del equipo. Analice los resultados y evalue la bondad de ajuste del nuevo modelo.

 

Al incluir el tipo de disco duro (descrito por la variable “Disco”) se obtienen los siguientes resultados:

Modelo2 <- lm(Tiempo ~ Carga + Disco)
summary(Modelo2)
## 
## Call:
## lm(formula = Tiempo ~ Carga + Disco)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.28711 -0.34478  0.02705  0.35573  1.19726 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.08105    0.29168  -0.278    0.784    
## Carga        0.49303    0.04173  11.815 5.36e-11 ***
## Disco1       0.23926    0.23348   1.025    0.317    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5831 on 22 degrees of freedom
## Multiple R-squared:  0.8644, Adjusted R-squared:  0.852 
## F-statistic:  70.1 on 2 and 22 DF,  p-value: 2.859e-10
El r-cuadrado mejora en una proporción bastante reducida respecto al modelo que no incluía la variable “Disco”. Ahora, dado que se ha observado que la carga del sistema se ve influenciada por el tipo de disco duro que se utilice (HDD o SDD), es apropiado concluir que el modelo a implementar debe incluir una variable que represente la interacción entre estas dos:

 

Modelo2 <- lm(Tiempo ~ Carga + Disco + (Carga*Disco))
summary(Modelo2)
## 
## Call:
## lm(formula = Tiempo ~ Carga + Disco + (Carga * Disco))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.68547 -0.11333  0.06881  0.15302  0.41807 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -1.37549    0.20902  -6.581 1.62e-06 ***
## Carga         0.71979    0.03367  21.376 9.88e-16 ***
## Disco1        2.26391    0.26520   8.536 2.86e-08 ***
## Carga:Disco1 -0.35734    0.04227  -8.454 3.36e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2844 on 21 degrees of freedom
## Multiple R-squared:  0.9692, Adjusted R-squared:  0.9648 
## F-statistic: 220.2 on 3 and 21 DF,  p-value: 5.042e-16
Se observa un aumento sustancial en el r cuadrado, pasando de 86% al 97%. Este segundo modelo a su vez es estadisticamente significativo, se detalla en su p-valor que es menor al del nivel de significancia del 0.05. Todas las variables son significativas, sus tres asteriscos (***) lo demuestran.

 

En la interpretación de los coeficientes, se tendría lo siguiente: en el intercepto, cuando las démas variables en el modelo planteado sean de cero (0) el valor promedio del tiempo de respuesta será negativo (-1.27167), lo que tiene sentido ya que si no hay cargas del sistema pues no tendria porque haber una respuesta en tiempos de los discos. Por el lado de la pendiente, cuando la variable “carga de respuesta” aumenta en una unidad, el tiempo de respuesta va a aumentar en promedio 0.69472. Para el coeficiente Disco1, la interpretación sería que el tipo de Disco 1 (HDD) tiene en promedio un tiempo de respuesta de 2.16010 segundos más en comparación con el tipo de Disco 0 (SDD).


library(ggplot2)
qplot(x = DatosActividad3$Carga, y = DatosActividad3$Tiempo, facets = ~DatosActividad3$Conf, data = DatosActividad3) +
  geom_smooth(method = "lm", col = "#48cae4") +
        labs(title = "    Relación entre tiempo de respuesta y carga de trabajo dependiendo del disco",
         x = "Carga del sistema",
         y = "Tiempo de respuesta del disco",
         caption = "Fuente: elaboración popia.") +
         geom_point(color = "#014f86")

Observando este modelo, se puede notar a simple vista una disparidad con respecto al modelo pasado, ya que este se ajusta de una manera más eficiente a la estructura de los datos mismos, dandole así una mayor claridad al tipo de respuesta de predicción del Modelo 2. Del lado derecho de la gráfica se está comparando con el tipo de disco SDD, el cual tiene una pendiente mucho más inclinada que su par el disco HDD. De ahí la importancia de poder establecer las diferencias en los tipos de disco en el modelo, ya que ambos le aportan mayor significancia y ajuste al modelo predictor.

 

par(mfrow=c(2,2))
plot(Modelo2)

 

4. Escriba la ecuación del Modelo 2 y represéntela gráficamente, junto con los datos observados.

 

La ecuación del Modelo 2 estaría dada por:

\[Tiempo = -1.37 + 0.72*Carga + 2.26*Disco - 0.35(Carga*Disco)\]

ggplot(data = DatosActividad3) +
  geom_point(aes(x= Carga, y= Tiempo, col = Disco)) +
  geom_smooth(aes(x=Carga, y= Tiempo, col = Disco)) +
        labs(title = "       Relación entre tiempo de respuesta y la carga de trabajo (Modelo 2)",
         x = "Carga del sistema",
         y = "Tiempo de respuesta",
         caption = "Fuente: elaboración popia.")
Con este gráfico vemos tanto los datos y la tendencia de ellos entre los dos tipos de discos, hay una clara interacción ya que las dos lineas se cruzan, entonces es más eficiente si se trabaja de esta manera para obtener los mejores resultados. El Modelo 2 tiene un mejor ajuste al parecer, habría que realizar pruebas formales como la ANOVA para confirmarlo.

 

ggplot(data= DatosActividad3) +
  geom_point(aes(x= Carga, y= Tiempo, col = Disco))+
  geom_smooth(aes(x = Carga, y = predict(Modelo2)), color = "magenta")

5. Mediante el test ANOVA, pruebe que la inclusión de la variable cualitativa “configuración del disco”, mejora significativamente el ajuste del modelo.

 

En principio se realiza el contraste de hipótesis:

\[H_0: Los \ dos \ modelos \ tienen \ similar \ ajuste \\ H_1: El \ Modelo 2 \ presenta \ mejor \ ajuste \ que \ el \ Modelo 1 \\ \]

anova(Modelo1, Modelo2)
## Analysis of Variance Table
## 
## Model 1: Tiempo ~ Carga
## Model 2: Tiempo ~ Carga + Disco + (Carga * Disco)
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1     23 7.8375                                  
## 2     21 1.6990  2    6.1386 37.938 1.067e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El test de ANOVA muestra que la inclusion de la configuracion utilizada y la interacción entre esta y la carga del sistema (Df = 2) conlleva a un ajuste significativamente mejor (p < 0.05) que el modelo que incluye únicamente la carga del sistema. Con esto ya se terminaria de confirmar de manera completa que el Modelo 2 es el que presenta el mejor ajuste.

 

  • Evaluación gráfica del ajuste del Modelo. 
ggplot(data= DatosActividad3) +
  geom_point(aes(x= Carga, y= Tiempo, col = Disco))+
  geom_smooth(aes(x = Carga, y = predict(Modelo1)), color = "#e0aaff") + 
  geom_smooth(aes(x = Carga, y = predict(Modelo2)), color = "magenta")+ 
labs(title = "Relación entre tiempo de respuesta y la carga de trabajo (Modelo 1 vs Modelo 2)",
         x = "Carga del sistema",
         y = "Tiempo de respuesta",
         caption = "Fuente: elaboración popia.")

6. Evalue el cumplimiento de los supuestos sobre el término de error.

 

  • Media cero E(ui|X) = 0
mean(residuals(Modelo2))
## [1] -3.192108e-17

El supuesto de media cero en el término de error se cumple. 

  • Varianza Constante

Con el siguiente contraste de hipótesis, se realiza luego la prueba formal. \[H_0 ∶ Homocedastico\\ 𝐻_1 ∶ Heterocedastico\\\]

library(car)
ncvTest(Modelo2)
## Non-constant Variance Score Test 
## Variance formula: ~ fitted.values 
## Chisquare = 0.8566399, Df = 1, p = 0.35468
Dado que p-valor arroja un resulta que es > 0.05, no se rechaza la hipótesis nula de homocedasticidad, es decir, tiene varianza constante.

 

  • Normalidad

Se usa el Test de normalidad de Shapiro-Wilk, con un contraste de hipótesis:

\[H_0 ∶ Normalidad\\ 𝐻_1 ∶ No \ Normalidad\\\]

library(MASS)
sresid <- studres(Modelo2)
shapiro.test(sresid)
## 
##  Shapiro-Wilk normality test
## 
## data:  sresid
## W = 0.92407, p-value = 0.06348
Con un p-valor de 0.06 no se rechaza la hipótesis nula, por lo que se puede concluir que la distribución de los residuales no es estadisticamente diferente a una distribución normal.

 

  • Varianza del término de error

Se utiliza el Test de Breusch-Pagan, con un contraste de hipótesis:

\[H_0 ∶ Varianza\ constante\ del\ término\ de\ error\\ 𝐻_1 ∶ Varianza\ no\ constante\ del\ término\ de\ error\\\]

library(lmtest)
bptest(Modelo2)
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo2
## BP = 2.6825, df = 3, p-value = 0.4432
Como el p-valor arrojado es mayor al del nivel de significancia se procede a no rechazar la hipótesis nula, por lo que hay una varianza constante en el término de error.

 

  • Autocorrelación

Usando el Test de Durbing Watson, con un contraste de hipótesis:

\[H_0 = no\ hay\ autocorrelación\ de \ primer \ orden\ AR(1)\\ H_1 = si\ hay\ autocorrelación\ de \ primer \ orden\ AR(1)\\\]

durbinWatsonTest(Modelo2)
##  lag Autocorrelation D-W Statistic p-value
##    1       0.2660196      1.328472   0.064
##  Alternative hypothesis: rho != 0
El test arroja un resultado con el cual el p-valor es mayor al nivel de significancia (0.05), con esto, no se rechaza la hipótesis nula por lo que se concluye que el Modelo 2 no posee autocorrelación.

 

7. Conclusiones.

  • Queda claro que un modelo simple lineal como el planteado en el Modelo 1(trazado en morado), no responde de manera clara a la estructura misma de los datos y no daría predicciones eficientes. Si bien, este modelo es significativo y algunos supuestos ayudan tambien a probar su capacidad de respuesta y análisis, se queda corto en poderse ajustar a los datos, haciendo enfasís en que una diferenciación en el tipo de configuración del disco (HDD y SDD) convierte al Modelo 2 como la mejor opción en este caso.
     
  • La inclusión de la variable cualitativa “Disco” transforma el modelo orginal básico en uno de mayor complejidad y a su vez lo eleva en términos estadisticos, porque es más signifcativo, su poder de explicación aumenta y se acrecienta la predicción que se pueda llegar a lograr, con conclusiones más acertadas, más precisas y sobretodo confiables.