202410 CDT Trabajo Final Grupo_8

Author

Hector Sanjuan, Miguel Lugo, Mateo Chang

install.packages("readxl") 
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
install.packages("tidyverse") 
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
install.packages("janitor") 
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
install.packages("tibble") 
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
install.packages("magrittr") 
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
install.packages("Amelia") 
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
install.packages("dplyr") 
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
install.packages("mice") 
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
install.packages("ggplot2")
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
library(readxl) 
library(tidyverse) 
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(janitor)

Attaching package: 'janitor'

The following objects are masked from 'package:stats':

    chisq.test, fisher.test
library(tibble)
library(magrittr)

Attaching package: 'magrittr'

The following object is masked from 'package:purrr':

    set_names

The following object is masked from 'package:tidyr':

    extract
library(Amelia) 
Loading required package: Rcpp
## 
## Amelia II: Multiple Imputation
## (Version 1.8.2, built: 2024-04-10)
## Copyright (C) 2005-2024 James Honaker, Gary King and Matthew Blackwell
## Refer to http://gking.harvard.edu/amelia/ for more information
## 
library(dplyr)
library(mice) 
Warning in check_dep_version(): ABI version mismatch: 
lme4 was built with Matrix ABI version 0
Current Matrix ABI version is 1
Please re-install lme4 from source or restore original 'Matrix' package

Attaching package: 'mice'

The following object is masked from 'package:stats':

    filter

The following objects are masked from 'package:base':

    cbind, rbind
library(ggplot2)

Pruebas de normalidad

tabla<-read_excel("Datos_Final.xlsx")


tabla_limpia<-clean_names(tabla)
tabla_limpia
# A tibble: 845 × 17
      id  edad genero    nivel_educativo estado_civil ocupacion  ingresos estres
   <dbl> <dbl> <chr>     <chr>           <chr>        <chr>         <dbl>  <dbl>
 1     1    56 Masculino Primaria        Casado       Empleado       2366      4
 2     2    69 Otro      Universitario   Soltero      Desemplea…     2496      9
 3     3    46 Masculino Posgrado        Viudo        Desemplea…     1409     10
 4     4    32 Masculino Secundaria      Soltero      Estudiante     4805      3
 5     5    60 Femenino  Universitario   Casado       Empleado       3689      8
 6     6    25 <NA>      Posgrado        Viudo        Autónomo       1270      1
 7     7    38 Masculino Universitario   Soltero      Desemplea…     3655      9
 8     8    56 Femenino  Secundaria      Divorciado   Estudiante     3001      9
 9     9    36 <NA>      Posgrado        Viudo        Empleado       3214     10
10    10    40 Otro      Universitario   Viudo        Estudiante     4085      2
# ℹ 835 more rows
# ℹ 9 more variables: ansiedad <dbl>, depresion <dbl>,
#   satisfaccion_con_la_vida <dbl>, soporte_social <dbl>, sueno <dbl>,
#   actividad_fisica <dbl>, consumo_de_agua <dbl>, felicidad <dbl>,
#   estatura <dbl>
names(tabla_limpia)
 [1] "id"                       "edad"                    
 [3] "genero"                   "nivel_educativo"         
 [5] "estado_civil"             "ocupacion"               
 [7] "ingresos"                 "estres"                  
 [9] "ansiedad"                 "depresion"               
[11] "satisfaccion_con_la_vida" "soporte_social"          
[13] "sueno"                    "actividad_fisica"        
[15] "consumo_de_agua"          "felicidad"               
[17] "estatura"                
##Variable edad

hist(na.omit(tabla_limpia$edad), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$edad))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$edad)
W = 0.95735, p-value = 4.594e-14
##Variable ingresos

hist(na.omit(tabla_limpia$ingresos), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$ingresos))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$ingresos)
W = 0.95471, p-value = 1.49e-14
##Variable Estres

hist(na.omit(tabla_limpia$estres), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$estres))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$estres)
W = 0.93429, p-value < 2.2e-16
##Variable ansiedad
hist(na.omit(tabla_limpia$ansiedad), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$ansiedad))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$ansiedad)
W = 0.94249, p-value < 2.2e-16
##Variable depresion
hist(na.omit(tabla_limpia$depresion), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$depresion))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$depresion)
W = 0.92623, p-value < 2.2e-16
##Variable satisfaccion con la vida

hist(na.omit(tabla_limpia$satisfaccion_con_la_vida), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$satisfaccion_con_la_vida))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$satisfaccion_con_la_vida)
W = 0.93473, p-value < 2.2e-16
##Variable soporte social

hist(na.omit(tabla_limpia$soporte_social), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$soporte_social))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$soporte_social)
W = 0.93417, p-value < 2.2e-16
##Variable sueño

