Regresión lineal Simple parte 2

  • En este ejercio se utilizó información al respecto de 60 cobayas, a los cuales se les proporcionó vitamina C en dos medios y distintas dósis, para luego registrar el tamaño en milímetros de sus dientes en cada uno de ellos.

Cobaya comiendo un trozo de vegetal

  • Importar datos

Como se ha estado haciendo en proyector anteriores, antes que cualquier cosa, lo primero es importar los datos para poder utilizarlos. Se utiliza la función read.csv para leer el archivo separado por comas que contiene la información.

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
dientes <- read.csv("dientes.csv")
dientes# Se muestra la tabla con los datos
##    Cobayas Tamaño Método Dosis
## 1        1    4.2     VC   0.5
## 2        2   11.5     VC   0.5
## 3        3    7.3     VC   0.5
## 4        4    5.8     VC   0.5
## 5        5    6.4     VC   0.5
## 6        6   10.0     VC   0.5
## 7        7   11.2     VC   0.5
## 8        8   11.2     VC   0.5
## 9        9    5.2     VC   0.5
## 10      10    7.0     VC   0.5
## 11      11   16.5     VC   1.0
## 12      12   16.5     VC   1.0
## 13      13   15.2     VC   1.0
## 14      14   17.3     VC   1.0
## 15      15   22.5     VC   1.0
## 16      16   17.3     VC   1.0
## 17      17   13.6     VC   1.0
## 18      18   14.5     VC   1.0
## 19      19   18.8     VC   1.0
## 20      20   15.5     VC   1.0
## 21      21   23.6     VC   2.0
## 22      22   18.5     VC   2.0
## 23      23   33.9     VC   2.0
## 24      24   25.5     VC   2.0
## 25      25   26.4     VC   2.0
## 26      26   32.5     VC   2.0
## 27      27   26.7     VC   2.0
## 28      28   21.5     VC   2.0
## 29      29   23.3     VC   2.0
## 30      30   29.5     VC   2.0
## 31      31   15.2     OJ   0.5
## 32      32   21.5     OJ   0.5
## 33      33   17.6     OJ   0.5
## 34      34    9.7     OJ   0.5
## 35      35   14.5     OJ   0.5
## 36      36   10.0     OJ   0.5
## 37      37    8.2     OJ   0.5
## 38      38    9.4     OJ   0.5
## 39      39   16.5     OJ   0.5
## 40      40    9.7     OJ   0.5
## 41      41   19.7     OJ   1.0
## 42      42   23.3     OJ   1.0
## 43      43   23.6     OJ   1.0
## 44      44   26.4     OJ   1.0
## 45      45   20.0     OJ   1.0
## 46      46   25.2     OJ   1.0
## 47      47   25.8     OJ   1.0
## 48      48   21.2     OJ   1.0
## 49      49   14.5     OJ   1.0
## 50      50   27.3     OJ   1.0
## 51      51   25.5     OJ   2.0
## 52      52   26.4     OJ   2.0
## 53      53   22.4     OJ   2.0
## 54      54   24.5     OJ   2.0
## 55      55   24.8     OJ   2.0
## 56      56   30.9     OJ   2.0
## 57      57   26.4     OJ   2.0
## 58      58   27.3     OJ   2.0
## 59      59   29.4     OJ   2.0
## 60      60   23.0     OJ   2.0
#VC: Vitamin C
#OJ: Orange Juice

Trasformar los datos

  • En este caso se extraen los datos que pueden resultar más importantes para saber si existe correlación entre el tamaño de la dósis proporcionada y el tamaño de los dientes de las cobayas. Estos datos se guardan como numéricos en variables y después agregan en conjunto a una matriz.
tamaño <- as.numeric(dientes$Tamaño)
dosis <- as.numeric(dientes$Dosis)
crecimiento <- data.frame(dosis, tamaño)

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, 60 y 4 respectivamente.

glimpse(dientes)
## Rows: 60
## Columns: 4
## $ Cobayas <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, ...
## $ Tamaño  <dbl> 4.2, 11.5, 7.3, 5.8, 6.4, 10.0, 11.2, 11.2, 5.2, 7.0, 16.5,...
## $ Método  <fct> VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC,...
## $ Dosis   <dbl> 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0, 1.0,...
  • 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.

