Todo el material que aquí se presenta está extraído y traducido del libro “Learning Statistics with R” de Danielle Navarro

Correlación lineal simple

Descargar el archico parternidad.xlsx del campus

El siguiente conjunto de datos muestra las horas dormidas por el padre, las horas dormidas por el bebé y el nivel de mal humor del padre. Nos interesa conocer como afecta las horas dormidas por el bebé en el mal humor del padre.

library(readxl)
paternidad <- read_excel("paternidad.xlsx")

Estadística descriptiva

Primeramente exploramos los datos mediantes estadística descriptiva

summary(paternidad)
##   Padre horas      Bebe horas       Mal humor          Día        
##  Min.   :4.840   Min.   : 3.250   Min.   :41.00   Min.   :  1.00  
##  1st Qu.:6.293   1st Qu.: 6.425   1st Qu.:57.00   1st Qu.: 25.75  
##  Median :7.030   Median : 7.950   Median :62.00   Median : 50.50  
##  Mean   :6.965   Mean   : 8.049   Mean   :63.71   Mean   : 50.50  
##  3rd Qu.:7.740   3rd Qu.: 9.635   3rd Qu.:71.00   3rd Qu.: 75.25  
##  Max.   :9.000   Max.   :12.070   Max.   :91.00   Max.   :100.00

Realizamos un histograma para cada una de las tres variables

par(mfrow=c(1,3))
hist(paternidad$`Padre horas`, main="Horas dormidas por el padre", col="blue")
hist(paternidad$`Bebe horas`, main="Horas dormidas por el bebé", col="blue")
hist(paternidad$`Mal humor`, main="Nivel de mal humor", col="blue")

Mediante diagramas de dispersión vamos a graficar la relación entre el mal humor del padre y las horas dormidas por el bebé y también vamos a graficar la relación entre el mal humor del padre y las horas dormidas por el padre

par(mfrow=c(1,2))
plot(paternidad$`Bebe horas`,paternidad$`Mal humor`, col="blue")
plot(paternidad$`Padre horas`,paternidad$`Mal humor`, col="blue")

¿Hay relación entre las variables?

Coeficiente de Correlación de Pearson

El coefeciente de correlación entre dos variables X e Y es una medición que varía de -1 a 1 y se indica con la letra r. Cuando r=-1 indica una relación negativa perfecta. Por otro lado si r=1 indica una relación positica perfecta. A continuación se muestra un caso de correlación positiva y un caso de correlación negativa.

par(mfrow=c(1,2))

plot(paternidad$`Padre horas`,paternidad$`Mal humor`, col="blue", main=" Correlación negativa")
plot(paternidad$`Padre horas`,paternidad$`Bebe horas`, col="blue", main="correlaión positiva")

La fórmula del coeficiente de correlación de Pearson puede ser escrita de diferentes maneras. Primeramente se intorducirá el concepto de covarianza. La covarianza entre dos variables X e Y es una generalización de la varianza. La fórmula matemática es la siguiente:

\(\large cov_{x,y}=\frac{\sum_{i=1}^{N}(x_{i}-\bar{x})(y_{i}-\bar{y})}{N-1}\)

si bien la fórmula no es demasaida “informativa” se puede observar que hay una multiplicación de una cantidad que depende de X por una cantidad que depende de Y y luego se realiza un promedio. Podemos pensar la fórmula de la covarianza como un promedio de los productos cruzados. si X e Y no están relacionadas en lo más mínimo, entonces la covarianza será igual a cero. Si la relación entre ellas es positiva entonces la covarianza es positiva. Por otro lado si la relación es negativa, entonces la covarianza es negativa. Podemos observar que la covarianza nos muestra bastante bien si hay correlación o no. sin embargo tiene un problema que es depende la las unidades de X e Y, lo cual la hace bastante dificil de interpretar. El coeficiente de correlación de Pearson soluciona este problema estandarizando la covarianza al igual que es estandarizan los valores Z, es decir dividiendo por la desviación estándar. La fórmula del coeficiente de correlación de Pearson se escribe del siguiente modo:

\(\large r_{x,y}=\frac{cov_{x,y}}{\hat{\sigma}_x\hat{\sigma}_y}\)

al realizar la estandarización no solamente logramos solucionar el problema de las unidades sino que además limitamos la correlación a una escala de -1 a 1.

Calculando correlaciones con R

Podemos calcular correlaciones en R utilizando la función cor(). Sólo haqy que especificar los argumentos correspondientes a las variables X e Y. Vamos a calcular la correlación entre las horas dormidas por el padre y su nivel de mal humor

a<-cor(paternidad$`Padre horas`,paternidad$`Mal humor`)
a
## [1] -0.903384

Podemos utilizar la función cor() para generar una matriz con todas las correlaciones posibles dentro de mis datos

