Taller / Regresión Lineal simple

Introducción

El modelo de regresión lineal simple o ajuste lineal en el presente curso tiene dos objetivos, el primero es hallar una relación de dependencia etre dos variables que presenta el modelo X e Y, donde denominamos a la variable dependiente a Y, y las variables independientes a X. Por otra parte, el segundo objetivo es el poder predecir, es decir, dado un valor de la variable X se podrá conocer el valor que podría tener un valor para la variable Y.

\[Y = \beta_0 + \beta_1 X +\epsilon\]

Existen además hipótesis básicas del modelo estas son:

  • Linealidad: consiste en que la media de variable dependiente toma un valor inicial \(\beta_0\) cuando la variable explicativa X es cero, además de que la media crece en una cantidad fija de \(\beta_1\) cada vez que se incrementa en una unidad a X.
  • Homocedasticidad: nos indica que la varianza del error \(\epsilon\) es la misma cualquiera sea el valor de la variable explicativa X. \[V(\epsilon/X=x)=\sigma^2 \hspace{1em} \forall x.\]
  • Normalidad: indica que el error del modelo \(\epsilon\) tiene distribución normal \[\epsilon \in N (0,\sigma^2)\]
  • Independencia:esta suposición dice que los n errores de una muestra no observados serían mutuamente independientes.

En el presente documento utilizaremos funciones de R para probar las hipòtesis explicadas anteriormente mediante el siguiente ejemplo:

Ejemplo

En este tema consideraremos el ejemplo de Sheather (2009) sobre tiempos en una cadena de producción. Se dispone del tiempo (en minutos) que lleva producir cada pedido, que denotamos por Y , junto con el número de unidades solicitadas, denotado por X, para 20 pedidos seleccionados aleatoriamente. Los datos figuran a continuación:

#Adecuacion del modelo
production <- read.table("production.txt",header=TRUE)
attach(production)
production
##    Case RunTime RunSize
## 1     1     195     175
## 2     2     215     189
## 3     3     243     344
## 4     4     162      88
## 5     5     185     114
## 6     6     231     338
## 7     7     234     271
## 8     8     166     173
## 9     9     253     284
## 10   10     196     277
## 11   11     220     337
## 12   12     168      58
## 13   13     207     146
## 14   14     225     277
## 15   15     169     123
## 16   16     215     227
## 17   17     147      63
## 18   18     230     337
## 19   19     208     146
## 20   20     172      68
summary(production$RunTime)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   147.0   171.2   207.5   202.1   226.2   253.0
summary(production$RunSize)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    58.0   120.8   182.0   201.8   278.8   344.0
m1 <- lm(RunTime~RunSize)
summary(m1)
## 
## Call:
## lm(formula = RunTime ~ RunSize)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -28.597 -11.079   3.329   8.302  29.627 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 149.74770    8.32815   17.98 6.00e-13 ***
## RunSize       0.25924    0.03714    6.98 1.61e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 16.25 on 18 degrees of freedom
## Multiple R-squared:  0.7302, Adjusted R-squared:  0.7152 
## F-statistic: 48.72 on 1 and 18 DF,  p-value: 1.615e-06
m1$coefficients
## (Intercept)     RunSize 
## 149.7477030   0.2592431
anova(m1)
## Analysis of Variance Table
## 
## Response: RunTime
##           Df  Sum Sq Mean Sq F value    Pr(>F)    
## RunSize    1 12868.4 12868.4  48.717 1.615e-06 ***
## Residuals 18  4754.6   264.1                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Hipótesis de Linealidad

Vamos a realizar la prueba de hipótesis para la Linealidad \[H_0: Y = \beta_0 + \beta_1 X \hspace{1em} \text{Es lineal}\] \[H_a: Y = \beta_0 + \beta_1 X \hspace{1em} \text{No es lineal}\]

Y_reg<-function(x){
return(as.numeric(m1$coefficients[1])+as.numeric(m1$coefficients[2])*as.numeric(x))
}

Test de Linealidad:

Prueba_de_linealidad<-function(X,Y,regresion_lineal){
  Yt<-regresion_lineal(X)
  F_obs<- sum((Yt-mean(Y))^2)*(length(X)-2)/sum((Y-Yt)^2)
  pval <- 1-pf(F_obs,lower.tail = TRUE,df1 = 1,df2 = (length(X)-2))
  if (pval > 0.05){
    resultado<-TRUE
    h<-c("No se rechaza Ho.")
  }
  else{
    resultado<-FALSE
    h<-c("Se rechaza Ho.")
  }
  return(matrix(c("p_value","RESULTADO",pval,h),2,2))
}
Prueba_de_linealidad(RunSize,RunTime,Y_reg)
##      [,1]        [,2]                 
## [1,] "p_value"   "1.6148628918522e-06"
## [2,] "RESULTADO" "Se rechaza Ho."