summary(crecimiento)
##      dosis           tamaño     
##  Min.   :0.500   Min.   : 4.20  
##  1st Qu.:0.500   1st Qu.:13.07  
##  Median :1.000   Median :19.25  
##  Mean   :1.167   Mean   :18.81  
##  3rd Qu.:2.000   3rd Qu.:25.27  
##  Max.   :2.000   Max.   :33.90
  • Matriz de diagramas de dispersión

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.

pairs(crecimiento)

* Matriz de diagramas de coeficiente de correlación

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(crecimiento)
##            dosis    tamaño
## dosis  1.0000000 0.8026913
## tamaño 0.8026913 1.0000000
  • Prueba de correlación de Pearson

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 extremadamente pequeño, de 1.233 x 10^14, se deduce que se puede continuar.

cor.test(x = dientes$Dosis, y = dientes$Tamaño, method="pearson", digits = 3)
## 
##  Pearson's product-moment correlation
## 
## data:  dientes$Dosis and dientes$Tamaño
## t = 10.25, df = 58, p-value = 1.233e-14
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.6892521 0.8777169
## sample estimates:
##       cor 
## 0.8026913
##Si el valor de p fuera muy grande, se descartaría realizar los siguientes pasos-

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.

library(GGally)
## Loading required package: ggplot2
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
ggpairs(crecimiento, 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`.

Varios puntos a tomar en cuenta con lo visto al respecto de los son:

  1. Existe una correlación directamente proporcional entre las dosis y el tamaño de los dientes según se indica en la prueba de correlación de Pearson.

  2. Al ser el coeficiente de correlación de Pearson tan alto y el valor de p tan bajo, se puede deducir que existe una gran correlación entre ambas.

  3. Gracias a los valores obtenidos, es correcto seguir con los análisis posteriores.

Modelo de regresión lineal simple

Con la formación de la recta de mínimos cuadrados con la regresión lineal simple, es posible observar varios aspectos, pero uno de ellos son las predicciones acerca de los datos, para los cuales, dependerá de otros factores si son viables o no.

modelo.lineal <- lm(tamaño ~ dosis, data = dientes)
summary(modelo.lineal)
## 
## Call:
## lm(formula = tamaño ~ dosis, data = dientes)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.4496 -2.7406 -0.7452  2.8344 10.1139 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   7.4225     1.2601    5.89 2.06e-07 ***
## dosis         9.7636     0.9525   10.25 1.23e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.601 on 58 degrees of freedom
## Multiple R-squared:  0.6443, Adjusted R-squared:  0.6382 
## F-statistic: 105.1 on 1 and 58 DF,  p-value: 1.233e-14
  • Ecuación de la recta de mínimos cuadrados

\[y = 7.4225 + 9.7636x \] Como ya se había mencionado antes, los intervalos de confianza permiten detectar el área en la cual los valores del modelo son exactos.

confint(modelo.lineal)
##                2.5 %    97.5 %
## (Intercept) 4.900171  9.944829
## dosis       7.856870 11.670273

#Intervalos de confianza

  • Representación gráfica del modelo (de manera distinta a la anterior)
ggplot(data = dientes, mapping = aes(x = Dosis, y = Tamaño)) +
geom_point(color = "firebrick", size = 2) +
geom_smooth(method = "lm", se = TRUE, color = "black") +
labs(title = "Tamaño ~ Dosis", x = "Dosis", y = "Tamaño") +
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.96467, p-value = 0.07976

Al ser el valor de p mayor que 0.05, se infiere que los residuos son normales.

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 = crecimiento %>% filter(dosis == 0.5) %>% pull(tamaño),
        y = crecimiento %>% filter(dosis == 2.0) %>% pull(tamaño)
      )
## Warning in ks.test(x = crecimiento %>% filter(dosis == 0.5) %>% pull(tamaño), :
## cannot compute exact p-value with ties
test_ks
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  crecimiento %>% filter(dosis == 0.5) %>% pull(tamaño) and crecimiento %>% filter(dosis == 2) %>% pull(tamaño)
## D = 0.95, p-value = 2.897e-08
## alternative hypothesis: two-sided

Como se observa, el valor de p es mucho menor a 0.05, por lo cual se asume que las distribuciones no son 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 dosis y tamaño de los dientes de las cobayas. Sin embargo, debido a las contradicciones encontradas con las pruebas de shapiro-wilks y de Smirnov-Kolmogorov, probablemente no se encuentren relacionados por la normalidad los residuos del modelo lineal.