cor(paternidad)
##             Padre horas  Bebe horas   Mal humor         Día
## Padre horas  1.00000000  0.62794934 -0.90338404 -0.09840768
## Bebe horas   0.62794934  1.00000000 -0.56596373 -0.01043394
## Mal humor   -0.90338404 -0.56596373  1.00000000  0.07647926
## Día         -0.09840768 -0.01043394  0.07647926  1.00000000
pairs(paternidad)

## Prueba de hipótesis para la correlación

cor.test(paternidad$`Padre horas`,paternidad$`Mal humor`)
## 
##  Pearson's product-moment correlation
## 
## data:  paternidad$`Padre horas` and paternidad$`Mal humor`
## t = -20.854, df = 98, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.9340614 -0.8594714
## sample estimates:
##       cor 
## -0.903384

Interpretación de la correlación

Naturalmente en la vida real no hay muchas correlaciones de 1. Entonces la pregunta es ¿cómo debo interpretarpor ejemplo un valor de r de 0.4?. La respuesta es que depende de para que se quieren usar los datos y que tan grandes deberían ser las correlaciones en un determinado ámbito de trabajo

de 0 a 0.5 baja correlación simple lineal
de 0.5 a 0.8 moderada correlación simple lineal
de 0.8 a 1 fuerte correlación simple lineal

Ejercicio Dados lo siguientes vectores calcular la correlación entre x1 e y1, x2 e y2, x3 e y3 y x4 e y4

x1<-c(10 , 8 ,13 , 9 ,11 ,14 , 6 , 4 ,12,  7 , 5)
x2<-c(10,  8 ,13 , 9, 11, 14 , 6 , 4 ,12 , 7 , 5)
x3<-c(10,  8, 13 , 9, 11 ,14 , 6 , 4, 12 , 7 , 5)
x4<-c( 8,  8 , 8 , 8 , 8 , 8 , 8 ,19 , 8 , 8 , 8)
y1<-c(8.04 , 6.95 , 7.58 , 8.81 , 8.33 , 9.96 , 7.24 , 4.26, 10.84 , 4.82, 5.68)
y2<-c(9.14, 8.14, 8.74 ,8.77 ,9.26, 8.10 ,6.13 ,3.10, 9.13, 7.26 ,4.74)
y3<-c( 7.46,  6.77, 12.74,  7.11,  7.81 , 8.84 , 6.08 , 5.39,  8.15,  6.42 ,5.73)
y4<-c(6.58 , 5.76,  7.71,  8.84 , 8.47,  7.04 , 5.25 ,12.50 , 5.56 , 7.91  ,6.89)
cor(x1,y1)
## [1] 0.8164205
cor(x2,y2)
## [1] 0.8162365
cor(x3,y3)
## [1] 0.8162867
cor(x4, y4)
## [1] 0.8165214

Parecería ser que todas las correlaciones son iguales. ¿ qué pasa si graficamos los datos?

par(mfrow=c(2,2))
plot(x1,y1, col="blue")
plot(x2,y2 ,col="blue")
plot(x3,y3 ,col="blue")
plot(x4, y4, col="blue")

Podemos observar que los gráficos son totalmente distintos. Debido a esto es siempre importante graficar los datos antes que nada

Regresión lineal simple

Volvamos a la relación entre las horas que durmió el padre y el nivel de mal humor. Anteriormente habíamos calculado que el coeficiente de correlación era de -0.9. La relación se muestra en el gráfico A. Mentalmente podemos imaginar una línea recta que cruze por la mitad de los datos como muestra el gráfico B. En estadística esa línea se llama línea de regresión. Obviamente esta línea de regresión se traza por la mitad de los datos. En el gráfico C se muestra otra línea que no es una línea de regresión

par(mfrow=c(2,2))
plot(paternidad$`Padre horas`,paternidad$`Mal humor`, main = "Gráfico A")
plot(paternidad$`Padre horas`,paternidad$`Mal humor`, main = "Gráfico B")
abline(lm(paternidad$`Mal humor`~paternidad$`Padre horas`), col = "blue")
plot(paternidad$`Padre horas`,paternidad$`Mal humor`, main = "Gráfico C")
abline(lm(10+paternidad$`Mal humor`~paternidad$`Padre horas`), col = "blue")

La fórmula matemática de una linea recta es

y=mx+c

Las variables son x e y son las variables, m es la pendiente de la línea y c es la ordenada al origen. La ordenada al origen representa el valor de y cuando x es igual a cero y la pendiente indica la tasa de cambio en Y frente al cambio unitario en x . La misma fórmula matemática de la línea recta es la que usamos para la regresión lineal.

\(Y_i = \beta_0 + \beta_1 X_i\)