Proceso para la hipótesis de Linealidad

El sofware nos facilita el cálculo de los valores a comparar, para poder concluir si se rechaza o no la pueba de hipótesis, en este caso, la regresión obtenida sea lineal. Por otro lado, para crear estas funciones en R, se necesita conocer de donde provienen ciertos cálculos ya que el estimador usado es la F. \[F=\frac{\sum_{i=1}^{n}(\hat{Y_i}-\bar{Y})^2}{\frac{\sum_{i=1}^{n}(Y_i -\hat{Y_i})^2}{n-2}}\] El valor obtenido por F observado y F teórico nos ayuda a calcular el P-valor el mismo que debe ser menor que 0.05 para rechazar la linealidad. En este caso p_val=1.61e-06 por lo que hemos rechazado la linealidad del problema.

Hipótesis de Homocedasticidad

\[H_0: \sigma_1=\sigma_2\] \[H_1: \sigma_1\not=\sigma_2\] Hemos agrupado los datos con el fin de contrastar las varianzas en cada uno de estos conjuntos.

Prueba_homocedasticidad<-function(X,Y,regresion_lineal)
{dist<- function(X,Y,regresion_lineal){
 yreg<- regresion_lineal(X)
 return(Y-yreg)
  }
  error<- dist(RunSize,RunTime,Y_reg)
  p<-bartlett.test(error,rep(c("Parte_1","Parte_2"),each = 10))
  pval<-p$p.value
  if (pval > 0.05){
    resultado<-TRUE
    h<-c("No se rechaza Ho")
  }
  else{
    resultado<-FALSE
    h<-c("Se rechaza Ho")
  }
  return(matrix(c("p_value","Conclusión",pval,h),2,2))
}
Prueba_homocedasticidad(RunSize,RunTime,Y_reg)
##      [,1]         [,2]               
## [1,] "p_value"    "0.428518409171384"
## [2,] "Conclusión" "No se rechaza Ho"

Proceso de homocedasticidad

En este test usamos los promedios de las variables x e y \[\bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_i \hspace{1em} \bar{y}=\frac{1}{n}\sum_{i=1}^{n}y_i\] Además el test nos ayuda a ver que al separar los datos en 2 grupos las varianzas son iguales, es decir que los datos tienen hocedasticidad.

Hipótesis de Normalidad

\[H_0: \text{El modelo sigue una distribución Normal}\] \[H_a: \text{El modelo no sigue una distribución Normal}\]

Prueba_normalidad<-function(X,Y,regresion_lineal)
{
  residuos <- function(X,Y,regresion_lineal){
    yreg<- regresion_lineal(X)
    return(Y-yreg)
  }
  Residuos<- residuos(RunSize,RunTime,Y_reg)
  p<-shapiro.test(Residuos) 
  library(nortest)
  b<-lillie.test(Residuos)
  pval<-p$p.value
  pval2<-p$p.value
  if (pval > 0.05){
    resultado<-TRUE
    h<-c("No se rechaza Ho.")
  }
  else{
    resultado<-FALSE
    h<-c("Se rechaza Ho.")
  }
  return(matrix(c("p_value Shapiro",pval,"p_value Lillie",pval2,"Conclusión",h),2,3))
}
Prueba_normalidad(RunSize,RunTime,Y_reg)
##      [,1]                [,2]                [,3]               
## [1,] "p_value Shapiro"   "p_value Lillie"    "Conclusión"       
## [2,] "0.891701087186422" "0.891701087186422" "No se rechaza Ho."

Proceso de Normalidad

Hemos utilizado los test de Shapiro-Wilk y Lilliefors para probar la hipótesis de normalidad, dados que la varianza y la media son desconocidos, ya que el test de Kolmogrov-Smirnov se utiliza conocidas la varianza y media poblacional.

Hipótesis de Independencia

\[H_0: \rho=0\] \[H_a: \rho\not= 0\]

Proceso de Independencia

El estadístico Durbin-Watson es: \[d=\frac{\sum_{t=2}^{n}(e_t -e_{t-1})^2}{\sum_{t=2}^{n} (e_t)^2}\] \[d=2.76\] Para ver si \(H_0\) se rechaza o no, el estadístico utilizado nos da valores para comprobar la prueba de hipótesis estos son: \[d_U=1,401\] \[d_L=1,180\] donde, \(d>d_U\) por lo que no se rechaza \(H_0\)

Evelin Chile, Lizeth Moreno, María Belén Rosero

26 de abril de 2019