202410 CDT Trabajo Final Grupo 7

Author

Alejandra Cantillo, Alejandra Colpas, Sofia Lamadrid & Juan David Restrepo

Informe final sobre las influencias psicosociales y del estilo de vida en el bienestar de los adultos urbanos a partir de diferentes pruebas de hipótesis.

El presente informe parte del contexto de una investigación sobre las influencias psicosociales y del estilo de vida en el bienestar de los adultos urbanos. En ese sentido, se condujo una investigación multidisciplinaria acerca de la forma en que los factores psicosociales y de estilo de vida impactan en el bienestar emocional y físico de los adultos que viven en ambientes urbanos. La finalidad de la investigación consiste en posibilitar que los investigadores y los profesionales de la salud puedan explorar las complejas interacciones entre el entorno urbano y el bienestar individual.

Prueba de normalidad para cada variable

La prueba de normalidad Anderson Darling se utilizará para determinar si la distribución de los datos es normal o no.

library(readxl)  
library(nortest)
library(dplyr)

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

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
data <- read_excel("Datos_Final.xlsx")

results <- list()


for (col in colnames(data)) {
  if (is.numeric(data[[col]])) {
    ad_test <- ad.test(data[[col]])
    results[[col]] <- ad_test
  }
}


results
$ID

    Anderson-Darling normality test

data:  data[[col]]
A = 9.0769, p-value < 2.2e-16


$Edad

    Anderson-Darling normality test

data:  data[[col]]
A = 7.2556, p-value < 2.2e-16


$Ingresos

    Anderson-Darling normality test

data:  data[[col]]
A = 8.9002, p-value < 2.2e-16


$Estrés

    Anderson-Darling normality test

data:  data[[col]]
A = 13.14, p-value < 2.2e-16


$Ansiedad

    Anderson-Darling normality test

data:  data[[col]]
A = 11.295, p-value < 2.2e-16


$Depresión

    Anderson-Darling normality test

data:  data[[col]]
A = 15.295, p-value < 2.2e-16


$`Satisfacción con la vida`

    Anderson-Darling normality test

data:  data[[col]]
A = 13.126, p-value < 2.2e-16


$`Soporte Social`

    Anderson-Darling normality test

data:  data[[col]]
A = 13.528, p-value < 2.2e-16


$Sueño

    Anderson-Darling normality test

data:  data[[col]]
A = 13.975, p-value < 2.2e-16


$`Actividad Física`

    Anderson-Darling normality test

data:  data[[col]]
A = 12.666, p-value < 2.2e-16


$`Consumo de Agua`

    Anderson-Darling normality test

data:  data[[col]]
A = 15.635, p-value < 2.2e-16


$Felicidad

    Anderson-Darling normality test

data:  data[[col]]
A = 12.362, p-value < 2.2e-16


$Estatura

    Anderson-Darling normality test

data:  data[[col]]
A = 10.452, p-value < 2.2e-16

Conclusión: Dado que cada uno de los p valores fue menor que el nivel de significancia 0.05, es corrector afirmar que ningún dato sigue una distribución normal.

Pruebas de Hipótesis

Ahora bien, partiendo de la base de datos obtenida en esta investigación, se aplicarán cada una de las siguientes pruebas de hipótesis:

Chi Cuadrado de Homogeneidad

La prueba de homogeneidad chi-cuadrado es una técnica utilizada para determinar si dos o más muestras independientes proceden de poblaciones con la misma distribución de frecuencias para una variable categórica. En este caso, se utiliza un nivel de significación del 5% (𝛼=0,05). El contexto de aplicación de la prueba se detalla a continuación:

1. Variables

  1. Género: se refiere al género de los participantes, que puede ser “Femenino”, “Masculino” u “Otro.”

  2. Estado civil: se refiere al estado civil de los participantes, que puede ser “Casado”, “Soltero”, “Divorciado” o “Viudo.”

2. Hipótesis