hist(na.omit(tabla_limpia$sueno), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$sueno))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$sueno)
W = 0.93242, p-value < 2.2e-16
##Variable Actividad fisica

hist(na.omit(tabla_limpia$actividad_fisica), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$actividad_fisica))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$actividad_fisica)
W = 0.93786, p-value < 2.2e-16
##Variable Consumo de agua

hist(na.omit(tabla_limpia$consumo_de_agua), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$consumo_de_agua))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$consumo_de_agua)
W = 0.92726, p-value < 2.2e-16
##Variable Felicidad

hist(na.omit(tabla_limpia$felicidad), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$felicidad))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$felicidad)
W = 0.93596, p-value < 2.2e-16
##Variable estatura
hist(na.omit(tabla_limpia$estatura), col="white")

sha<-shapiro.test(na.omit(tabla_limpia$estatura))
sha

    Shapiro-Wilk normality test

data:  na.omit(tabla_limpia$estatura)
W = 0.9481, p-value = 1.073e-15

Limpieza de la tabla y resumen estadístico

##nivel educativo
moda1 <- as.character(names(which.max(table(tabla_limpia$nivel_educativo))))


tabla_limpia$nivel_educativo[is.na(tabla_limpia$nivel_educativo)] <-moda1

##estado civil

moda4 <- as.character(names(which.max(table(tabla_limpia$estado_civil))))


tabla_limpia$estado_civil[is.na(tabla_limpia$estado_civil)] <-moda4

##ocupacion
moda2 <- as.character(names(which.max(table(tabla_limpia$ocupacion))))


tabla_limpia$ocupacion[is.na(tabla_limpia$ocupacion)] <-moda2



##genero

moda3 <- as.character(names(which.max(table(tabla_limpia$genero))))


tabla_limpia$genero[is.na(tabla_limpia$genero)] <-moda3


##edad

mediana_edad <- median(tabla_limpia$edad, na.rm = TRUE)


tabla_limpia$edad[is.na(tabla_limpia$edad)] <-mediana_edad


##ingresos

mediana_ingresos <- median(tabla_limpia$ingresos, na.rm = TRUE)


tabla_limpia$ingresos[is.na(tabla_limpia$ingresos)] <-mediana_ingresos


##estatura

mediana_estatura <- median(tabla_limpia$estatura, na.rm = TRUE)


tabla_limpia$estatura[is.na(tabla_limpia$estatura)]<-mediana_estatura

##estres

mediana_estres <- median(tabla_limpia$estres, na.rm = TRUE)


tabla_limpia$estres[is.na(tabla_limpia$estres)] <-mediana_estres

##Satisfaccion con la vida

mediana_satisfaccion <- median(tabla_limpia$satisfaccion_con_la_vida, na.rm = TRUE)


tabla_limpia$satisfaccion_con_la_vida[is.na(tabla_limpia$satisfaccion_con_la_vida)] <-mediana_satisfaccion


##Ansiedad
mediana_ansiedad <- median(tabla_limpia$ansiedad, na.rm = TRUE)

tabla_limpia$ansiedad[is.na(tabla_limpia$ansiedad)] <-mediana_ansiedad


##Depresion
mediana_depresion <- median(tabla_limpia$depresion, na.rm = TRUE)

tabla_limpia$depresion[is.na(tabla_limpia$depresion)] <-mediana_depresion


##Soporte social
mediana_soporte_social <- median(tabla_limpia$soporte_social, na.rm = TRUE)

tabla_limpia$soporte_social[is.na(tabla_limpia$soporte_social)] <-mediana_soporte_social


##Sueño
mediana_sueno <- median(tabla_limpia$sueno, na.rm = TRUE)

tabla_limpia$sueno[is.na(tabla_limpia$sueno)] <-mediana_sueno


##Actividad Fisica
mediana_actividad <- median(tabla_limpia$actividad_fisica, na.rm = TRUE)

tabla_limpia$actividad_fisica[is.na(tabla_limpia$actividad_fisica)] <-mediana_actividad


##Consumo de agua
mediana_consumo <- median(tabla_limpia$consumo_de_agua, na.rm = TRUE)

tabla_limpia$consumo_de_agua[is.na(tabla_limpia$consumo_de_agua)] <-mediana_consumo

##Felicidad
mediana_felicidad <- median(tabla_limpia$felicidad, na.rm = TRUE)

