A continuación se desarrollará un ejercicio propuesto de análisis de regresión, para lo cual es necesario implementar las siguientes librerías:

library(readr)
library(lmtest)
library(zoo)
library(nortest)
library(ggplot2)
library(plyr)
library(car)
library(carData)

La base correspondiente a este ejercicio (DatosTaller) está conformada por tres variables: Conf, Carga y Tiempo. Donde la primera variable mecionada es cualitativa y por tanto se configura como un factor cuyos niveles son 0 y 1, denotando el tipo de disco duro (0: SDD, 1: HDD).

datos <- read.table("DatosTaller.txt", header = TRUE)
View(datos)
names(datos)
## [1] "Conf"   "Carga"  "Tiempo"
attach(datos)
str(datos)
## 'data.frame':    25 obs. of  3 variables:
##  $ Conf  : int  1 0 1 0 1 1 0 0 0 1 ...
##  $ Carga : num  1 2 2.4 3.1 4 4.3 5.8 6.6 7.5 8 ...
##  $ Tiempo: num  0.9 0.3 2 0.8 2.7 2.6 2.5 3.2 3.7 3.9 ...

Configurando la variable cualitativa Conf a factor se tiene que:

datos$Conf <-factor(datos$Conf,levels = c("0","1"))
str(datos$Conf)
##  Factor w/ 2 levels "0","1": 2 1 2 1 2 2 1 1 1 2 ...

PUNTO 1

ggplot(data=datos)+ 
  geom_smooth(aes(x= Carga,y= Tiempo, col=Conf )) +
  geom_point(data = datos,mapping = aes(x= Carga,y= Tiempo, col=Conf))+
  labs(col = "TDD")
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Como es posible observar en el gráfico anterior, cuando se tiene un disco duro tipo (DD) 0 la tendencia de los datos es hacia una relación lineal, mientras que el DD tipo 1 presenta una propensión hacia la no linealidad (rendimientos decrecientes).

EVALUACIÓN DE NORMALIDAD

conf_0 <- subset(datos, subset = Conf == "0", select = c("Conf", "Carga", "Tiempo"))
conf_0 <- rename(conf_0, c(Conf="conf0", Carga="carga0", Tiempo="tiempo0"))
names(conf_0)
## [1] "conf0"   "carga0"  "tiempo0"
str(conf_0)
## 'data.frame':    12 obs. of  3 variables:
##  $ conf0  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
##  $ carga0 : num  2 3.1 5.8 6.6 7.5 9 2.5 3.9 4.2 6.4 ...
##  $ tiempo0: num  0.3 0.8 2.5 3.2 3.7 5.3 0.5 1.5 1.6 3.3 ...
attach(conf_0)
conf_1 <- subset(datos, subset = Conf == "1", select = c("Conf", "Carga", "Tiempo"))
names(conf_1) = c("conf1", "carga1", "tiempo1")
str(conf_1)
## 'data.frame':    13 obs. of  3 variables:
##  $ conf1  : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
##  $ carga1 : num  1 2.4 4 4.3 8 9.2 10.2 1.8 2 5.5 ...
##  $ tiempo1: num  0.9 2 2.7 2.6 3.9 4.2 3.9 1.1 1.5 3.3 ...
attach(conf_1)

Para medir la fuerza de estas relaciones para cada tipo de DD, es necesario hacer un test de normalidad que permita determinar una prueba de correlación acorde a la distribución de las variables. Para esto se implementó la prueba de normalidad de Anderson Darling, donde:

H0: La variable se distribuya normal H1: La varianle no se distribuye normal

ad.test(tiempo0)
## 
##  Anderson-Darling normality test
## 
## data:  tiempo0
## A = 0.23256, p-value = 0.7423
ad.test(carga0)
## 
##  Anderson-Darling normality test
## 
## data:  carga0
## A = 0.23774, p-value = 0.7238
ad.test(carga1)
## 
##  Anderson-Darling normality test
## 
## data:  carga1
## A = 0.40597, p-value = 0.3001
ad.test(tiempo1)
## 
##  Anderson-Darling normality test
## 
## data:  tiempo1
## A = 0.50098, p-value = 0.1694