Hipótesis Nula (H0): La distribución del estado civil es la misma para los diferentes géneros.

Hipótesis Alternativa (H1): La distribución del estado civil difiere entre los géneros.

library(readxl)

datos<-read_excel("Datos_Final.xlsx")
datos_limpios<-na.omit(datos)

df<-data.frame(datos_limpios$Género, datos_limpios$`Estado Civil`)

library(ggplot2)
tabla_contingencia <- table(datos_limpios$Género, 
                            datos_limpios$`Estado Civil`)
print(tabla_contingencia)
           
            Casado Divorciado Soltero Viudo
  Femenino      15         10       9    16
  Masculino     12         12      11    14
  Otro          12          5      12     7
resultado_homogeneidad <- chisq.test(tabla_contingencia)
print(resultado_homogeneidad)

    Pearson's Chi-squared test

data:  tabla_contingencia
X-squared = 5.1309, df = 6, p-value = 0.5271
Nivel_de_significancia<-0.05
df<-6
valor_critico<-12.59

chi_grafico <- ggplot(data.frame(x = c(0, 20)), aes(x = x)) +
  stat_function(fun = dchisq, 
                args = list(
                  df = resultado_homogeneidad$parameter), 
                color = "pink") +
  geom_vline(xintercept = resultado_homogeneidad$statistic,
             color = "red", linetype = "dashed") +
  geom_vline(xintercept = valor_critico, color = "black",
             linetype = "dashed") +
  geom_area(stat = "function", 
            fun = dchisq, 
            args = list(df = resultado_homogeneidad$parameter), 
            fill = "lightpink", alpha = 0.3) +
  ggtitle(expression(paste("Distribución ", chi^2))) +
  xlab(expression(chi^2)) +
  ylab("Densidad") +
  annotate("text", 
           x = resultado_homogeneidad$statistic + 1,
           y = 0.03, label = paste("Valor de chi^2 =",
                    round(resultado_homogeneidad$statistic, 2)),
           color = "red") +
  annotate("text", x = valor_critico + 1,
           y = 0.025, label = paste("Valor crítico =", 
                                    valor_critico), 
           color = "black") +
  annotate("text", x = resultado_homogeneidad$statistic + 1, 
           y = 0.025, 
           label = paste("Grados de libertad =",
                         resultado_homogeneidad$parameter), 
           color = "black")

print(chi_grafico)

Interpretación y Conclusión: Dado que el valor p (0,5271) es mayor que el nivel de significación (𝛼=0,05), no hay pruebas suficientes para rechazar la hipótesis nula. Así pues, en vista de los resultados, NO hay pruebas suficientes para concluir que la distribución por género no es homogénea entre los distintos estados civiles, por lo que se acepta la hipótesis nula en lugar de rechazarla.

Chi Cuadrado de Independencia

La prueba Chi-cuadrado de independencia consiste en encontrar una asociación entre dos variables categóricas. En este caso, se empleará para determinar si existe una asociación entre el género de las personas y el nivel educativo. Una muestra de datos contextuales se utilizará para investigar si las variables “Género” y “Nivel educativo” están relacionadas o son independientes en una población más amplia. En este sentido, se aplicará un nivel de significación del 5% (α=0,05).

1. Variables

  1. Género: se refiere al género de los participantes, que puede ser “Femenino”,“Masculino” u “Otro.”

  2. Nivel Educativo:se refiere al nivel máximo de educación alcanzado, que puede ser “Primaria”,“Secundaria”,“Universitario” o “Postgrado.”

2. Hipótesis

Hipótesis nula (H0): No hay asociación entre el género de las personas y su nivel educativo; es decir, las variables son independientes.

Hipótesis alternativa (H1): Existe una asociación entre el género de las personas y su nivel educativo; es decir, las variables no son independientes.

library(readxl)
library(ggplot2)


file_path <- "Datos_Final.xlsx" 
datos <- read_excel(file_path)


