Regresión lineal Simple parte 2

  • Para este ejercicio se utilizará la serie de datos “trees” que son medidas de árboles de “black cherry”.

Vista de un árbol de black Cherry

  • Importar datos

Se importan los datos contenidos en la biblioteca mostrada en el código.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
head(trees)
##   Girth Height Volume
## 1   8.3     70   10.3
## 2   8.6     65   10.3
## 3   8.8     63   10.2
## 4  10.5     72   16.4
## 5  10.7     81   18.8
## 6  10.8     83   19.7

La siguiente función únicamente es para visualizar la matriz transpuesta de los datos, además de indicar el número de filas y de columnas, 31 y 3 respectivamente.

glimpse(trees)
## Rows: 31
## Columns: 3
## $ Girth  <dbl> 8.3, 8.6, 8.8, 10.5, 10.7, 10.8, 11.0, 11.0, 11.1, 11.2, 11....
## $ Height <dbl> 70, 65, 63, 72, 81, 83, 66, 75, 80, 75, 79, 76, 76, 69, 75, ...
## $ Volume <dbl> 10.3, 10.3, 10.2, 16.4, 18.8, 19.7, 15.6, 18.2, 22.6, 19.9, ...
  • Resumen estadístico

El siguiente es un resumen de varias medidas que se pueden obtener de la matriz creada con los datos que serán analizados, que indica tanto lasmedidas máximas como mínimas de ambas columnas, sus cuartiles, mediana y media.

sort(trees$Girth)
##  [1]  8.3  8.6  8.8 10.5 10.7 10.8 11.0 11.0 11.1 11.2 11.3 11.4 11.4 11.7 12.0
## [16] 12.9 12.9 13.3 13.7 13.8 14.0 14.2 14.5 16.0 16.3 17.3 17.5 17.9 18.0 18.0
## [31] 20.6
summary(trees)
##      Girth           Height       Volume     
##  Min.   : 8.30   Min.   :63   Min.   :10.20  
##  1st Qu.:11.05   1st Qu.:72   1st Qu.:19.40  
##  Median :12.90   Median :76   Median :24.20  
##  Mean   :13.25   Mean   :76   Mean   :30.17  
##  3rd Qu.:15.25   3rd Qu.:80   3rd Qu.:37.30  
##  Max.   :20.60   Max.   :87   Max.   :77.00

La matriz de diagramas de dispersión ayuda que pueda compararse la relación de los datos vista desde distintas perspectivas, ya sea como si fueran el eje X o el eje Y, cada columna de la matriz. Esto se realiza mediante la función pairs, que creará matrices cuadradas dependiendo del numéro de columnas, es decir, una matriz 2x2 si hay 2 columnas o una 3x3 si hay 3.

  • Matriz de diagramas de dispersión
pairs(trees)

* Matriz de diagramas de coeficiente de correlación

cor(trees)
##            Girth    Height    Volume
## Girth  1.0000000 0.5192801 0.9671194
## Height 0.5192801 1.0000000 0.5982497
## Volume 0.9671194 0.5982497 1.0000000
  • Prueba de correlación de Pearson

Esto corresponde a lo mismo que lo anterior, pero utilizando el coeficiente que representan. La utilidad para detectar la correlación entre cada una varía, puesto que en esta, se nota sencillamente observando si los términos de la matriz donde coinciden los diferentes datos provenientes de las columnas es mayor a 0.6. Nótese que cuando los datos coinciden en fila y columna consigo mismos, el coeficiente de correlación es 1. Esto puede explicarse ya que obviamente al ser los mismos datos, se encuentran relacionados.

cor.test(x = trees$Girth, y = trees$Volume, method="pearson", digits = 3)
## 
##  Pearson's product-moment correlation
## 
## data:  trees$Girth and trees$Volume
## t = 20.478, df = 29, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.9322519 0.9841887
## sample estimates:
##       cor 
## 0.9671194
##Si el valor de p fuera muy grande, se descartaría realizar los siguientes pasos-

De igual forma, se suele realizar una prueba de correlación de Pearson para obtener el coeficiente de la correlación entre los datos. Resultando útil además, ya que indica si pueden realizarse análisis posteriores dependiendo del valor de p, que en este caso al ser muy pequeño, de 2.2 x 10^16, se deduce que se puede continuar.

library(GGally)
## Loading required package: ggplot2
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
ggpairs(trees, lower=list(continuous= "smooth"), diag= list(continuous= "bar"), axislabels=list(continuous="none"))
## Warning in warn_if_args_exist(list(...)): Extra arguments: "axislabels" are
## being ignored. If these are meant to be aesthetics, submit them using the
## 'mapping' variable within ggpairs with ggplot2::aes or ggplot2::aes_string.
## Warning in check_and_set_ggpairs_defaults("diag", diag, continuous =
## "densityDiag", : Changing diag$continuous from 'bar' to 'barDiag'
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Del análisis se puede inferir lo siguiente:

  1. La variable “Girth” efectivamente se encuentra relacionada con la variable “Volume”, por lo que se tomarán como correctas las asunciones anteriores.

  2. El coeficiente de correlación de pearson es muy alto (0.9671194) y el valor de P es significativo (p-value < 2.2e-16, siendo este un valor muy pequeño), señal de que existe una gran correlación.

  3. Se procede a generar el modelo de regresión lineal debido a los resultados obtenidos, los cuales dicen que si tiene sentido gracias a su correlación y significancia importantes.

Modelo de regresión lineal simple

La siguiente gráfica no solo se encarga de mostrar la correlació entre los datos, sino que también muestra los intervalos de confianza del modelo, es decir, el espacio delimitado por gris en el cual los valores del modelo son confiables. Como se observa, al ser este intervalo pequeño, significa hay más certeza en los valores.

