Ejercicio 10 Sowtware para el análisis de Datos

Introducción

Para resolver el ejercicio debemos hacer y subira RPubs lo que hemos desarrollado en RMarkdown, en este caso desarrollaré una representación gráfica con modelo de regresión lineal simple, lo cual es materia del LAB2 que practico mientras resuelvo parte del LAB1

Gráfica

#incorporamos los datos en nuestro entorno
library(knitr)  
id <- seq(1:25)
peso <- c(63, 72, 79, 75, 27, 84, 73,65, 70, 76, 69, 89,65,57,59, 69, 60, 79,
75, 82, 59, 67, 85, 55,63)
grasa <- c(288,385,402, 365, 209, 354, 190, 405, 263, 451,
302,290,346,254,395,434,220,374,308,220,311,181,274,303,244 )
edad <- c(28,36,57, 44, 24,46,20, 52, 30, 57,
25,31,52,23,60,48,34,51,50,34,46,23,37,40,30)
Mujeres <- data.frame(id, peso, grasa, edad)
head(Mujeres)
##   id peso grasa edad
## 1  1   63   288   28
## 2  2   72   385   36
## 3  3   79   402   57
## 4  4   75   365   44
## 5  5   27   209   24
## 6  6   84   354   46
names(Mujeres)
## [1] "id"    "peso"  "grasa" "edad"
#hacemos un resumen de las variables del conjunto de datos.
str(Mujeres)
## 'data.frame':    25 obs. of  4 variables:
##  $ id   : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ peso : num  63 72 79 75 27 84 73 65 70 76 ...
##  $ grasa: num  288 385 402 365 209 354 190 405 263 451 ...
##  $ edad : num  28 36 57 44 24 46 20 52 30 57 ...
summary(Mujeres)
##        id          peso           grasa            edad      
##  Min.   : 1   Min.   :27.00   Min.   :181.0   Min.   :20.00  
##  1st Qu.: 7   1st Qu.:63.00   1st Qu.:254.0   1st Qu.:30.00  
##  Median :13   Median :69.00   Median :303.0   Median :37.00  
##  Mean   :13   Mean   :68.68   Mean   :310.7   Mean   :39.12  
##  3rd Qu.:19   3rd Qu.:76.00   3rd Qu.:374.0   3rd Qu.:50.00  
##  Max.   :25   Max.   :89.00   Max.   :451.0   Max.   :60.00
#miramos las relaciones que pueda haber entre cada par de variables. Para ello podemos representar una matriz de diagramas de dispersión.
pairs(Mujeres)

#miramos el grado de relación lineal de las variables.
kable(cor(Mujeres$grasa, Mujeres$edad))
x
0.8373534
#generamos el modelo con la variable dependiente que será la variable grasa en sangre y la variable edad.
modelreg <- lm(grasa ~ edad, data = Mujeres)
summary(modelreg)
## 
## Call:
## lm(formula = grasa ~ edad, data = Mujeres)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -63.478 -26.816  -3.854  28.315  90.881 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 102.5751    29.6376   3.461  0.00212 ** 
## edad          5.3207     0.7243   7.346 1.79e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 43.46 on 23 degrees of freedom
## Multiple R-squared:  0.7012, Adjusted R-squared:  0.6882 
## F-statistic: 53.96 on 1 and 23 DF,  p-value: 1.794e-07
# generamos el gráfico de dispersión (nube de puntos) con la recta de mínimos cuadrados ajustada.
plot(Mujeres$edad, Mujeres$grasa, xlab='Edad', ylab='Grasa')
abline(modelreg)

#hacemos la validación del modelo para ver que se cumplen las condiciones.
residuos <- rstandard(modelreg)
valores.ajustados <- fitted(modelreg)
plot(valores.ajustados, residuos)

#la hipótesis de normalidad se suele comprobar mediante un Q-Q plot de los residuos. El siguiente código sirve para obtenerlo
qqnorm(residuos)
qqline(residuos)

#supongamos que nos piden hacer una predicción puntual para la cantidad de grasas de mujeres con edades comprendidas entre 30 y 40 años.
pred_edad <- data.frame(edad = seq(30, 40))
predict(modelreg, pred_edad)
##        1        2        3        4        5        6        7        8 
## 262.1954 267.5161 272.8368 278.1575 283.4781 288.7988 294.1195 299.4402 
##        9       10       11 
## 304.7608 310.0815 315.4022
#si se nos pide el intervalo de confianza (al 95 %) de los parámetros estimados podremos usar este código.
confint(modelreg)
##                 2.5 %     97.5 %
## (Intercept) 41.265155 163.885130
## edad         3.822367   6.818986

Conclusión

Esta es una de las funcionalidades que más me ha llamado la atención de R durante estos dos primeros LABs, pues permite realizar una gran cantidad de funciones estadísticas de una forma mucho más cómoda y directa, abriendo la posibilidad a desarrollar una gran variedad de estadísticos y gráficos personalizados según las condiciones de estudio en las que nos encontremos