datos_limpios <- na.omit(datos[, c("Género", "Nivel Educativo")])

tabla <- table(datos_limpios$Género, datos_limpios$`Nivel Educativo`)

contingency_table <- table(datos_limpios$`Género`, 
                           datos_limpios$`Nivel Educativo`)
print(contingency_table)
           
            Posgrado Primaria Secundaria Universitario
  Femenino        51       69         62            57
  Masculino       62       62         58            47
  Otro            48       54         62            54
resultado_chi <- chisq.test(tabla)
print(resultado_chi)

    Pearson's Chi-squared test

data:  tabla
X-squared = 4.0745, df = 6, p-value = 0.6666
Nivel_de_Significancia <- 0.05
df <- 6
valor_critico <- 12.59


chi_grafico <- ggplot(data.frame(x = c(0, 20)), aes(x = x)) +
  stat_function(fun = dchisq, 
                args = list(df = resultado_chi$parameter), 
                color = "blue") +
  geom_vline(xintercept = resultado_chi$statistic,
             color = "red", linetype = "dashed") +
  geom_vline(xintercept = valor_critico,
             color = "black", linetype = "dashed") +
  geom_area(stat = "function", fun = dchisq, 
            args = list(df = resultado_chi$parameter), 
            fill = "lightblue", alpha = 0.3) +
  ggtitle(expression(paste("Distribución ", chi^2))) +
  xlab(expression(chi^2)) +
  ylab("Densidad") +
  annotate("text", 
           x = resultado_chi$statistic + 1, y = 0.03,
           label = paste("Valor de chi^2 =", 
                         round(resultado_chi$statistic, 2)), 
           color = "red") +
  annotate("text", x = valor_critico + 1, y = 0.025,
           label = paste("Valor crítico =", valor_critico), 
           color = "black") +
  annotate("text", x = resultado_chi$statistic + 1, 
           y = 0.025, label = paste("Grados de libertad =",
                          resultado_chi$parameter), 
           color = "black")

print(chi_grafico)

Interpretación y Conclusión: Partiendo de los resultados, se aprecia que p-valor de 0,6666 es mayor que el nivel de significación de 0,05, indicando que no hay pruebas suficientes para rechazar la hipótesis nula, es decir, se acepta la hipótesis nula. Por otro lado, considerando el grado de libertad (6 en este caso) y el nivel de significación de 0,05 para obtener el valor crítico en la tabla de Chi-cuadrado, resulta que éste es igual a 12,59, lo cual, comparado con el valor de Chi-cuadrado (4.0745), revela que el valor crítico es mayor que el resultado de la prueba de Chi-cuadrado. De este modo se refuerza la aceptación de la hipótesis nula. Así pues, se concluye que no existe una relación significativa entre el género y el nivel educativo.

Igualdad de medias (ANOVA)

La prueba de igualdad de medias, mejor conocida como ANOVA, permite estudiar la relación entre una variable dependiente cuantitativa y dos variables independientes cualitativas, cada una de ellas con varios niveles. En este caso, se pretende estudiar la relación del nivel educativo (niveles: Primario, Secundario, Universitario, Postgrado) y la ocupación (niveles: Autónomo, Desempleado, Asalariado, Estudiante) sobre la satisfacción son la vida (variable dependiente cuantitativa). Para esta prueba se empleará un nivel de confianza del 5% (α=0,05). Seguidamente se darán más especificaciones:

1. Variables

  1. Variables independientes (cualitativas)

1.1. Nivel Educativo: se refiere al nivel máximo de educación alcanzado, que puede ser “Primaria”,“Secundaria”,“Universitario” o “Postgrado.”

1.2. Ocupación: se refiere al tipo de ocupación actual, que puede ser “Estudiante”,“Empleado”,“Desempleado” o “Autónomo.”

  1. Variable dependiente (cuantitativa)

2.1. Satisfacción con la vida: se refiere al grado de satisfacción con la vida, que puede ser entre el 1-10.

2. Hipótesis