tabla_limpia$felicidad[is.na(tabla_limpia$felicidad)] <-mediana_felicidad
tabla_limpia
# A tibble: 845 × 17
      id  edad genero    nivel_educativo estado_civil ocupacion  ingresos estres
   <dbl> <dbl> <chr>     <chr>           <chr>        <chr>         <dbl>  <dbl>
 1     1    56 Masculino Primaria        Casado       Empleado       2366      4
 2     2    69 Otro      Universitario   Soltero      Desemplea…     2496      9
 3     3    46 Masculino Posgrado        Viudo        Desemplea…     1409     10
 4     4    32 Masculino Secundaria      Soltero      Estudiante     4805      3
 5     5    60 Femenino  Universitario   Casado       Empleado       3689      8
 6     6    25 Femenino  Posgrado        Viudo        Autónomo       1270      1
 7     7    38 Masculino Universitario   Soltero      Desemplea…     3655      9
 8     8    56 Femenino  Secundaria      Divorciado   Estudiante     3001      9
 9     9    36 Femenino  Posgrado        Viudo        Empleado       3214     10
10    10    40 Otro      Universitario   Viudo        Estudiante     4085      2
# ℹ 835 more rows
# ℹ 9 more variables: ansiedad <dbl>, depresion <dbl>,
#   satisfaccion_con_la_vida <dbl>, soporte_social <dbl>, sueno <dbl>,
#   actividad_fisica <dbl>, consumo_de_agua <dbl>, felicidad <dbl>,
#   estatura <dbl>
##Resumen estadistico
resumen_basico <- summary(tabla_limpia)
print(resumen_basico)
       id           edad          genero          nivel_educativo   
 Min.   :  1   Min.   :18.00   Length:845         Length:845        
 1st Qu.:212   1st Qu.:33.00   Class :character   Class :character  
 Median :423   Median :45.00   Mode  :character   Mode  :character  
 Mean   :423   Mean   :44.08                                        
 3rd Qu.:634   3rd Qu.:55.00                                        
 Max.   :845   Max.   :69.00                                        
 estado_civil        ocupacion            ingresos        estres      
 Length:845         Length:845         Min.   : 506   Min.   : 1.000  
 Class :character   Class :character   1st Qu.:1939   1st Qu.: 3.000  
 Mode  :character   Mode  :character   Median :2968   Median : 6.000  
                                       Mean   :2873   Mean   : 5.615  
                                       3rd Qu.:3861   3rd Qu.: 8.000  
                                       Max.   :4998   Max.   :10.000  
    ansiedad        depresion      satisfaccion_con_la_vida soporte_social  
 Min.   : 1.000   Min.   : 1.000   Min.   : 1.000           Min.   : 1.000  
 1st Qu.: 3.000   1st Qu.: 3.000   1st Qu.: 3.000           1st Qu.: 3.000  
 Median : 6.000   Median : 6.000   Median : 5.000           Median : 6.000  
 Mean   : 5.595   Mean   : 5.634   Mean   : 5.441           Mean   : 5.593  
 3rd Qu.: 8.000   3rd Qu.: 8.000   3rd Qu.: 8.000           3rd Qu.: 8.000  
 Max.   :10.000   Max.   :10.000   Max.   :10.000           Max.   :10.000  
     sueno        actividad_fisica consumo_de_agua    felicidad     
 Min.   : 1.000   Min.   : 1.000   Min.   : 1.000   Min.   : 1.000  
 1st Qu.: 3.000   1st Qu.: 3.000   1st Qu.: 3.000   1st Qu.: 3.000  
 Median : 5.000   Median : 5.000   Median : 6.000   Median : 6.000  
 Mean   : 5.471   Mean   : 5.391   Mean   : 5.688   Mean   : 5.593  
 3rd Qu.: 8.000   3rd Qu.: 8.000   3rd Qu.: 8.000   3rd Qu.: 8.000  
 Max.   :10.000   Max.   :10.000   Max.   :10.000   Max.   :10.000  
    estatura  
 Min.   :150  
 1st Qu.:163  
 Median :176  
 Mean   :175  
 3rd Qu.:186  
 Max.   :199  



## Prueba chi cuadrado entre nivel de educacion y ocupacion(independencia)

tabla_contingencia <- table(tabla_limpia$nivel_educativo, tabla_limpia$ocupacion)
tabla_contingencia
               
                Autónomo Desempleado Empleado Estudiante
  Posgrado            34          51       33         68
  Primaria            70          51       63        103
  Secundaria          43          41       50         65
  Universitario       36          41       45         51
resultado_chi2<-chisq.test(tabla_contingencia)
resultado_chi2

    Pearson's Chi-squared test

data:  tabla_contingencia
X-squared = 12.535, df = 9, p-value = 0.1848
df_tabla <- as.data.frame(tabla_contingencia)


ggplot(df_tabla, aes(x = Var1, y = Freq, fill = Var2)) +
  geom_bar(stat = "identity", position = "stack") +
  labs(x = "Variable 1", y = "Frecuencia", fill = "Variable 2") +
  ggtitle("Gráfico de barras apiladas")