modelo.lineal <- lm(Volume ~ Girth, data = trees)
summary(modelo.lineal)
## 
## Call:
## lm(formula = Volume ~ Girth, data = trees)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -8.065 -3.107  0.152  3.495  9.587 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -36.9435     3.3651  -10.98 7.62e-12 ***
## Girth         5.0659     0.2474   20.48  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.252 on 29 degrees of freedom
## Multiple R-squared:  0.9353, Adjusted R-squared:  0.9331 
## F-statistic: 419.4 on 1 and 29 DF,  p-value: < 2.2e-16
  • Ecuación de la recta de mínimos cuadrados

\[y = -36.9435 + 5.0659x \]

confint(modelo.lineal)
##                  2.5 %     97.5 %
## (Intercept) -43.825953 -30.060965
## Girth         4.559914   5.571799

#Intervalos de confianza

  • Representación gráfica del modelo (de manera distinta a la anterior)
ggplot(data = trees, mapping = aes(x = Girth, y = Volume)) +
geom_point(color = "firebrick", size = 2) +
geom_smooth(method = "lm", se = TRUE, color = "black") +
labs(title = "Volumen ~ Diámetro", x = "Diámetro", y = "Volumen") +
theme_bw() + theme(plot.title = element_text(hjust = 0.5))
## `geom_smooth()` using formula 'y ~ x'

Verificar condiciones para aceptar o no el modelo

  • Para evaluar las condiciones que permiten decir que el modelo es válido, se hará un análisis de residuos.
par(mfrow = c(1,2))
plot(modelo.lineal)

Contraste de hipótesis (normalidad de los residuos)

Según el método de Shapiro-Wilks:

shapiro.test(modelo.lineal$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo.lineal$residuals
## W = 0.97889, p-value = 0.7811

Asignación

  • Redactar este ejercicio con sus palabras y sus conclusiones
  • Prueba de correlación Pearson
  • Prueba de Shapiro-Wilk (Que tanto son aceptables los errores)
  • Prueba de Smirnov-Kolmogorov
  • Prueba de Residuos

Investigación realizada

Pruba de correlación Pearson

La prueba de correlación Pearson existe para poder encontrar la intensidad y la dirección que hay entre la relación, que debe ser lineal, de dos variables continuas. El coeficiente generado por el análisis puede tomar valores que van desde el -1 al 1, siendo un valor cercano a 1 una relación directamente proporcional y un valor cercano a -1 una relación inversamente proporcional. Un valor en 0 indica que las variables no se relacionan de manera lineal, pero no indica que no existe otro tipo de relación.

Prueba de Shapiro-Wilks

Se le conoce como prueba de Shapiro Wilks a aquella que se realiza con el fin de encontrar si una muestra seleccionada es normal o no. Para esto se asume una hipótesis nula que dice que la distribución es normal y una alternativa que dice que no es normal. Si el valor de p es mayor que la significancia seleccionada generalmente de 0.05, no se rechaza la hipótesis nula, por lo que efectivamente la distribución es normal. Si por en cambio, p tiene un valor menor a 0.05, se rechaza la hipótesis nula y se toma como cierta la hipótesis alternativa que indica que la distribución no es normal.

Prueba de Smirnov-Kolmogorov

La prueba de Smirnov-Kolmogorov, es un tipo de prueba no paramétrica, que al igual que la anterior, busca si dos muestras tienen una distribución normal entre sí. Esto lo hace obteniendo la distancia máximo entre una muestra de datos empírica y una teórica, o dos muestras de datos empíricas para luego obtener los resultados del análisis, en los cuales, si el valor de p es mayor la significancia, quiere decir que se tiene una distribución normal, por lo cual no se rechaza la hipótesis nula.

test_ks <- ks.test(
        x = trees %>% filter(Girth == 8.3) %>% pull(Volume),
        y = trees %>% filter(Girth == 11.1) %>% pull(Volume)
      )
test_ks
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  trees %>% filter(Girth == 8.3) %>% pull(Volume) and trees %>% filter(Girth == 11.1) %>% pull(Volume)
## D = 1, p-value = 1
## alternative hypothesis: two-sided

Como se observa, el valor de p es 1, por lo cual se asume que las distribuciones son efectivamente normales.

Prueba de Residuos

Una prueba de Residuos o análisis de residuos es aquel que se hace con el fin de validar el modelo de regresión lineal construido. Los residuos son las diferencias entre los valores reales medidos y los valores predecidos por el modelo lineal. Se puede generar un gráfico de residuos, con el cual es posible saber si el modelo es correcto. Si la diferencia es muy grande, no lo aceptamos y viceversa.

Normalidad

La mayoría de datos se encuentran alrededor de la media.

Redacción personal

Tener más de dos variables en un conjuntos de datos puede generar cierta confusión al momento de selccionarlos para llevar a cabo las pruebas y análisis. Sin embargo, para esta práctica se realizaron estudios como el de dispersión, para saber los coeficientes que existían entre todas las variables, por lo que únicamente se tomaron en cuenta aquellos que mostraban una relación grande entre ellos, que para este caso de estudio fueron las medidas de circunferencia y volumen, lo cual tiene sentido, pues en si un árbol grande tiene más circunferencia que otro más pequeño de su mismo tipo tendrá más volumen. Además, no es solo necesario establecer que existe cierta correlación un par de datos, sino estos deben ser validados por distintos métodos para aceptar el que el modelo generado tiene es útil para el tema del que se habla. Eso fue precisamente lo realizado, pues se validó por disntintos tipos de análisis, como el Shapiro-Wilks y el de Smirnov-Kolmogorov, que en realidad el volumen de los árboles si se ven afectados por la circunferencia de estos mismos.