Hipótesis Nula (H0): No hay diferencias significativas en la satisfacción con la vida entre los diferentes niveles educativos y ocupaciones.

Hipótesis Alternativa (H1): Hay al menos una diferencia significativa en la satisfacción con la vida entre los diferentes niveles educativos y ocupaciones.

library(readxl)
library(dplyr)
library(ggplot2)


data <- read_excel("Datos_Final.xlsx")
data_filtered <- data %>%
  filter(!is.na(`Nivel Educativo`), 
         !is.na(Ocupación), 
         !is.na(`Satisfacción con la vida`))


data_filtered$`Nivel Educativo` <- as.factor(
  data_filtered$`Nivel Educativo`)
data_filtered$Ocupación <- as.factor(
  data_filtered$Ocupación)


anova_result <- aov(
  `Satisfacción con la vida` ~ `Nivel Educativo` * 
    Ocupación, data = data_filtered)
anova_summary <- summary(anova_result)
print(anova_summary)
                             Df Sum Sq Mean Sq F value Pr(>F)
`Nivel Educativo`             3     13   4.211   0.515  0.672
Ocupación                     3     14   4.564   0.558  0.643
`Nivel Educativo`:Ocupación   9     94  10.408   1.272  0.249
Residuals                   603   4935   8.183               
interaction_plot <- ggplot(data_filtered, 
                        aes(x = `Nivel Educativo`, 
                    y = `Satisfacción con la vida`, 
                    color = Ocupación, group = Ocupación)) +
  geom_line(stat="summary", fun="mean") +
  geom_point(stat="summary", fun="mean") +
  theme_minimal() +
  labs(title = "Interacción entre Nivel Educativo y Ocupación 
       en la Satisfacción con la vida",
       x = "Nivel Educativo",
       y = "Satisfacción con la vida")

print(interaction_plot)

Interpretación y Conclusión: Conforme a los resultados, en ocupación se obtuvo un p-valor de 0,643 y en nivel educativo un p-valor de 0,672 que al compararlos con el nivel de significancia de 0,05, resulta evidente que ambos p-valores son mayores que el nivel de significancia. Lo que indica que no hay pruebas suficientes para rechazar la hipótesis nula. Adicionalmente, al analizar los resultados de la interacción de la ocupación y el nivel educativo, se observa que se obtuvo un p-valor de 0,249, que es mayor que el nivel de significación de 0,05. Por lo tanto, se concluye que no existe una interacción significativa entre el nivel educativo y la ocupación en cuanto a su efecto sobre la satisfacción con la vida. Por tanto, se acepta la hipótesis nula.

Normalidad

La prueba de normalidad tiene como objetivo establecer si existe una distribución normal entre las variables que serán utilizadas, las cuales se extrajeron de la base de datos de una investigación sobre las influencias psicosociales y del estilo de vida en el bienestar de los adultos urbanos.

1. Variables

  1. Edad: se refiere a la edad de los participantes.

  2. Ingresos: se refiere a los ingresos mensuales aproximado de los participantes.

2. Hipótesis

Hipótesis nula (H0): La edad y los ingresos no siguen una distribución normal.

Hipótesis alternativa (H1): La edad y los ingresos siguen una distribución normal.

library(readxl)
library(MVN)
library(ggplot2)

datos <- read_excel("Datos_Final.xlsx")


datos_limpios <- na.omit(datos[, c("Edad", "Ingresos")])

datos_limpios <- datos_limpios[is.finite(datos_limpios$Edad) 
                          & is.finite(datos_limpios$Ingresos), ]


resultado_normalidad <- mvn(data = datos_limpios, 
                            mvnTest = "mardia")
print(resultado_normalidad)
$multivariateNormality
             Test         Statistic              p value Result
1 Mardia Skewness  6.18347091580463    0.185859129497683    YES
2 Mardia Kurtosis -7.30613358074891 2.74891220897189e-13     NO
3             MVN              <NA>                 <NA>     NO

