library(readxl)
bmi <- read_excel("BASE DE DATOS/bmi.xlsx")

MODELO AJUSTADO DE BMI

Planteaniebto de un modelo de regresion multiple

se ocupara en nuestro modelo las variables explicativas de colestero, glucosa y edad, para determinar el indice de masa corporal

modelo <- lm(BMI ~ Age + Cholesterol + Glucose, data = bmi)
summary(modelo)
## 
## Call:
## lm(formula = BMI ~ Age + Cholesterol + Glucose, data = bmi)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -10.6255  -4.5473  -0.8179   3.7439  18.8116 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 16.81510    5.07180   3.315  0.00164 **
## Age          0.04103    0.05631   0.729  0.46939   
## Cholesterol  0.04819    0.02487   1.938  0.05791 . 
## Glucose      0.01974    0.01493   1.322  0.19188   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.34 on 54 degrees of freedom
## Multiple R-squared:  0.127,  Adjusted R-squared:  0.07855 
## F-statistic:  2.62 on 3 and 54 DF,  p-value: 0.06008

backward selection

Este modelo de regresion tiene como objetivo el de encontrar un modelo de mejor ajuste pero con un numero posible de variables, explicativas, eliminando las menos significantes en este caso se selecciono las variables colesterol y glucosa

step(modelo, direction = "backward", data = bmi)
## Start:  AIC=218.09
## BMI ~ Age + Cholesterol + Glucose
## 
##               Df Sum of Sq    RSS    AIC
## - Age          1    21.337 2191.7 216.66
## - Glucose      1    70.197 2240.6 217.93
## <none>                     2170.3 218.09
## - Cholesterol  1   150.893 2321.2 219.99
## 
## Step:  AIC=216.66
## BMI ~ Cholesterol + Glucose
## 
##               Df Sum of Sq    RSS    AIC
## <none>                     2191.7 216.66
## - Glucose      1    98.063 2289.8 217.19
## - Cholesterol  1   172.920 2364.6 219.06
## 
## Call:
## lm(formula = BMI ~ Cholesterol + Glucose, data = bmi)
## 
## Coefficients:
## (Intercept)  Cholesterol      Glucose  
##    17.95236      0.05098      0.02254
backward <- lm(formula = BMI ~ Cholesterol + Glucose, 
               data = bmi)
summary(backward)
## 
## Call:
## lm(formula = BMI ~ Cholesterol + Glucose, data = bmi)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -10.125  -4.748  -1.134   3.321  18.832 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 17.95236    4.80502   3.736 0.000446 ***
## Cholesterol  0.05098    0.02447   2.083 0.041902 *  
## Glucose      0.02254    0.01437   1.569 0.122449    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.313 on 55 degrees of freedom
## Multiple R-squared:  0.1185, Adjusted R-squared:  0.08641 
## F-statistic: 3.696 on 2 and 55 DF,  p-value: 0.0312

como se puede observar aun cuenta con un coeficiente de determinacion muy por debajo de la unidad, por lo que una de esta variables aun no tiene significancia, aun cuando quitamos la variable edad, que era la que no tenia significancia, por lo que se hara un modelo log para poder ajustarlo de mejor manera

modelo_logaritmico <- lm(BMI ~ log(Cholesterol) + log(Glucose), data = bmi)

summary(modelo_logaritmico)
## 
## Call:
## lm(formula = BMI ~ log(Cholesterol) + log(Glucose), data = bmi)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -10.028  -4.853  -1.246   3.575  18.552 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)  
## (Intercept)       -35.568     25.124  -1.416   0.1625  
## log(Cholesterol)    9.231      4.629   1.994   0.0511 .
## log(Glucose)        3.744      2.437   1.536   0.1303  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.311 on 55 degrees of freedom
## Multiple R-squared:  0.1188, Adjusted R-squared:  0.08676 
## F-statistic: 3.707 on 2 and 55 DF,  p-value: 0.03087

Como nuestro coeficiente de determinacion sigue siendo bajo, lo que ahora se hara es hacer el modelo a un polinomio, para poder ajustarlo mejor

modelo_polinomio <- lm(BMI ~ Cholesterol + Glucose - Glucose*Glucose, data = bmi)
summary(modelo_polinomio)
## 
## Call:
## lm(formula = BMI ~ Cholesterol + Glucose - Glucose * Glucose, 
##     data = bmi)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -10.828  -4.863  -1.074   3.845  18.597 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 20.01157    4.68214   4.274 7.53e-05 ***
## Cholesterol  0.05415    0.02470   2.192   0.0326 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.394 on 56 degrees of freedom
## Multiple R-squared:  0.07902,    Adjusted R-squared:  0.06257 
## F-statistic: 4.805 on 1 and 56 DF,  p-value: 0.03255

como se puede ver en las siguientes tablas, observamos que aunque la variable de glucosa tiene una distribucion de un polinomio, lo que hace que tenga un mejor ajuste, esto porque que la variable glucosa tiene una distrubucion casi cuadrada

scatterplotMatrix(bmi, ~ Age + Cholesterol + Glucose,
                  smooth = list(lty = 2), id = TRUE,
                  regLine = list(lty = 1, col = "red"),
                  col = "blue")
## Warning in applyDefaults(legend, defaults = list(coords = NULL, pt.cex = cex, :
## unnamed legend arguments, will be ignored