Primeramente notemos que se ha escrito \(Y_i\) y \(X_i\) en lugar de sólo Y y X. Esto es para que recordemos que estamos trabajando con datos reales. En esta fórmula \(X_i\) es el valor de la variable predictora para la i-ésima observación e \(Y_i\) es el valor que toma la variable respuesta. Otra cosa importante para destacar es que los datos no caen extactamente en la línea. Dicho de otro modo el dato \(Y_i\) no es idéntico al dato del modelo de regresión \(\hat{Y}_i\). Denominaremos residuo a la diferencia entre el valor real y el predicho por el modelo de regresión y lo simbolizaremos con la letra \(\epsilon_i\)

\(\epsilon_i=Y_i-\hat{Y}_i\)

Finalmente la fórmula de regresión lineal queda de la siguiente forma

\(Y_i = \beta_0 + \beta_1 X_i + \epsilon_i\)

Estimación de un modelo de regresión lineal

Cuando el modelo de regresión lineal es adecuado, entonces los residuos son pequeños como lo muestras las figuras A1 y A2. Cuando el modelo de regresión lineal no es adecuado, entonces los residuos son grandes como lo muestran las figuras B1 y B2. Lo que buscamos en todo modelo de regresión es que los residuos sean lo más chicos posibles, es decir que el objetivo es encontrar la recta que menos residuos tenga o dicho de una manera más estadística.

Los estimadores de los coeficientes de regresión \(\hat{\beta_0}\) y \(\hat{\beta_1}\) son aquellos que minimizan la suma de los residuos al cuadrado

Esta método para estimar los coeficientes de regresión se llama método de mínimos cuadrados

Estimando los parámetros de la regresión con R

Para realizar regresiones con R utilizaremos la función lm(). Hay que tener en cuenta dos cosas a la hora de utilizar está función:
* La fórmula: La fórmula especifica el modelo de regresión lineal. Para este curso utilizaremos la fórmula variable respuesta ~ variable predictora
* Los datos: el objeto de R donde están los datos. Normalmente utilizaremos vectores o tabla de datos

Realizemos una regresión simple para los datos paternidad con los cuales veníamos trabajando

regression.1 <- lm( paternidad$`Mal humor` ~ paternidad$`Padre horas`,paternidad)
regression.1 
## 
## Call:
## lm(formula = paternidad$`Mal humor` ~ paternidad$`Padre horas`, 
##     data = paternidad)
## 
## Coefficients:
##              (Intercept)  paternidad$`Padre horas`  
##                  125.956                    -8.937

Utilizando la función lm() obtuvimos los estimdores de los parámetros \(\hat{\beta_0}\) y \(\hat{\beta_1}\) La fórmula de la regresión sería la siguiente:

\(\hat{Y}_i = 125.96 -8.94 X_i\)

un coeficiente \(\hat{\beta_1}\) de -8.94 indica que si incremento el valor de x en 1, entonces voy a obtener un disminución en el valor de 8.94. Por otro lado si la variable x es igual a cero entonces Y va a valer 125.96

Cuantificación del ajuste del modelo de regresión lineal

Ya sabemos estimar los coeficientes de la regresión pero no sabemos si la regresión es lo suficientemente buena. Es decir todavía no sabemos si la predicción está cerca del valor real.

El valor \(R^2\)

Primeramente voy a crear dos variables x e y

X <- paternidad$`Padre horas`
Y <- paternidad$`Mal humor`

Luego voy a calcular los valores de \(\hat{Y}_i\) y los voy a guardar en la variable Y.pred

Y.pred <- -8.94 * X+125.97

Luego vamos a calcular la suma de los residuos al cuadrado

SS.resid <- sum( (Y - Y.pred)^2 )
print( SS.resid )
## [1] 1838.722

Luego calculamos la suma de las diferencias de cada valor de y con respeto a la media y lo elevamos al cuadrado

SS.tot <- sum( (Y - mean(Y))^2 )
print( SS.tot )
## [1] 9998.59
R2<- 1 - (SS.resid / SS.tot)
print( R2)
## [1] 0.8161018

Al valor \(R^2\) se lo denomina coeficiente de determinación y tiene una interpretación muy simple: Es la proporción de la variablidad de la variable respuesta que puede ser explicada por la variable predictora En nuestro caso, el 81% de la variablidad del mal humor del padre está explicado por las horas que durmió. Para calcular el valor de \(R^2\) en R vamos a utilizar la función summary(

summary(regression.1)
## 
## Call:
## lm(formula = paternidad$`Mal humor` ~ paternidad$`Padre horas`, 
##     data = paternidad)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -11.025  -2.213  -0.399   2.681  11.750 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              125.9563     3.0161   41.76   <2e-16 ***
## paternidad$`Padre horas`  -8.9368     0.4285  -20.85   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.332 on 98 degrees of freedom
## Multiple R-squared:  0.8161, Adjusted R-squared:  0.8142 
## F-statistic: 434.9 on 1 and 98 DF,  p-value: < 2.2e-16

Pruebas de hipótesis para los modelos de regresión