Inserción del Conjunto de Datos
library(readr)
seguro <- read_delim("seguro.csv", delim = ";")
seguro
## # A tibble: 200 × 7
## age sex bmi children smoker region charges
## <dbl> <chr> <dbl> <dbl> <chr> <chr> <dbl>
## 1 19 female 27.9 0 yes southwest 7.59
## 2 18 male 33.8 1 no southeast 20.9
## 3 28 male 33 3 no southeast 18.5
## 4 33 male 22.7 0 no northwest 3.33
## 5 32 male 28.9 0 no northwest 12.6
## 6 31 female 25.7 0 no southeast 9.76
## 7 46 female 33.4 1 no southeast 9.26
## 8 37 female 27.7 3 no northwest 20.0
## 9 37 male 29.8 2 no northeast 19.5
## 10 60 female 25.8 0 no northwest 19.7
## # … with 190 more rows
1. Ejecute las siguientes tareas de preprocesamiento de datos:
a. Retire la columna region.
library(dplyr)
library(tidyverse)
seguro <- seguro %>% select(-region)
b. Renombre las columnas como edad, sexo, imc, nhijos, fuma, gastos.
seguro <- seguro %>% rename("edad"="age","sexo"="sex","imc"="bmi","nhijos"="children",
"fuma"="smoker","gastos"="charges")
c. Recodifique las categorías de la variable sexo como masculino y femenino, fuma: sí y no.
seguro1 <- seguro %>% mutate(sexo=if_else(sexo=="female", "femenino", "masculino"))
seguro1 <- seguro1 %>% mutate(fuma=if_else(fuma=="yes", "si", "no"))
seguro1
## # A tibble: 200 × 6
## edad sexo imc nhijos fuma gastos
## <dbl> <chr> <dbl> <dbl> <chr> <dbl>
## 1 19 femenino 27.9 0 si 7.59
## 2 18 masculino 33.8 1 no 20.9
## 3 28 masculino 33 3 no 18.5
## 4 33 masculino 22.7 0 no 3.33
## 5 32 masculino 28.9 0 no 12.6
## 6 31 femenino 25.7 0 no 9.76
## 7 46 femenino 33.4 1 no 9.26
## 8 37 femenino 27.7 3 no 20.0
## 9 37 masculino 29.8 2 no 19.5
## 10 60 femenino 25.8 0 no 19.7
## # … with 190 more rows
2. Obtenga la matriz de correlaciones de las variables cuantitativas y presente un gráfico que permita visualizarla.
# Seleccionamos las variables predictoras cuanti
corr1 <- seguro1 %>% select(c("edad","imc","nhijos","gastos"))
corr1 %>% cor
## edad imc nhijos gastos
## edad 1.00000000 0.10037859 0.03553105 0.55979388
## imc 0.10037859 1.00000000 0.04210715 0.25051181
## nhijos 0.03553105 0.04210715 1.00000000 0.07908431
## gastos 0.55979388 0.25051181 0.07908431 1.00000000
# Gráfico
library(ggcorrplot)
graf1 <- corr1 %>% cor() %>% ggcorrplot()
graf1
3. Construya un intervalo del 97.5% de confianza para la correlación entre la edad y el imc.
library(confintr)
attach(seguro1)
# El nivel de significacia del 2.5% se reparte a los extremos
ci_cor(edad,imc,method = "pearson", type = "normal", probs = c(0.0125,0.9875))
##
## Two-sided 97.5% normal confidence interval for the true Pearson
## correlation coefficient
##
## Sample estimate: 0.1003786
## Confidence interval:
## 1.25% 98.75%
## -0.05890727 0.25468002
4. Pruebe si la correlación entre el imc y el número de hijos es significativamente distinta de cero. En caso lo sea, interprete su valor.
cor(imc,nhijos)
## [1] 0.04210715
Correlación próxima a cero.
5. Se desea estudiar la influencia lineal de la edad sobre los gastos. Presente el modelo de regresión lineal simple estimado.
\[Y_i = \beta_0+\beta_1X_i+\epsilon_i \qquad i=1,...,n\]
\(Y_i\) : i-ésima registro del pago mensual.
\(X_i\) : i-ésimo registro de edad.
\(β_0\) y \(β_1\): Coeficientes de regresión.
\(ϵ_i\): Error.
modelo1 <- lm(gastos~edad)
modelo1
##
## Call:
## lm(formula = gastos ~ edad)
##
## Coefficients:
## (Intercept) edad
## 3.1881 0.2811
library(broom)
modelo1 %>% tidy()
## # A tibble: 2 × 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 3.19 1.21 2.64 8.86e- 3
## 2 edad 0.281 0.0296 9.51 6.85e-18
- \(β_0\) = 3.1881
- \(β_1\) = 0.2811
# Gráfica de regresión lineal simple
graf2 <- plot(edad, gastos, col = "green",
xlab = "Edad", ylab = "Gastos")
6. Verifique si se cumple la siguiente igualdad:
\[{\hat{B_1} = \frac{S_y}{S_x}R}\]
Donde \(S_y\) y \(S_x\) son las desviaciones estándar de la variable respuesta y predictora, respectivamente, y \(R\) es el coeficiente de correlación entre estas variables.
Valores de \(S^2_x\) y \(S^2_y\)
a <- edad
b <- gastos
n <- length(a)
ma <- mean(a)
mb <- mean(b)
n <- length(a)
S2x <- (sum((a-ma)^2))/n
S2y <- (sum((b-mb)^2))/n
Sx <- sqrt(S2x)
Sy <- sqrt(S2y)
Sx
## [1] 14.45361
Sy
## [1] 7.258318
Valor de \(\hat{\beta}_1\):
\[\hat{\beta}_1=\frac{S_{xy}}{S^2_{x}}\qquad S^2_x=\frac{\sum_{i=1}^{n}{(x_i-\overline{x})^2}}{n} \qquad S_{xy}=\frac{\sum_{i=1}^{n}{(x_i-\overline{x})(y_i-\overline{y})}}{n}\]
Sxy <- (sum((a-ma)*(b-mb)))/n
b1 <- Sxy/S2x
b1.2 <- Sy/Sx*cor(a,b)
b1
## [1] 0.2811175
b1.2
## [1] 0.2811175
Concluimos que los valores son los mismos
7. Utilizando las fórmulas de error estándar, construya un intervalo del 92% de confianza para el intercepto y uno de 98% para la pendiente.
Procedemos a hallar el valor de \(\hat{\beta}_0\), \(S_{\hat{\beta}_0}\) y \(S_{\hat{\beta}_1}\).
\[s_{\hat{\beta}_0}=\sqrt{\sigma^{2}\left [ \frac{1}{n}+\frac{\bar{x}^{2}}{\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}} \right ]}\]
b0 <- mean(b)-b1*mean(a)
summary(modelo1)$sigma -> sigma
sb0 <- sqrt(sigma**2*(1/n+mean(a)**2/sum((a-mean(a))^2)))
sb0
## [1] 1.206033
\[s_{\hat{\beta}_1}=\sqrt{\left [\frac{\sigma ^{2}}{\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}} \right ]}\]
sb1 <- sqrt(sigma**2/sum((a-mean(a))^2))
sb1
## [1] 0.02957255
Intervalo de confianza de 92% del intercepto.
ICI0 <- b0-qt(1-0.08/2,n-2)*sb0
ICS0 <- b0+qt(1-0.08/2,n-2)*sb0
ICI0
## [1] 1.065807
ICS0
## [1] 5.310361
Intervalo de confianza de 98% de la pendiente.
ICI1 <- b1-qt(1-0.02/2,n-2)*sb1
ICS1 <- b1+qt(1-0.02/2,n-2)*sb1
ICI1
## [1] 0.2117602
ICS1
## [1] 0.3504749
8. Calcule las sumas de cuadrados para el análisis de varianza.
# Suma de cuadrados del total:
SumaCT=sum((gastos-mean(gastos))**2)
SumaCT
## [1] 10536.64
# Suma de cuadrados de la regresion:
y_est=b0+b1*edad
SumaR=sum((gastos-y_est)**2)
SumaR
## [1] 7234.78
# Suma de cuadrados del error:
SumaE=sum((y_est-mean(gastos))**2)
SumaE
## [1] 3301.857
modelo1 %>% aov() %>% summary()
## Df Sum Sq Mean Sq F value Pr(>F)
## edad 1 3302 3302 90.36 <2e-16 ***
## Residuals 198 7235 37
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
9. Presente el análisis de varianza, redacte sus conclusiones con un nivel de significancia del 5%.
De la matriz anterior:
- \(H_0: β_1=0\)
- \(H_1:β_1= 0\)
- \(α = 0.05\)
Dado que el \(P_{valor}\) < 0.05, se rechaza la hipótesis nula. Existe suficiente evidencia estadística para para indicar que existe una relación lineal de dependencia de los gastos en función a la edad.
10. ¿A cuánto asciende el valor estimado de σ²? ¿En qué unidades se encuentra establecida esta estimación?
summary(modelo1)$sigma**2
## [1] 36.53929
\[σ² = CME\] donde: \(CME = \frac{SCE}{n-2}\) y \(SCE =\displaystyle\sum_{i=1}^{n}(y_i-\hat{y}_i)^2\)
- \(Variable\hspace{0.1cm}dependiente:\) = gastos(dolares).
- \(σ²\) = ($²)
11. Se desea estudiar la influencia lineal de las variables sobre los gastos. Presente el modelo de regresión lineal múltiple estimado.
\[Y_i = \beta_0+\beta_1X_{1,i}+...+\beta_pX_{p,i} + \epsilon_i \qquad i=1,...,n\]
- \(Y_i\) : es el monto mensual de la i-ésima persona.
- \(X_{1,i}\) : es la cantidad de años de la i-ésima persona.
- \(X_{2,i}\) : es el indice de masa corporal de la i-ésima persona.
- \(X_{3,i}\) : es el numero de hijos de la i-esima persona.
modelo2 <- lm(gastos ~ ., data = corr1)
modelo2
##
## Call:
## lm(formula = gastos ~ ., data = corr1)
##
## Coefficients:
## (Intercept) edad imc nhijos
## -4.3869 0.2704 0.2500 0.3057
library(GGally)
corr1 %>% ggpairs(title = "Regresión lineal múltiple")
12. Interprete los coeficientes de regresión estimados.
library(broom)
modelo2 %>% tidy()
## # A tibble: 4 × 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) -4.39 2.47 -1.77 7.77e- 2
## 2 edad 0.270 0.0290 9.33 2.34e-17
## 3 imc 0.250 0.0743 3.36 9.21e- 4
## 4 nhijos 0.306 0.339 0.901 3.69e- 1
Interpretación:
- \(β_0\) no tiene una interpretación.
- \(β_1\) por cada incremento en una unidad en la edad, el monto promedio mensual de paga aumentara en 0.2704 dolares, manteniendo constantes las demás variables.
- \(β_2\) por cada punto adicional del indice de masa corporal, el monto promedio mensual aumentara en 0.24998 dolares, manteniendo constantes las demás variables.
- \(β_3\) por cada hijo adicional, el monto promedio mensual aumentara en 0.30572 dolares, manteniendo constantes las demás variables.
13. ¿Qué sucedió con el valor del coeficiente de regresión de la edad cuando se trabajó con un modelo de regresión lineal múltiple en vez de uno simple?
sim <- modelo1 %>% tidy()
sim[2,c(1,2)]
## # A tibble: 1 × 2
## term estimate
## <chr> <dbl>
## 1 edad 0.281
mul <- modelo2 %>% tidy()
mul[2,c(1,2)]
## # A tibble: 1 × 2
## term estimate
## <chr> <dbl>
## 1 edad 0.270
El valor del coeficiente de regresión de lineal se redujo de 0.281 a 0.270.
14. Presente el análisis de varianza, redacte sus conclusiones con un nivel de significancia del 5%.
library(broom)
lm(gastos~ ., data = seguro1) -> modelo_variables
modelo_variables %>% summary()
##
## Call:
## lm(formula = gastos ~ ., data = seguro1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13.8275 -3.9415 -0.2676 4.2364 12.4101
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.19529 2.49684 -2.081 0.038770 *
## edad 0.26917 0.02843 9.468 < 2e-16 ***
## sexomasculino -0.08941 0.82943 -0.108 0.914265
## imc 0.25387 0.07271 3.492 0.000594 ***
## nhijos 0.34643 0.33221 1.043 0.298342
## fumasi 3.27114 0.98776 3.312 0.001106 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.76 on 194 degrees of freedom
## Multiple R-squared: 0.3892, Adjusted R-squared: 0.3735
## F-statistic: 24.73 on 5 and 194 DF, p-value: < 2.2e-16
\(H_0:\) No hay diferencia significativa en las medias \(H_1:\) Al menos una media es diferente
- Desicion: Con un nivel de significancia del 5%, en el caso de las variables cualitativas, concluimos que debemos rechazar la hipótesis nula, dado que tiene un pvalor menor a 0.05
- Conclusion: con un nivel de confianza del 95% , existe suficiente evidencia estadistica para afirmar que hay al menos una media diferente.
15. Plantee y desarrolle una prueba de hipótesis para una de las variables predictoras cuantitativas.
cor.test(gastos,imc,method="pearson",alternative="two.sided",conf.level=0.95)
##
## Pearson's product-moment correlation
##
## data: gastos and imc
## t = 3.6411, df = 198, p-value = 0.0003465
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.1157954 0.3761783
## sample estimates:
## cor
## 0.2505118
- Conclusion: Con un nivel de significancia del \(5%\), si al realizar la hipotesis nula se obtiene \(P_{valor} < α\), se rechaza la prueba de hipotesis.
16. Plantee y desarrolle una prueba de hipótesis para una de las variables predictoras cualitativas.
seguro_modificado <- seguro1 %>% mutate(sexo=if_else(sexo=="femenino", 0, 1),fuma=if_else(fuma=="no", 0, 1))
cor.test(seguro_modificado$gastos,seguro_modificado$sexo,method="pearson",alternative="two.sided",conf.level=0.95)
##
## Pearson's product-moment correlation
##
## data: seguro_modificado$gastos and seguro_modificado$sexo
## t = -0.51344, df = 198, p-value = 0.6082
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1743237 0.1027965
## sample estimates:
## cor
## -0.03646462
- Conclusion: Con un nivel de significancia del \(5%\), si al realizar la hipotesis nula se obtiene \(P_{valor} > α\), se aprueba la prueba de hipotesis.
17. Obtenga e interprete el coeficiente de determinación, así como el de determinación ajustado.
Coeficiente de determinación
summary(modelo2)$r.squared
## [1] 0.3541869
El 35.41% de la variabilidad de los gastos es explicada por las variables predictoras.
Coeficiente de determinacion ajustado
summary(modelo2)$adj.r.squared
## [1] 0.344302
El 34.43% de la variabilidad de los gastos es explicada por las variables predictora.
18. Plantee una situación donde el punto evaluado para una predicción NO corresponda a una extrapolación
range(seguro_modificado$edad, na.rm = T )
## [1] 18 64
range(seguro_modificado$sexo, na.rm = T )
## [1] 0 1
range(seguro_modificado$imc, na.rm = T )
## [1] 15.96 49.06
range(seguro_modificado$nhijos, na.rm = T )
## [1] 0 5
range(seguro_modificado$fuma, na.rm = T )
## [1] 0 1
model.matrix(gastos~edad+sexo+imc+nhijos+fuma,data=seguro_modificado ) -> X
x = c(1,30,0,40,4,1)
H = X%*%solve(t(X)%*%X)%*%t(X)
h = H |> diag() |> max()
t(x)%*%solve(t(X)%*%X)%*%x
## [,1]
## [1,] 0.07528721
t(x)%*%solve(t(X)%*%X)%*%x > h
## [,1]
## [1,] FALSE
19. Plantee una situación donde el punto evaluado para una predicción SÍ corresponda a una extrapolación
x = c(1,75,0,3,7,1)
H = X%*%solve(t(X)%*%X)%*%t(X)
h = H |> diag() |> max()
t(x)%*%solve(t(X)%*%X)%*%x
## [,1]
## [1,] 0.3189573
t(x)%*%solve(t(X)%*%X)%*%x > h
## [,1]
## [1,] TRUE
Integrantes:
- Alvarado Llanos, Isabel
- Batalla Flores, Stephano
- Hurtado Quispe, Jose
- Molina Rodriguez, Juan