Como se puede apreciar para ambos test, dado el tipo de DD, el P-valor es mayor que 0.05. Por tanto se concluye que no hay suficientes datos para rechazar la hipótesis nula, entonces estas variables se manejarán bajo una distribución normal. Por lo cual, se implementará la prueba de correlación de Pearson.

cor.test(x=carga0,y=tiempo0,alternative = "less",method = "pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  carga0 and tiempo0
## 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
cor.test(x=carga1, y=tiempo1, alternative = "less", method = "pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  carga1 and tiempo1
## 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

La fuerza de relación de ambas variables para los 2 tipos de DD muestran como resultado una correlación positiva. En el caso del DD tipo 0 la correlación es de 0.9938293, lo cual es bastante aproximado a una correlación positiva perfecta. Por otro lado, la correlación para el tipo de DD 1 es de 0.9640003, lo cual indica una fuerza de relación positiva entre las variables.

PUNTO 2

Modelo1 <- lm(Tiempo~Carga, data = datos)
summary(Modelo1)
## 
## Call:
## lm(formula = Tiempo ~ Carga, data = datos)
## 
## 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

En la salida del Modelo1 es posible apreciar una bondad en el ajuste de 0.8579 dada por el R-cuadrado, el cual estaría exhibiendo que la variable “Carga” explica el 85% de las variaciones en la variable “Tiempo”. Así mismo, el intercepto dice que el tiempo de respuesta del disco aumenta en 0.04 segundos cuando cuando la carga del sistemas, o sea el número de consultas por minuto es igual a cero, en promedio. Ahora, en promedio, el aumento en una unidad en la carga del sistema contribuye a incrementrar el tiempo de respuesta del disco en 0.49 segundos.

Ajuste del Modelo1

ggplot(datos, aes(x= Carga, y= Tiempo)) + 
  geom_point() + 
  geom_line(aes( x = Carga, y = predict(Modelo1, datos)), color = "red")

La bondad de ajuste del modelo también es posible analizarala desde un punto de vista gráfico, que en este caso muestra que los datos no se encuentran muy dispersos al rededor de la media condicional, lo cual refleja un buen ajuste.

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

Del primer es posible inferir que los residuales estan oscilando al rededor de la media, lo cual da un indicio de que la relación entre variables tienden a ser lineal. Del gráfico Scale-location se puede decir que en este caso viola el supuesto de homocedasticidad debido a que el comportamiento de los residuales estandarizados no es constante (la linea roja no es horizontal como se esperaría). El diagrama de dipersión Q-Q permite dar un primer indicio de que la distribución de los residuos tiende a ser normal. Para finalizar, en la gráfica de los residuales vs Leverage, es posible notar que la gran parte de los datos tienen buen comportamiento, mientras que solo tres podrían catalogarse como datos atípicos.

Supuestos y análisis de residuales Modelo1

Residuales <- residuals(Modelo1)
par(mfrow= c(1,1))

Se procederá a analizar el cumplimiento de los supuestos para los residuales del Modelo 1

hist(Residuales, prob = TRUE, freq = FALSE, xlim = c(-1.8,1.8), ylim = c(0, 0.8))
x <- seq(min(Residuales), max(Residuales), length = 40)
f <- dnorm(x, mean = mean(Residuales), sd = sd(Residuales))
lines(x, f, col = "red", lwd = 2)

Los residuales tienden a una distribución normal, lo cual tendría implicaciones en los siguientes supuestos a comprobar.

Media cero
mean(Residuales)
## [1] -7.767224e-18

La media de los residuales es -7.767224e-18, por lo cual podríamos decir que este supuesto sí se cumple.

Exogeneidad
y_estimada <- fitted.values(Modelo1)
cor(Residuales, y_estimada)
## [1] -4.715931e-17

Dado el resultado de -4.715931e-17, es posible decir que no hay correlación entre la Carga y los residuales, en ese sentido, se cumple el supuesto de exogeneidad.

Normalidad
SampleQuantiles <- rstandard(Modelo1)
(ggplot(Modelo1,aes(qqnorm(SampleQuantiles)[[1]],SampleQuantiles))
  + geom_point(na.rm = TRUE,col="red")
  + geom_abline()
  + scale_x_continuous(name = "Theorical Quantiles")
  + scale_y_continuous(name = "Sample Quantiles")
  + ggtitle("Normal Q-Q"))

ad.test(Residuales)
## 
##  Anderson-Darling normality test
## 
## data:  Residuales
## A = 0.14213, p-value = 0.9668

Con la prueba de normalidad de Anderson Darling es posible comprobar la normalidad de los residuales al no tener los datos suficientes para rechazar la hipótesis nula, ya que el P-valor es igual a 0.9668. Lo anterior también se apoya con el gráfico Cuantil - Cuantil, el cual muestra indicios del cumplimiento de este supuesto.

Varianza Constante
(ggplot(Modelo1, aes(fitted.values(Modelo1),Residuales))
  + geom_point(col=I("red")) 
  + stat_smooth(method = "loess") 
  + stat_binhex(bins = 50)
  + scale_fill_gradient(low = "light blue",high = "black") 
  + geom_hline(yintercept = 0,col ="black", linetype = "dashed")
  + xlab("Fitted Values") 
  + ylab("Residuals"))
## `geom_smooth()` using formula 'y ~ x'

Breusch_Pagan1<- bptest(Modelo1, ~Tiempo, data = datos)
print(Breusch_Pagan1)
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo1
## BP = 0.25171, df = 1, p-value = 0.6159

Con la prueba de Breusch_Pagan se comprueba el supueto de homocedasticidad en los residuales. Lo anterior surtentado con P-valor de 0.6159, con el cual no hay información suficiente para rechazar la hipótesis nula, la cual refiere a que los errores son homocedásticos.

No Autocorrelación
residualesrezagados<-dplyr::lag(Residuales)
plot(Residuales,residualesrezagados)

dwtest(Modelo1, alternative = "two.sided",iterations = 1000)
## 
##  Durbin-Watson test
## 
## data:  Modelo1
## DW = 2.365, p-value = 0.4491
## alternative hypothesis: true autocorrelation is not 0

El test Durbin-Watson permite corroborar el supuesto de no autocorrelación entre los errores, puesto que el P-valor es igual a 0.4491, lo cual nos indica que no hay suficientes datos para rechazar la hipótesis nula. Lo anterior, también se puede observar en el gráfico, en el cual no se evidencia algún tipo de tendencia en los errores.

PUNTO 3

Modelo2 <- lm(Tiempo ~ Carga + Conf, data = datos)
summary(Modelo2)
## 
## Call:
## lm(formula = Tiempo ~ Carga + Conf, data = datos)
## 
## 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 ***
## Conf1        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
str(datos)
## 'data.frame':    25 obs. of  3 variables:
##  $ Conf  : Factor w/ 2 levels "0","1": 2 1 2 1 2 2 1 1 1 2 ...
##  $ Carga : num  1 2 2.4 3.1 4 4.3 5.8 6.6 7.5 8 ...
##  $ Tiempo: num  0.9 0.3 2 0.8 2.7 2.6 2.5 3.2 3.7 3.9 ...

En este segundo modelo (Modelo2) hubo una variación muy leve del R-cuadrado ajustado con respecto al Modelo 1, al agregar la variable cualitativa “Conf” la cual categoriza el tipo de disco duro para cada observación. Al evaluar el ajuste del modelo se evidencia que el R-cuadrado ajustado aumentó en 0.0003 con respecto al Modelo 1. Es decir, que las variciones en lar carga y la configuración, explican un 85.2% de las variaciones del tiempo de respuesta del disco.

Ahora, al analizar el intercepto se resalta el cambio que hubo con respecto al modelo 1, pues en este último se tenía un intercepto positivo, mientras que en el modelo 2 el intercepto pasa a ser negativo. Cabe resaltar que la pendiente del modelo no tiene una variación significativa, la cual corresponde exactamente a 0.00089 con respecto al primer modelo. En ese sentido, al dirigir la atención a la nueva variable “Conf”, es posible observar que esta no es significativa.

Así, un aumento de 1 en el número de consultas por minuto, en promedio, aumenta en 0.49303 segundos el tiempo de respuesta del disco, dejando lo demás constante. Por su parte, un disco duro tipo 1, en promedio, toma 0.239 segundos más que un disco duro tipo 0 con las mismas caracteristicas, es decir, con la misma carga. Sin embargo, es preciso mencionar que esta variable cualitativa no presenta significancia a la hora de evaluar el modelo.

Ajuste del Modelo2

ggplot(data = datos) + 
  geom_point(aes(x= Carga, y=Tiempo, color= Conf)) +
  geom_line(aes(x= Carga, y= predict(Modelo2), color= Conf))+
  labs(col = "TDD")

Evaluando la bondad de ajuste del Modelo2 se puede evidenciar que los datos producto de la relación entre tiempo y carga, correspondientes a un disco duro tipo cero, tienen una menor dispersión con respecto a lo que sería la regresión teórica. Lo contrario sucede con el disco duro tipo uno, que presenta datos con mayor dispersión frente a la linea de regresión correspondiente. Igualmente, en el gráfico se evidencia como la linea de regresión para un disco duro tipo 1 es más alta con respecto a la regresión del DD tipo 0, esto podría implicar que el DD tipo 1 requiere de un mayor tiempo de carga.

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

Del primer gráfico es posible inferir que los residuales estan oscilando al rededor de la media hasta el valor ajustado = 4, a partir de ese punto se empieza a observar mayor dispersión en los residuales, lo cual da un indicio de que la relación entre variables tienden a no ser lineal. Del gráfico Scale-location se puede decir que en este caso viola el supuesto de homocedasticidad debido a que el comportamiento de los residuales estandarizados no es constante (la linea roja no es horizontal como se esperaría).

El diagrama de dipersión Q-Q permite dar un primer indicio de que la distribución de los residuos, la cual tiende a ser normal, pero con algunos valores que se salen del comportamiento habitual de los demás datos. Para finalizar, en la gráfica de los residuales vs Leverage, es posible notar que la gran parte de los datos tienen buen comportamiento a pesar de la dispersión que presentan, mientras que solo tres podrían catalogarse como datos atípicos.

Supuestos y análisis de residuales

Residuales2 <- residuals(Modelo2)
par(mfrow= c(1,1))

Se procederá a analizar el cumplimiento de los supuestos para los residuales del Modelo 2

hist(Residuales2, prob = TRUE, freq = FALSE, xlim = c(-1.8,1.8), ylim = c(0, 0.8))
x <- seq(min(Residuales2), max(Residuales2), length = 40)
f <- dnorm(x, mean = mean(Residuales2), sd = sd(Residuales2))
lines(x, f, col = "red", lwd = 2)

Los residuales de este modelo tienden a una distribución normal, lo cual tendría implicaciones en los siguientes supuestos a comprobar.

Media cero
mean(Residuales2)
## [1] -1.000502e-17

La media de los residuales es -1.000502e-17, por lo cual podríamos decir que este supuesto sí se cumple.

Exogeneidad
y_estimada2 <- fitted.values(Modelo2)
cor(Residuales2, y_estimada2)
## [1] -4.110891e-17

Dado el resultado de -4.110891e-17, es posible decir que no hay correlación entre la Carga y los residuales, en ese sentido, se cumple el supuesto de exogeneidad.

Normalidad
SampleQuantiles <- rstandard(Modelo2)
(ggplot(Modelo2,aes(qqnorm(SampleQuantiles)[[1]],SampleQuantiles))
  + geom_point(na.rm = TRUE,col="red")
  + geom_abline()
  + scale_x_continuous(name = "Theorical Quantiles")
  + scale_y_continuous(name = "Sample Quantiles"))

ad.test(Residuales2)
## 
##  Anderson-Darling normality test
## 
## data:  Residuales2
## A = 0.15766, p-value = 0.9447

Con la prueba de normalidad de Anderson Darling es posible comprobar la normalidad de los residuales al no tener los datos suficientes para rechazar la hipótesis nula, ya que el P-valor es igual a 0.9447. Lo anterior también se apoya con el gráfico Cuantil - Cuantil, el cual muestra indicios del cumplimiento de este supuesto.

Varianza Constante
(ggplot(Modelo2, aes(fitted.values(Modelo2),Residuales2))
  + geom_point(col=I("red")) 
  + stat_smooth(method = "loess") 
  + stat_binhex(bins = 50)
  + scale_fill_gradient(low = "light blue",high = "black") 
  + geom_hline(yintercept = 0,col ="black", linetype = "dashed")
  + xlab("Fitted Values") 
  + ylab("Residuals"))
## `geom_smooth()` using formula 'y ~ x'

Breusch_Pagan2<- bptest(Modelo2, ~Tiempo + Conf, data = datos)
print(Breusch_Pagan2)
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo2
## BP = 3.4189, df = 2, p-value = 0.181

Con la prueba de Breusch_Pagan se comprueba el supueto de homocedasticidad en los residuales. Lo anterior surtentado con P-valor de 0.181, con el cual no hay información suficiente para rechazar la hipótesis nula, la cual refiere a que los errores son homocedásticos.

No Autocorrelación

residualesrezagados<-dplyr::lag(Residuales2)

plot(Residuales2,residualesrezagados)

##Prueba de Duirbin - Watson

dwtest(Modelo2, alternative = "two.sided",iterations = 1000)
## 
##  Durbin-Watson test
## 
## data:  Modelo2
## DW = 2.2799, p-value = 0.562
## alternative hypothesis: true autocorrelation is not 0

El test Durbin-Watson permite corroborar el supuesto de no autocorrelación entre los errores, puesto que el P-valor es igual a 0.562, lo cual nos indica que no hay suficientes datos para rechazar la hipótesis nula. Lo anterior, también se puede observar en el gráfico, en el cual no se evidencia claramente algún tipo de tendencia en los errores.

Multicolinealidad
vif(Modelo2)
##   Carga    Conf 
## 1.00043 1.00043

El test de multicolinealidad indica que las variables “Carga” y “Conf” no presentan relación entre ellas, en el sentido de que no son combinaciones lineales una de la otra.

#PUTNO 4

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

###Gráfica de ajuste del Modelo2

ggplot(data=datos, aes(x=Carga, y=Tiempo))+
  geom_point(aes(x= Carga, y=Tiempo))+
  geom_line(aes(x=Carga, y=predict(Modelo2), color= Conf))+
  labs(col = "TDD")

Tiempo = Carga + Conf + e

Evaluando la bondad de ajuste del Modelo2 se puede evidenciar que los datos producto de la relación entre tiempo y carga, correspondientes a un disco duro tipo cero, tienen una menor dispersión con respecto a lo que sería la regresión teórica. Lo contrario sucede con el disco duro tipo uno, que presenta datos con mayor dispersión frente a la linea de regresión correspondiente. Igualmente, en el gráfico se evidencia como la linea de regresión para un disco duro tipo 1 es más alta con respecto a la regresión del DD tipo 0, esto podría implicar que el DD tipo 1 requiere de un mayor tiempo de carga.

PUNTO 5

anova(Modelo1, Modelo2)
## Analysis of Variance Table
## 
## Model 1: Tiempo ~ Carga
## Model 2: Tiempo ~ Carga + Conf
##   Res.Df    RSS Df Sum of Sq      F Pr(>F)
## 1     23 7.8375                           
## 2     22 7.4805  1   0.35704 1.0501 0.3166

H0: Los dos modelos tienen ajuste similar H1: El modelo con más elementos presenta mejor ajuste que el modelo con menos elementos.

De la prueba de anova podemos hacer una evalcuación más precisa del ajuste del modelo 2 con respecto al modelo 1. Se encontró que los dos modelos tienen ajuste similar, es decir, que la adición de la variable “Conf” no contribuye a ajustar la regresión. Estadisticamente hablando, no hay suficiente información para rechazar la hipótesis nula.

#PUNTO 6

Supuestos y análisis de residuales Modelo1

Residuales <- residuals(Modelo1)
par(mfrow= c(1,1))

Se procederá a analizar el cumplimiento de los supuestos para los residuales del Modelo 1

hist(Residuales, prob = TRUE, freq = FALSE, xlim = c(-1.8,1.8), ylim = c(0, 0.8))
x <- seq(min(Residuales), max(Residuales), length = 40)
f <- dnorm(x, mean = mean(Residuales), sd = sd(Residuales))
lines(x, f, col = "red", lwd = 2)

Los residuales tienden a una distribución normal, lo cual tendría implicaciones en los siguientes supuestos a comprobar.

Media cero
mean(Residuales)
## [1] -7.767224e-18

La media de los residuales es -7.767224e-18, por lo cual podríamos decir que este supuesto sí se cumple.

Exogeneidad
y_estimada <- fitted.values(Modelo1)
cor(Residuales, y_estimada)
## [1] -4.715931e-17

Dado el resultado de -4.715931e-17, es posible decir que no hay correlación entre la Carga y los residuales, en ese sentido, se cumple el supuesto de exogeneidad.

Normalidad
SampleQuantiles <- rstandard(Modelo1)
(ggplot(Modelo1,aes(qqnorm(SampleQuantiles)[[1]],SampleQuantiles))
  + geom_point(na.rm = TRUE,col="red")
  + geom_abline()
  + scale_x_continuous(name = "Theorical Quantiles")
  + scale_y_continuous(name = "Sample Quantiles")
  + ggtitle("Normal Q-Q"))

ad.test(Residuales)
## 
##  Anderson-Darling normality test
## 
## data:  Residuales
## A = 0.14213, p-value = 0.9668

Con la prueba de normalidad de Anderson Darling es posible comprobar la normalidad de los residuales al no tener los datos suficientes para rechazar la hipótesis nula, ya que el P-valor es igual a 0.9668. Lo anterior también se apoya con el gráfico Cuantil - Cuantil, el cual muestra indicios del cumplimiento de este supuesto.

Varianza Constante
(ggplot(Modelo1, aes(fitted.values(Modelo1),Residuales))
  + geom_point(col=I("red")) 
  + stat_smooth(method = "loess") 
  + stat_binhex(bins = 50)
  + scale_fill_gradient(low = "light blue",high = "black") 
  + geom_hline(yintercept = 0,col ="black", linetype = "dashed")
  + xlab("Fitted Values") 
  + ylab("Residuals"))
## `geom_smooth()` using formula 'y ~ x'

Breusch_Pagan1<- bptest(Modelo1, ~Tiempo, data = datos)
print(Breusch_Pagan1)
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo1
## BP = 0.25171, df = 1, p-value = 0.6159

Con la prueba de Breusch_Pagan se comprueba el supueto de homocedasticidad en los residuales. Lo anterior surtentado con P-valor de 0.6159, con el cual no hay información suficiente para rechazar la hipótesis nula, la cual refiere a que los errores son homocedásticos.

No Autocorrelación
residualesrezagados<-dplyr::lag(Residuales)
plot(Residuales,residualesrezagados)

dwtest(Modelo1, alternative = "two.sided",iterations = 1000)
## 
##  Durbin-Watson test
## 
## data:  Modelo1
## DW = 2.365, p-value = 0.4491
## alternative hypothesis: true autocorrelation is not 0

El test Durbin-Watson permite corroborar el supuesto de no autocorrelación entre los errores, puesto que el P-valor es igual a 0.4491, lo cual nos indica que no hay suficientes datos para rechazar la hipótesis nula. Lo anterior, también se puede observar en el gráfico, en el cual no se evidencia algún tipo de tendencia en los errores.

Supuestos y análisis de residuales del Modelo 2

Residuales2 <- residuals(Modelo2)
par(mfrow= c(1,1))

Se procederá a analizar el cumplimiento de los supuestos para los residuales del Modelo 2

hist(Residuales2, prob = TRUE, freq = FALSE, xlim = c(-1.8,1.8), ylim = c(0, 0.8))
x <- seq(min(Residuales2), max(Residuales2), length = 40)
f <- dnorm(x, mean = mean(Residuales2), sd = sd(Residuales2))
lines(x, f, col = "red", lwd = 2)

Los residuales de este modelo tienden a una distribución normal, lo cual tendría implicaciones en los siguientes supuestos a comprobar.

Media cero
mean(Residuales2)
## [1] -1.000502e-17

La media de los residuales es -1.000502e-17, por lo cual podríamos decir que este supuesto sí se cumple.

Exogeneidad
y_estimada2 <- fitted.values(Modelo2)
cor(Residuales2, y_estimada2)
## [1] -4.110891e-17

Dado el resultado de -4.110891e-17, es posible decir que no hay correlación entre la Carga y los residuales, en ese sentido, se cumple el supuesto de exogeneidad.

Normalidad
SampleQuantiles <- rstandard(Modelo2)
(ggplot(Modelo2,aes(qqnorm(SampleQuantiles)[[1]],SampleQuantiles))
  + geom_point(na.rm = TRUE,col="red")
  + geom_abline()
  + scale_x_continuous(name = "Theorical Quantiles")
  + scale_y_continuous(name = "Sample Quantiles"))

ad.test(Residuales2)
## 
##  Anderson-Darling normality test
## 
## data:  Residuales2
## A = 0.15766, p-value = 0.9447

Con la prueba de normalidad de Anderson Darling es posible comprobar la normalidad de los residuales al no tener los datos suficientes para rechazar la hipótesis nula, ya que el P-valor es igual a 0.9447. Lo anterior también se apoya con el gráfico Cuantil - Cuantil, el cual muestra indicios del cumplimiento de este supuesto.

Varianza Constante
(ggplot(Modelo2, aes(fitted.values(Modelo2),Residuales2))
  + geom_point(col=I("red")) 
  + stat_smooth(method = "loess") 
  + stat_binhex(bins = 50)
  + scale_fill_gradient(low = "light blue",high = "black") 
  + geom_hline(yintercept = 0,col ="black", linetype = "dashed")
  + xlab("Fitted Values") 
  + ylab("Residuals"))
## `geom_smooth()` using formula 'y ~ x'

Breusch_Pagan2<- bptest(Modelo2, ~Tiempo + Conf, data = datos)
print(Breusch_Pagan2)
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo2
## BP = 3.4189, df = 2, p-value = 0.181

Con la prueba de Breusch_Pagan se comprueba el supueto de homocedasticidad en los residuales. Lo anterior surtentado con P-valor de 0.181, con el cual no hay información suficiente para rechazar la hipótesis nula, la cual refiere a que los errores son homocedásticos.

No Autocorrelación

residualesrezagados<-dplyr::lag(Residuales2)

plot(Residuales2,residualesrezagados)

##Prueba de Duirbin - Watson

dwtest(Modelo2, alternative = "two.sided",iterations = 1000)
## 
##  Durbin-Watson test
## 
## data:  Modelo2
## DW = 2.2799, p-value = 0.562
## alternative hypothesis: true autocorrelation is not 0

El test Durbin-Watson permite corroborar el supuesto de no autocorrelación entre los errores, puesto que el P-valor es igual a 0.562, lo cual nos indica que no hay suficientes datos para rechazar la hipótesis nula. Lo anterior, también se puede observar en el gráfico, en el cual no se evidencia claramente algún tipo de tendencia en los errores.

Conclusiones

A modo de conclusión se puede establecer que el tiempo de respuesta se ve afectado por la carga del sistema significativamente en las dos regresiones propuestas (Modelo1, Modelo2). Cabe aclarar que el hecho de implementar la variable cualitativa de “Conf” la cual diferencia el tipo de disco duro, no fue significativa para el modelo. Igualmente la anova realizada para realizar la comparación entre los modelos concluyó que el ambos tienen similar ajuste, y aplicando el principio de parsimonia se optaría por usar el Modelo 1 que es el que menor cantidad de elementos tiene y tiene igual capacidad explicativa, más no la misma.

Así, al comparar los desempeños en tiempo considerando la variable “Carga” y “Conf” se concluye que el tipo de disco no afecta significativamente el desempeño en términos de tiempo, sin embargo, la carga sí.