Prueba chi cuadrado entre genero y ocupacion(homogeneidad)

tabla_contingencia <- table(tabla_limpia$genero, tabla_limpia$ocupacion)
tabla_contingencia
           
            Autónomo Desempleado Empleado Estudiante
  Femenino        80          52       78        134
  Masculino       49          74       61         73
  Otro            54          58       52         80
resultado_chi2<-chisq.test(tabla_contingencia)
resultado_chi2

    Pearson's Chi-squared test

data:  tabla_contingencia
X-squared = 19.779, df = 6, p-value = 0.003032
# Convertir la tabla de contingencia en un data frame
df_tabla <- as.data.frame(tabla_contingencia)

# Crear el gráfico de barras apiladas
ggplot(df_tabla, aes(x = Var1, y = Freq, fill = Var2)) +
  geom_bar(stat = "identity", position = "stack") +
  labs(x = "Variable 1", y = "Frecuencia", fill = "Variable 2") +
  ggtitle("Gráfico de barras apiladas")

Correlacion y regresion lineal (edad e ingresos , satisfaccion con la vida y estres respectivamente)

par(mar = c(2, 2, 2, 0) + 0.1)


correlacion <- cor.test(tabla_limpia$edad, tabla_limpia$ingresos, method = "spearman")
Warning in cor.test.default(tabla_limpia$edad, tabla_limpia$ingresos, method =
"spearman"): Cannot compute exact p-value with ties
print(correlacion)

    Spearman's rank correlation rho

data:  tabla_limpia$edad and tabla_limpia$ingresos
S = 97235295, p-value = 0.3373
alternative hypothesis: true rho is not equal to 0
sample estimates:
       rho 
0.03304633 
plot(tabla_limpia$edad, tabla_limpia$ingresos, 
     main = "Relación entre Edad e Ingresos",
     xlab = "Edad", ylab = "Ingresos", 
     pch = 19, col = "blue")


model <- lm(ingresos ~ edad, data = tabla_limpia)
abline(model, col = "red")

modelo_regresion <- lm(estres ~ satisfaccion_con_la_vida, data = tabla_limpia)


summary(modelo_regresion)

Call:
lm(formula = estres ~ satisfaccion_con_la_vida, data = tabla_limpia)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.6483 -2.5906  0.3734  2.3734  4.4167 

Coefficients:
                         Estimate Std. Error t value Pr(>|t|)    
(Intercept)              5.576121   0.210671  26.468   <2e-16 ***
satisfaccion_con_la_vida 0.007216   0.034604   0.209    0.835    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.747 on 843 degrees of freedom
Multiple R-squared:  5.158e-05, Adjusted R-squared:  -0.001135 
F-statistic: 0.04348 on 1 and 843 DF,  p-value: 0.8349
ggplot(tabla_limpia, aes(x = estres, y = satisfaccion_con_la_vida)) +
  geom_point() +
  geom_smooth(method = "lm", col = "blue") +
  labs(title = "Gráfico de dispersión con línea de regresión",
       x = "Estres",
       y = "Satisfacción con la vida")
`geom_smooth()` using formula = 'y ~ x'

Anova genero e ingresos(igualdad de medias)

anova <- aov(ingresos ~ genero, data = tabla_limpia)
anova
Call:
   aov(formula = ingresos ~ genero, data = tabla_limpia)

Terms:
                    genero  Residuals
Sum of Squares     1383474 1207815135
Deg. of Freedom          2        842

Residual standard error: 1197.689
Estimated effects may be unbalanced
summary(anova)
             Df    Sum Sq Mean Sq F value Pr(>F)
genero        2 1.383e+06  691737   0.482  0.618
Residuals   842 1.208e+09 1434460               
ggplot(tabla_limpia, aes(x = genero, y = ingresos, fill = genero)) +
  geom_boxplot() +
  labs(title = "Ingresos por género",
       x = "Género",
       y = "Ingresos") +
  theme_minimal()

Anova estado civil y depresion

anova <- aov(depresion ~ estado_civil, data = tabla_limpia)
anova
Call:
   aov(formula = depresion ~ estado_civil, data = tabla_limpia)

Terms:
                estado_civil Residuals
Sum of Squares        26.561  6671.444
Deg. of Freedom            3       841

Residual standard error: 2.816514
Estimated effects may be unbalanced
summary(anova)
              Df Sum Sq Mean Sq F value Pr(>F)
estado_civil   3     27   8.854   1.116  0.342
Residuals    841   6671   7.933               
ggplot(tabla_limpia, aes(x = estado_civil, y = depresion, fill = estado_civil)) +
  geom_boxplot() +
  labs(title = "Depresión por estado civil",
       x = "Estado civil",
       y = "Depresión") +
  theme_minimal()