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
#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
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