Including Plots

You can also embed plots, for example:

##   sexo edad colesterol
## 1    F   49        216
## 2    F   49        195
## 3    F   44        234
## 4    M   35        230
## 5    F   43        190
## 6    M   30        205

Evaluación de la relación entre la variable colesterol y edad Evaluación de la relación entre la variable colesterol y sexo

#Evaluación gráfica 
summary(COL)
##      sexo                edad        colesterol 
##  Length:200         Min.   :20.0   Min.   :180  
##  Class :character   1st Qu.:35.0   1st Qu.:200  
##  Mode  :character   Median :45.0   Median :229  
##                     Mean   :45.4   Mean   :228  
##                     3rd Qu.:57.2   3rd Qu.:253  
##                     Max.   :70.0   Max.   :300
boxplot(colesterol ~ sexo, data = COL,
        ylab = "Colesterol",
        xlab = "Sexo")

plot(COL$edad, COL$colesterol,
     xlab = "Edad",
     ylab = "Colesterol")
abline(lm(colesterol ~ edad, data = COL), col = "red", lwd = 2)

modelo <- lm(colesterol ~ edad + sexo, data = COL)
summary(modelo)
## 
## Call:
## lm(formula = colesterol ~ edad + sexo, data = COL)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -46.32 -11.07   1.91  11.87  43.50 
## 
## Coefficients:
##             Estimate Std. Error t value            Pr(>|t|)    
## (Intercept) 128.2387     4.1686    30.8 <0.0000000000000002 ***
## edad          1.9144     0.0858    22.3 <0.0000000000000002 ***
## sexoM        27.2534     2.3913    11.4 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 16.9 on 197 degrees of freedom
## Multiple R-squared:  0.771,  Adjusted R-squared:  0.768 
## F-statistic:  331 on 2 and 197 DF,  p-value: <0.0000000000000002
tab_model(modelo)
  colesterol
Predictors Estimates CI p
(Intercept) 128.24 120.02 – 136.46 <0.001
edad 1.91 1.75 – 2.08 <0.001
sexo [M] 27.25 22.54 – 31.97 <0.001
Observations 200
R2 / R2 adjusted 0.771 / 0.768

Interpretación: Intercept 128.2: es el valor del colesterol cuando la edad es 0 y el sexo es femenino edad: por cada año que aumenta la edad, el colesterol aumenta en promedio 1.91 puntos (1.75 a 2.08) independientemente del sexo El sexo masculino tiene en promedio 27 mgdl (22.25-31.97) de colesterol más que el femenino independientemente de la edad

Evaluación de supuestos

#Normalidad
#Linealidad
#Homocedasticidad

#Generacion de valores predichos
predichos <- fitted.values(modelo)

#generación de residuos crudos y estandarizados
res <- residuals(modelo)
#generación de residuos estandarizados:
standres <-rstandard(modelo)

#gráfico de linealidad

plot(y=COL$colesterol, x= COL$edad)
abline(modelo)
## Warning in abline(modelo): only using the first two of 3 regression
## coefficients

plot(y=modelo$residuals,x=modelo$fitted.values)
abline(h=0)

#evaluacion de normalidad

densityplot(modelo$residuals)

hist(modelo$residuals)

boxplot(modelo$residuals)

qqnorm(standres)
qqline(standres, col = "red", lwd = 2)

shapiro.test(modelo$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo$residuals
## W = 1, p-value = 0.1
describe(standres)
##    vars   n mean sd median trimmed  mad   min  max range  skew kurtosis   se
## X1    1 200    0  1   0.11    0.02 0.98 -2.76 2.61  5.37 -0.19    -0.12 0.07
#homocedasticidad

plot(y=modelo$residuals, x=modelo$fitted.values)
abline(h=0)

bptest(modelo$residuals ~ modelo$fitted.values, data=COL)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo$residuals ~ modelo$fitted.values
## BP = 1, df = 1, p-value = 0.3

El test de Breusch-Pagan evalúa heterocedasticidad:

H0: varianza constante (bien 👍) H1: varianza no constante (problema ⚠️) p > 0.05 → no evidencia de heterocedasticidad p < 0.05 → hay heterocedasticidad

#identificación de outliers

standres <-rstandard(modelo)
predichos <- modelo$fitted.values
plot(y=standres, x=predichos)
abline(h = c(-3, 3), col = "red", lwd = 2, lty = 2)
abline(h=0)

standres[standres > 3 | standres < -3]
## named numeric(0)
#identificacion de valores influyentes
leverage <- as.data.frame(hatvalues(modelo))
cooksd <- cooks.distance(modelo)
cooksd[cooksd>(4/150)]#n es el tamaño muestral
##     23    134    144    145 
## 0.0470 0.0323 0.0527 0.0296
#dubin watson independeencia

dwtest(modelo)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 2, p-value = 0.8
## alternative hypothesis: true autocorrelation is greater than 0