$univariateNormality
              Test  Variable Statistic   p value Normality
1 Anderson-Darling   Edad       6.4442  <0.001      NO    
2 Anderson-Darling Ingresos     7.7037  <0.001      NO    

$Descriptives
           n       Mean    Std.Dev Median Min  Max 25th   75th        Skew
Edad     687   43.98836   14.97042     44  18   69   31   56.0 -0.06891257
Ingresos 687 2846.33624 1259.33690   2948 506 4998 1788 3942.5 -0.15543359
          Kurtosis
Edad     -1.132832
Ingresos -1.152655
qqplot_bivariado <- resultado_normalidad$multivariatePlot

scatter_plot <- ggplot(datos_limpios, 
                       aes(x = Edad, y = Ingresos)) +
  geom_point() +
  labs(title = "Gráfico de dispersión: Edad vs Ingresos",
       x = "Edad",
       y = "Ingresos") +
  theme_minimal()


hist_edad <- ggplot(datos_limpios, aes(x = Edad)) +
  geom_histogram(aes(y = ..density..), 
                 bins = 30, fill = "skyblue", 
                 color = "black") +
  geom_density(color = "red", linewidth = 1) +
  labs(
    title = "Distribución de Edad con Curva de Densidad",
       x = "Edad",
       y = "Densidad") +
  theme_minimal()


hist_ingresos <- ggplot(datos_limpios, aes(x = Ingresos)) +
  geom_histogram(aes(y = ..density..), 
                 bins = 30, fill = "skyblue", 
                 color = "black") +
  geom_density(color = "red", linewidth = 1) +
  labs(
    title = "Distribución de Ingresos con Curva de Densidad",
       x = "Ingresos",
       y = "Densidad") +
  theme_minimal()

print(qqplot_bivariado)
NULL
print(scatter_plot)

print(hist_edad)
Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
ℹ Please use `after_stat(density)` instead.

print(hist_ingresos)

Interpretación y Conclusión: A partir del análisis de las variables se puede afirmar que los datos no siguen una distribución normal multivariada, principalmente debido a una kurtosis significativa, que arroja un valor de -1,219305, lo que indica que existen valores atípicos menos extremos que una distribución normal.

En cuanto a la kurtosis de Mardia, se obtiene un valor p de 0,917, lo que confirma que se acepta la hipótesis nula de normalidad multivariante para la asimetría. De esta misma prueba se concluye que no existe una desviación significativa de la normalidad en términos de asimetría multivariante.

Correlación

Esta prueba de correlación se realizó con el objetivo de evaluar la relación entre las variables “Estrés” y “Ansiedad”. De esta forma, el resultado obtenido permitirá establecer si existe una correlación significativa entre las variables, ya sea positiva o negativa, o por el contrario afirmar que no existe.

1. Variables

  1. Estres: se refiere a la autoevaluación del nivel de estrés, que puede ser entre 1-10.

  2. Ansiedad: Se refiere a la autoevaluación del nivel de ansiedad, que puede ser entre 1-10.

2. Hipótesis

Hipótesis Nula (H0): La correlación entre la variable estres y ansiedad no es significativa.

Hipótesis Alternativa (H1): La correlación entre la variable estres y ansiedad es significativa.

library(readxl)

datos<-read_excel("Datos_Final.xlsx")
datos_limpios<-na.omit(datos)

df<-data.frame(datos_limpios$Estrés, datos_limpios$Ansiedad)


library(nortest)

ad_test_ansiedad <- ad.test(datos_limpios$Ansiedad)
print(ad_test_ansiedad)

    Anderson-Darling normality test

data:  datos_limpios$Ansiedad
A = 2.2726, p-value = 8.658e-06
ad_test_estres <- ad.test(datos_limpios$Estrés)
print(ad_test_estres)

    Anderson-Darling normality test

data:  datos_limpios$Estrés
A = 2.7002, p-value = 7.735e-07
correlacion <- cor(datos_limpios$Estrés, 
                   datos_limpios$Ansiedad,
                   method = "spearman")
print(correlacion)
[1] -0.007471828
library(ggplot2)


ggplot(data = datos_limpios,
       aes(x = Estrés, y = Ansiedad)) +
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE, 
              color = "red") +  
  labs(x = "Estrés", y = "Ansiedad", 
       title = "Diagrama de dispersión de Estrés vs. Ansiedad")
`geom_smooth()` using formula = 'y ~ x'

Interpretación y Conclusión: El resultado de la prueba de correlación de Spearman fue -0,007471828, lo que demuestra que no existe una correlación significativa entre Estrés y Ansiedad. Sin embargo, se puede concluir que hay pruebas suficientes para afirmar que los datos no siguen una distribución normal. Por lo tanto, se rechaza la hipótesis nula.

Modelo de Regresión

Esta prueba predice el valor de un dato desconocido utilizando otro valor de dato que está relacionado y es conocido. Por lo tanto, en este caso se evaluará la relación entre la edad (variable independiente) y los Ingresos (variable dependiente).

1. Variables

  1. Edad: se refiere a la edad de los participantes.

  2. Ingresos: se refiere a los ingresos mensuales aproximado de los participantes.

2. Hipótesis

Hipótesis nula (H0): No existe una relación lineal entre la edad y los ingresos (H0:𝛽1=0).

Hipótesis alternativa (H1): Existe una relación lineal entre la edad y los ingresos (H1:𝛽1≠0).

library(readxl)
library(ggplot2)

data <- read_excel("Datos_Final.xlsx")
attach(data)
names(data)
 [1] "ID"                       "Edad"                    
 [3] "Género"                   "Nivel Educativo"         
 [5] "Estado Civil"             "Ocupación"               
 [7] "Ingresos"                 "Estrés"                  
 [9] "Ansiedad"                 "Depresión"               
[11] "Satisfacción con la vida" "Soporte Social"          
[13] "Sueño"                    "Actividad Física"        
[15] "Consumo de Agua"          "Felicidad"               
[17] "Estatura"                
class(data$Edad)
[1] "numeric"
class(data$Ingresos)
[1] "numeric"
modelo1 <- lm(Edad ~ Ingresos, data = data, 
              na.action = na.exclude)

summary(modelo1)

Call:
lm(formula = Edad ~ Ingresos, data = data, na.action = na.exclude)

Residuals:
     Min       1Q   Median       3Q      Max 
-26.5795 -12.6475   0.0822  12.4271  25.4927 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 4.317e+01  1.413e+00  30.552   <2e-16 ***
Ingresos    2.864e-04  4.541e-04   0.631    0.528    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 14.98 on 685 degrees of freedom
  (158 observations deleted due to missingness)
Multiple R-squared:  0.0005806, Adjusted R-squared:  -0.0008784 
F-statistic: 0.398 on 1 and 685 DF,  p-value: 0.5284
sqrt(mean(modelo1$residuals^2))
[1] 14.95518
ggplot(data, aes(x = Edad, y = Ingresos)) +
  geom_point() +
  geom_smooth(method = "lm", col = "blue") +
  labs(title = "Relación entre Edad y Ingresos",
       x = "Edad",
       y = "Ingresos") +
  theme_minimal()
`geom_smooth()` using formula = 'y ~ x'
Warning: Removed 158 rows containing non-finite outside the scale range
(`stat_smooth()`).
Warning: Removed 158 rows containing missing values or values outside the scale range
(`geom_point()`).

Interpretació y Conclusión: A partir de los datos recolectados y tras realizar el análisis respectivo, es posible determinar que los ingresos no parecen ser un predictor significativo de la edad. Considerando el coeficiente p-valor (0.5284) > 0.05, se reafirma lo anterior. En conclusión, cabe indicar que no existe regresión lineal a partir de estas dos variables, afirmando la hipótesis nula.