library(ggcorrplot)
## Loading required package: ggplot2
library(readxl)
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
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ✔ readr 2.1.5
## ── 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(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(janitor)
##
## Attaching package: 'janitor'
##
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
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(ggplot2)
library(dplyr)
library(pastecs)
##
## Attaching package: 'pastecs'
##
## The following object is masked from 'package:magrittr':
##
## extract
##
## The following object is masked from 'package:tidyr':
##
## extract
##
## The following objects are masked from 'package:dplyr':
##
## first, last
library(nortest)
# Leer el archivo de Excel
datos<- read_excel("Datos_Final.xlsx")
summary(datos)
## ID Edad Género Nivel Educativo
## Min. : 1.0 Min. :18.00 Length:845 Length:845
## 1st Qu.:206.0 1st Qu.:31.00 Class :character Class :character
## Median :422.0 Median :45.00 Mode :character Mode :character
## Mean :422.2 Mean :43.97
## 3rd Qu.:635.0 3rd Qu.:56.00
## Max. :845.0 Max. :69.00
## NA's :84 NA's :84
## Estado Civil Ocupación Ingresos Estrés
## Length:845 Length:845 Min. : 506 Min. : 1.000
## Class :character Class :character 1st Qu.:1804 1st Qu.: 3.000
## Mode :character Mode :character Median :2968 Median : 6.000
## Mean :2862 Mean : 5.573
## 3rd Qu.:3974 3rd Qu.: 8.000
## Max. :4998 Max. :10.000
## NA's :84 NA's :84
## Ansiedad Depresión Satisfacción con la vida Soporte Social
## Min. : 1.000 Min. : 1.000 Min. : 1.00 Min. : 1.000
## 1st Qu.: 3.000 1st Qu.: 3.000 1st Qu.: 3.00 1st Qu.: 3.000
## Median : 6.000 Median : 6.000 Median : 5.00 Median : 6.000
## Mean : 5.551 Mean : 5.594 Mean : 5.49 Mean : 5.548
## 3rd Qu.: 8.000 3rd Qu.: 8.000 3rd Qu.: 8.00 3rd Qu.: 8.000
## Max. :10.000 Max. :10.000 Max. :10.00 Max. :10.000
## NA's :84 NA's :84 NA's :84 NA's :84
## Sueño Actividad Física 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.523 Mean : 5.434 Mean : 5.653 Mean : 5.548
## 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
## NA's :84 NA's :84 NA's :84 NA's :84
## Estatura
## Min. :150.0
## 1st Qu.:162.0
## Median :176.0
## Mean :174.9
## 3rd Qu.:187.0
## Max. :199.0
## NA's :84
dim(datos)
## [1] 845 17
str(datos)
## tibble [845 × 17] (S3: tbl_df/tbl/data.frame)
## $ ID : num [1:845] 1 2 3 4 NA 6 7 8 9 10 ...
## $ Edad : num [1:845] 56 69 46 32 60 25 38 56 36 40 ...
## $ Género : chr [1:845] "Masculino" "Otro" "Masculino" "Masculino" ...
## $ Nivel Educativo : chr [1:845] "Primaria" "Universitario" "Posgrado" "Secundaria" ...
## $ Estado Civil : chr [1:845] "Casado" "Soltero" "Viudo" "Soltero" ...
## $ Ocupación : chr [1:845] "Empleado" "Desempleado" "Desempleado" "Estudiante" ...
## $ Ingresos : num [1:845] 2366 2496 1409 4805 3689 ...
## $ Estrés : num [1:845] 4 9 10 3 8 1 9 9 10 2 ...
## $ Ansiedad : num [1:845] 4 9 NA 7 6 NA 5 1 1 9 ...
## $ Depresión : num [1:845] 3 2 NA 4 8 3 1 NA NA 1 ...
## $ Satisfacción con la vida: num [1:845] NA 4 8 5 NA 9 10 NA 1 9 ...
## $ Soporte Social : num [1:845] 7 6 6 NA 3 3 10 9 8 5 ...
## $ Sueño : num [1:845] NA NA 2 3 6 7 4 1 NA 9 ...
## $ Actividad Física : num [1:845] 5 8 5 NA 8 2 3 9 5 5 ...
## $ Consumo de Agua : num [1:845] 4 8 NA 7 10 NA 10 5 7 4 ...
## $ Felicidad : num [1:845] 1 5 8 7 5 3 1 7 3 4 ...
## $ Estatura : num [1:845] 196 172 NA 184 174 181 171 157 187 167 ...
Segun el resumen de los datos se puede observar que se tienen 13/17 variables cuantitativas y 4/17 variables cualitativas.
se puede notar que la variable ID presenta NAs y se presenta de manera numérica pero debe tratarse como cadena debido a que los resumenes numericos que se puden extraer son insignificantes, al tener NAs pero ser enumeración se puede generar nuevamente.
# Eliminar la columna "ID" del dataframe original
datos_sin_ID <- select(datos, -ID)
# Generar una nueva secuencia numérica del mismo tamaño que el dataframe
nueva_ID <- 1:nrow(datos)
# Agregar la nueva columna "ID" al dataframe
nuevo_datos <- bind_cols(ID = nueva_ID, datos_sin_ID)
# Verificar el nuevo dataframe
print(head(nuevo_datos))
## # A tibble: 6 × 17
## ID Edad Género `Nivel Educativo` `Estado Civil` Ocupación Ingresos Estrés
## <int> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 1 56 Mascul… Primaria Casado Empleado 2366 4
## 2 2 69 Otro Universitario Soltero Desemple… 2496 9
## 3 3 46 Mascul… Posgrado Viudo Desemple… 1409 10
## 4 4 32 Mascul… Secundaria Soltero Estudian… 4805 3
## 5 5 60 Femeni… Universitario Casado Empleado 3689 8
## 6 6 25 <NA> Posgrado Viudo Autónomo 1270 1
## # ℹ 9 more variables: Ansiedad <dbl>, Depresión <dbl>,
## # `Satisfacción con la vida` <dbl>, `Soporte Social` <dbl>, Sueño <dbl>,
## # `Actividad Física` <dbl>, `Consumo de Agua` <dbl>, Felicidad <dbl>,
## # Estatura <dbl>
nuevo_datos$`ID` <- as.character(nuevo_datos$`ID`)
Se visualizan nuevamente el tipo de datos y se limpian los nombres de las variables.
str(datos)
## tibble [845 × 17] (S3: tbl_df/tbl/data.frame)
## $ ID : num [1:845] 1 2 3 4 NA 6 7 8 9 10 ...
## $ Edad : num [1:845] 56 69 46 32 60 25 38 56 36 40 ...
## $ Género : chr [1:845] "Masculino" "Otro" "Masculino" "Masculino" ...
## $ Nivel Educativo : chr [1:845] "Primaria" "Universitario" "Posgrado" "Secundaria" ...
## $ Estado Civil : chr [1:845] "Casado" "Soltero" "Viudo" "Soltero" ...
## $ Ocupación : chr [1:845] "Empleado" "Desempleado" "Desempleado" "Estudiante" ...
## $ Ingresos : num [1:845] 2366 2496 1409 4805 3689 ...
## $ Estrés : num [1:845] 4 9 10 3 8 1 9 9 10 2 ...
## $ Ansiedad : num [1:845] 4 9 NA 7 6 NA 5 1 1 9 ...
## $ Depresión : num [1:845] 3 2 NA 4 8 3 1 NA NA 1 ...
## $ Satisfacción con la vida: num [1:845] NA 4 8 5 NA 9 10 NA 1 9 ...
## $ Soporte Social : num [1:845] 7 6 6 NA 3 3 10 9 8 5 ...
## $ Sueño : num [1:845] NA NA 2 3 6 7 4 1 NA 9 ...
## $ Actividad Física : num [1:845] 5 8 5 NA 8 2 3 9 5 5 ...
## $ Consumo de Agua : num [1:845] 4 8 NA 7 10 NA 10 5 7 4 ...
## $ Felicidad : num [1:845] 1 5 8 7 5 3 1 7 3 4 ...
## $ Estatura : num [1:845] 196 172 NA 184 174 181 171 157 187 167 ...
names(datos)
## [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"
datos %<>% clean_names
names(datos)
## [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"
Ahora, segun el resumen de los datos se puede observar que se tienen 12/17 variables cuantitativas y 5/17 variables cualitativas.
unique(datos$genero)
## [1] "Masculino" "Otro" "Femenino" NA
unique(datos$nivel_educativo)
## [1] "Primaria" "Universitario" "Posgrado" "Secundaria"
## [5] NA
unique(datos$estado_civil)
## [1] "Casado" "Soltero" "Viudo" "Divorciado" NA
unique(datos$ocupacion)
## [1] "Empleado" "Desempleado" "Estudiante" "Autónomo" NA
missmap(nuevo_datos, main="Mapa de Datos Faltantes")
## Warning: Unknown or uninitialised column: `arguments`.
## Unknown or uninitialised column: `arguments`.
## Warning: Unknown or uninitialised column: `imputations`.
Según el gráfico de datos faltantes se puede observar que un 9% de los datos son NA.
ks_test <- function(x) {
ks.test(x, "pnorm", mean = mean(x, na.rm = TRUE), sd = sd(x, na.rm = TRUE))$p.value
}
# Aplicar la prueba de Kolmogorov-Smirnov a todas las variables numéricas
normality_tests <- nuevo_datos %>%
summarise(across(where(is.numeric), ~ ks_test(.x))) %>%
pivot_longer(cols = everything(), names_to = "Variable", values_to = "P-Value")
## Warning: There were 12 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `across(where(is.numeric), ~ks_test(.x))`.
## Caused by warning in `ks.test.default()`:
## ! ties should not be present for the one-sample Kolmogorov-Smirnov test
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 11 remaining warnings.
# Agregar una columna indicando si los datos son normales o no
normality_tests <- normality_tests %>%
mutate(Normal = ifelse(`P-Value` < 0.05, "No", "Sí"))
# Mostrar los resultados
print(normality_tests)
## # A tibble: 12 × 3
## Variable `P-Value` Normal
## <chr> <dbl> <chr>
## 1 Edad 1.65e- 3 No
## 2 Ingresos 5.02e- 5 No
## 3 Estrés 2.27e- 8 No
## 4 Ansiedad 1.60e- 7 No
## 5 Depresión 6.58e- 9 No
## 6 Satisfacción con la vida 4.08e- 8 No
## 7 Soporte Social 2.86e- 9 No
## 8 Sueño 2.00e- 9 No
## 9 Actividad Física 1.73e- 8 No
## 10 Consumo de Agua 9.35e-11 No
## 11 Felicidad 5.04e- 7 No
## 12 Estatura 5.50e- 5 No
Segun los resultados de la prueba shapiro para la normalidad en las variables cuantitativas se concluye que los datos no son normales por lo que que se decide reemplazar los NA con la mediana y en las variables cualitativas por la moda.
# Función para rellenar variables cuantitativas con la mediana
rellenar_con_mediana <- function(x) {
x[is.na(x)] <- median(x, na.rm = TRUE)
return(x)
}
# Función para calcular la moda
calcular_moda <- function(x) {
uniq_vals <- unique(na.omit(x))
uniq_vals[which.max(tabulate(match(x, uniq_vals)))]
}
# Función para rellenar NA en variables cualitativas con la moda
rellenar_con_moda <- function(x) {
moda <- calcular_moda(x)
x[is.na(x)] <- moda
return(x)
}
Ahora, se hace uso de las anteriores funciones para rellenar los NA en el data frame nuevo.
nuevo_datos <- nuevo_datos %>%
mutate(across(where(is.numeric), rellenar_con_mediana)) %>%
mutate(across(where(is.character), rellenar_con_moda)) %>%
mutate(across(where(is.factor), ~ as.character(.) %>% rellenar_con_moda() %>% as.factor()))
# Verificar que no haya NA en el nuevo dataframe
missmap(nuevo_datos, main="Mapa de Datos Faltantes")
## Warning: Unknown or uninitialised column: `arguments`.
## Unknown or uninitialised column: `arguments`.
## Warning: Unknown or uninitialised column: `imputations`.
sum(is.na(nuevo_datos))
## [1] 0
Teniendo en cuenta el tratamiento de los NA y que ya no se presentan datos faltantes podemos proceder con el análisis.
names(nuevo_datos)
## [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"
nuevo_datos %<>% clean_names
names(nuevo_datos)
## [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"
summary(nuevo_datos)
## id edad genero nivel_educativo
## Length:845 Min. :18.00 Length:845 Length:845
## Class :character 1st Qu.:33.00 Class :character Class :character
## Mode :character Median :45.00 Mode :character Mode :character
## Mean :44.08
## 3rd Qu.:55.00
## 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
dim(nuevo_datos)
## [1] 845 17
str(nuevo_datos)
## tibble [845 × 17] (S3: tbl_df/tbl/data.frame)
## $ id : chr [1:845] "1" "2" "3" "4" ...
## $ edad : num [1:845] 56 69 46 32 60 25 38 56 36 40 ...
## $ genero : chr [1:845] "Masculino" "Otro" "Masculino" "Masculino" ...
## $ nivel_educativo : chr [1:845] "Primaria" "Universitario" "Posgrado" "Secundaria" ...
## $ estado_civil : chr [1:845] "Casado" "Soltero" "Viudo" "Soltero" ...
## $ ocupacion : chr [1:845] "Empleado" "Desempleado" "Desempleado" "Estudiante" ...
## $ ingresos : num [1:845] 2366 2496 1409 4805 3689 ...
## $ estres : num [1:845] 4 9 10 3 8 1 9 9 10 2 ...
## $ ansiedad : num [1:845] 4 9 6 7 6 6 5 1 1 9 ...
## $ depresion : num [1:845] 3 2 6 4 8 3 1 6 6 1 ...
## $ satisfaccion_con_la_vida: num [1:845] 5 4 8 5 5 9 10 5 1 9 ...
## $ soporte_social : num [1:845] 7 6 6 6 3 3 10 9 8 5 ...
## $ sueno : num [1:845] 5 5 2 3 6 7 4 1 5 9 ...
## $ actividad_fisica : num [1:845] 5 8 5 5 8 2 3 9 5 5 ...
## $ consumo_de_agua : num [1:845] 4 8 6 7 10 6 10 5 7 4 ...
## $ felicidad : num [1:845] 1 5 8 7 5 3 1 7 3 4 ...
## $ estatura : num [1:845] 196 172 176 184 174 181 171 157 187 167 ...
unique(nuevo_datos$genero)
## [1] "Masculino" "Otro" "Femenino"
unique(nuevo_datos$nivel_educativo)
## [1] "Primaria" "Universitario" "Posgrado" "Secundaria"
unique(nuevo_datos$estado_civil)
## [1] "Casado" "Soltero" "Viudo" "Divorciado"
unique(nuevo_datos$ocupacion)
## [1] "Empleado" "Desempleado" "Estudiante" "Autónomo"
Hipótesis Nula (Ho): La distribución de la ocupación es la misma para los diferentes estados civiles
Hipótesis Alternativa (H1): La distribución de la ocupación difiere entre los distintos estados civiles
#Creamos la tabla de contingencia
tabla_contingencia <- table(nuevo_datos$estado_civil , nuevo_datos$ocupacion)
#Aplicamos la prueba
resultado_prueba <- chisq.test(tabla_contingencia)
print(resultado_prueba)
##
## Pearson's Chi-squared test
##
## data: tabla_contingencia
## X-squared = 5.4107, df = 9, p-value = 0.7971
#Conclusiones
if (resultado_prueba$p.value < 0.05) {
print("Se rechaza la hipótesis nula. Por lo que se afirma que la distribución de la ocupción no es homogénea entre los diferentes estados civiles")
} else {
print("No se rechaza la hipótesis nula. Por lo que no es posible concluir que la distribución de ocupación sea homogénea entre los diferentes estados civiles")
}
## [1] "No se rechaza la hipótesis nula. Por lo que no es posible concluir que la distribución de ocupación sea homogénea entre los diferentes estados civiles"
Interpretación
Dado que el p-valor es igual a 0.79, no se rechaza la hipótesis nula y por lo tanto, se afirma que no es posible concluir que la distribución de ocupación sea homogénea entre los diferentes estados civiles.
Hipótesis Nula (Ho): No existe una asociación entre el género y el nivel educativo
Hipótesis Alternativa (H1): Existe una asociación entre esas dos variables categóricas
#Creamos una tabla de contingencia con las variables a estudiar
tabla_de_contingencia = table(nuevo_datos$genero , nuevo_datos$nivel_educativo)
#Aplicamos la prueba Chi-Cuadrado
resultado <- chisq.test(tabla_de_contingencia)
print(resultado)
##
## Pearson's Chi-squared test
##
## data: tabla_de_contingencia
## X-squared = 2.7887, df = 6, p-value = 0.8349
if (resultado$p.value < 0.05) {
print("Se rechaza la hipótesis nula, por lo que se afirma que existe una asociación entre estas dos variables")
} else {
print("No se rechaza la hipótesis nula. Por lo tanto, no es posible concluir que existe una asociación entre el género y el nivel educativo.")
}
## [1] "No se rechaza la hipótesis nula. Por lo tanto, no es posible concluir que existe una asociación entre el género y el nivel educativo."
Interpretación Teniendo en cuenta que el p-valor arrojado por la prueba es de 0.6666, es decir, es mayor que el nivel de significancia considerado en este estudio (0.05) no se rechaza la hipótesis nula, por lo que no es posible concluir que existe una asociación entre el género y el nivel educativo. Entonces, las variables género y nivel educativo son independientes.
Hipótesis Nula (H0): No hay diferencia significativa entre las medias de Ansiedad para los diferentes niveles Educativos.
Hipótesis Alternativa (H1): Hay al menos una diferencia significativa entre las medias de Ansiedad para los diferentes niveles Educativos.
# Cálculo de medias de ansiedad por nivel educativo
aggregate(`ansiedad` ~ `nivel_educativo`, data = nuevo_datos, FUN = mean)
## nivel_educativo ansiedad
## 1 Posgrado 5.446237
## 2 Primaria 5.581882
## 3 Secundaria 5.773869
## 4 Universitario 5.572254
# Realizar el ANOVA
resultado_anova <- aov(ansiedad ~ `nivel_educativo`, data = nuevo_datos)
# Mostrar resumen del ANOVA
resumen_anova <- summary(resultado_anova)
# Mostrar el resultado
print(resumen_anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## nivel_educativo 3 11 3.541 0.502 0.681
## Residuals 841 5927 7.048
# Extraer el valor p
valor_p <- resumen_anova[[1]]$`Pr(>F)`[1]
# Nivel de significancia
nivel_significancia <- 0.05
# Evaluar la hipótesis
if (!is.na(valor_p) && valor_p < nivel_significancia) {
print("Se rechaza la hipótesis nula, por lo que hay una diferencia significativa entre las medias de Ansiedad para los diferentes niveles Educativos")
} else {
print("Dado que el valor p es mayor que 0.05, no se rechaza la hipótesis nula, por lo tanto, no hay suficiente evidencia para afirmar que hay una diferencia significativa entre las medias de Ansiedad para los diferentes niveles Educativos")
}
## [1] "Dado que el valor p es mayor que 0.05, no se rechaza la hipótesis nula, por lo tanto, no hay suficiente evidencia para afirmar que hay una diferencia significativa entre las medias de Ansiedad para los diferentes niveles Educativos"
ggplot(data = nuevo_datos, aes(x = `nivel_educativo`, y = `ansiedad`, color = `nivel_educativo`)) +
geom_boxplot() +
theme_bw()
Interpretación
El análisis de ANOVA realizado para evaluar si existen diferencias significativas en los niveles de ansiedad entre los distintos niveles educativos (Posgrado, Primaria, Secundaria y Universitario) indica que no hay suficiente evidencia para rechazar la hipótesis nula. El valor p obtenido (0.681) es considerablemente mayor que el nivel de significancia establecido (0.05), lo que sugiere que las medias de ansiedad entre los grupos educativos no son significativamente diferentes. Además, el boxplot respalda esta conclusión, mostrando medianas y distribuciones de ansiedad similares entre los diferentes niveles educativos.
La falta de diferencias significativas en los niveles de ansiedad entre los distintos niveles educativos implica que el nivel educativo no parece tener un impacto notable en la ansiedad de los individuos. Esto sugiere que otros factores, distintos al nivel educativo, pueden ser los principales determinantes de la ansiedad en esta población.
Se usarán diferentes métodos para evaluar la normalidad de la variables Depresión. El fin de ello, es análizar los resultados y ver si se obtienen una relación entre todos. Las hipótesis son:
Hipótesis Nula (H0): La variable depresión sigue una distribución normal.
Hipótesis Alternativa (H1): La variable depresión no sigue una distribución normal.
Prueba de normalidad Kolmogorov-Smirnov
# Realizar la prueba de normalidad (prueba de Shapiro-Wilk)
resultado_prueba <- shapiro.test(nuevo_datos$depresion)
# Mostrar el resultado de la prueba
print(resultado_prueba)
##
## Shapiro-Wilk normality test
##
## data: nuevo_datos$depresion
## W = 0.93913, p-value < 2.2e-16
# Nivel de significancia
nivel_significancia <- 0.05
# Evaluar la hipótesis
if (resultado_prueba$p.value < nivel_significancia) {
print("Se rechaza la hipótesis nula, lo que sugiere que la variable Depresión no sigue una distribución normal.")
} else {
print("No se rechaza la hipótesis nula, lo que sugiere que la variable Depresión sigue una distribución normal.")
}
## [1] "Se rechaza la hipótesis nula, lo que sugiere que la variable Depresión no sigue una distribución normal."
Prueba de normalidad Kolmogorov-Smirnov
# Realizar la prueba de normalidad (Kolmogorov-Smirnov)
resultado_prueba <- ks.test(nuevo_datos$depresion, "pnorm", mean = mean(nuevo_datos$depresion), sd = sd(nuevo_datos$depresion))
## Warning in ks.test.default(nuevo_datos$depresion, "pnorm", mean =
## mean(nuevo_datos$depresion), : ties should not be present for the one-sample
## Kolmogorov-Smirnov test
# Mostrar el resultado de la prueba
print(resultado_prueba)
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: nuevo_datos$depresion
## D = 0.11732, p-value = 1.58e-10
## alternative hypothesis: two-sided
# Nivel de significancia
nivel_significancia <- 0.05
# Evaluar la hipótesis
if (!is.na(resultado_prueba$p.value) && resultado_prueba$p.value < nivel_significancia) {
print("Se rechaza la hipótesis nula, lo que sugiere que la variable Depresión no sigue una distribución normal.")
} else {
print("No se rechaza la hipótesis nula, lo que sugiere que la variable Depresión sigue una distribución normal.")
}
## [1] "Se rechaza la hipótesis nula, lo que sugiere que la variable Depresión no sigue una distribución normal."
Prueba de normalidad Anderson-Darling
# Realizar la prueba de normalidad (Anderson-Darling)
resultado_prueba <- ad.test(nuevo_datos$depresion)
# Mostrar el resultado de la prueba
print(resultado_prueba)
##
## Anderson-Darling normality test
##
## data: nuevo_datos$depresion
## A = 13.233, p-value < 2.2e-16
# Nivel de significancia
nivel_significancia <- 0.05
# Evaluar la hipótesis
if (resultado_prueba$p.value < nivel_significancia) {
print("Se rechaza la hipótesis nula, lo que sugiere que la variable Depresión no sigue una distribución normal.")
} else {
print("No se rechaza la hipótesis nula, lo que sugiere que la variable Depresión sigue una distribución normal.")
}
## [1] "Se rechaza la hipótesis nula, lo que sugiere que la variable Depresión no sigue una distribución normal."
# Crear el gráfico QQ para la variable Depresión
qqnorm(nuevo_datos$depresion)
qqline(nuevo_datos$depresion, col = "red")
# Agregar etiquetas y título
title(main = "")
xlabel <- ""
ylabel <- "Cuantiles observados (Depresión)"
title(xlab = xlabel, ylab = ylabel)
# Crear histograma con NA values ignorados
hist(nuevo_datos$depresion, main = "Histograma de Depresión", xlab = "Depresión", ylab = "Frecuencia", col = "lightblue", breaks = "FD", na.rm = TRUE)
## Warning in plot.window(xlim, ylim, "", ...): "na.rm" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "na.rm" is not a graphical parameter
## Warning in axis(1, ...): "na.rm" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "na.rm" is not a graphical parameter
Interpretación
Los análisis gráficos y las pruebas estadísticas realizadas indican de manera concluyente que la variable “Depresión” no sigue una distribución normal. El gráfico Q-Q muestra una clara desviación de la línea teórica de normalidad, y el histograma revela una distribución asimétrica con un pico pronunciado en los valores bajos. Las pruebas de normalidad (Shapiro-Wilk, Kolmogorov-Smirnov y Anderson-Darling) rechazan la hipótesis nula de normalidad con p-valores extremadamente bajos (p < 2.2e-16, p = 1.58e-10, y p < 2.2e-16, respectivamente).
Hipótesis nula (H0): La hipótesis nula en este caso sería que no hay correlación entre las dos variables evaluadas, es decir, que el coeficiente de correlación poblacional entre ‘Estrés’ y ‘Ansiedad’ es igual a cero (ρ = 0).
Hipótesis alternativa (H1): La hipótesis alternativa sugiere que sí existe una correlación significativa entre las variables ‘Estrés’ y ‘Ansiedad’. En términos prácticos, el coeficiente de correlación poblacional entre estas variables no es igual a cero (ρ ≠ 0).
correlacion <- cor.test(nuevo_datos$estres, nuevo_datos$ansiedad, method = "spearman")
## Warning in cor.test.default(nuevo_datos$estres, nuevo_datos$ansiedad, method =
## "spearman"): Cannot compute exact p-value with ties
# Mostrar resultados de la correlación
print(correlacion)
##
## Spearman's rank correlation rho
##
## data: nuevo_datos$estres and nuevo_datos$ansiedad
## S = 101761369, p-value = 0.7284
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.01196309
correlacion <- cor(nuevo_datos %>% select(where(is.numeric)))
print(correlacion)
## edad ingresos estres ansiedad
## edad 1.000000000 0.022507084 -0.022663635 -0.039601996
## ingresos 0.022507084 1.000000000 -0.015939488 -0.022579629
## estres -0.022663635 -0.015939488 1.000000000 -0.011315969
## ansiedad -0.039601996 -0.022579629 -0.011315969 1.000000000
## depresion 0.013737034 0.010224829 0.010748558 -0.005242774
## satisfaccion_con_la_vida -0.027085553 -0.039865760 0.007181799 0.014872722
## soporte_social -0.009613738 0.026795917 0.006900329 0.004866209
## sueno 0.033550792 0.016819356 -0.022383423 0.010549268
## actividad_fisica -0.008511935 -0.002547278 -0.009945902 -0.009026905
## consumo_de_agua 0.013275091 0.054575069 -0.041379987 -0.001582623
## felicidad 0.007471140 0.007982335 0.001214461 0.019243826
## estatura -0.040148126 0.029544095 -0.044603022 -0.016389794
## depresion satisfaccion_con_la_vida soporte_social
## edad 0.013737034 -0.027085553 -0.009613738
## ingresos 0.010224829 -0.039865760 0.026795917
## estres 0.010748558 0.007181799 0.006900329
## ansiedad -0.005242774 0.014872722 0.004866209
## depresion 1.000000000 -0.014100873 -0.033209334
## satisfaccion_con_la_vida -0.014100873 1.000000000 0.040120971
## soporte_social -0.033209334 0.040120971 1.000000000
## sueno -0.014110096 -0.013954733 0.033982253
## actividad_fisica 0.059900828 -0.029083252 0.006653344
## consumo_de_agua -0.015361086 -0.031425085 0.002732885
## felicidad 0.050800472 -0.042694315 -0.053924028
## estatura 0.023867448 -0.006786032 -0.043067324
## sueno actividad_fisica consumo_de_agua
## edad 0.033550792 -0.008511935 0.013275091
## ingresos 0.016819356 -0.002547278 0.054575069
## estres -0.022383423 -0.009945902 -0.041379987
## ansiedad 0.010549268 -0.009026905 -0.001582623
## depresion -0.014110096 0.059900828 -0.015361086
## satisfaccion_con_la_vida -0.013954733 -0.029083252 -0.031425085
## soporte_social 0.033982253 0.006653344 0.002732885
## sueno 1.000000000 0.005037824 0.080155090
## actividad_fisica 0.005037824 1.000000000 -0.023555620
## consumo_de_agua 0.080155090 -0.023555620 1.000000000
## felicidad 0.023907067 0.004238055 0.031415540
## estatura -0.006489677 0.012674049 0.056107150
## felicidad estatura
## edad 0.007471140 -0.040148126
## ingresos 0.007982335 0.029544095
## estres 0.001214461 -0.044603022
## ansiedad 0.019243826 -0.016389794
## depresion 0.050800472 0.023867448
## satisfaccion_con_la_vida -0.042694315 -0.006786032
## soporte_social -0.053924028 -0.043067324
## sueno 0.023907067 -0.006489677
## actividad_fisica 0.004238055 0.012674049
## consumo_de_agua 0.031415540 0.056107150
## felicidad 1.000000000 0.101397652
## estatura 0.101397652 1.000000000
ggcorrplot(correlacion, lab = TRUE)
La prueba de correlación evalúa si hay una relación lineal significativa entre las variables ‘Estrés’ y ‘Ansiedad’. El resultado incluye el coeficiente de correlación de Spearman (r), el valor p (p-value), y el intervalo de confianza. Un valor p menor a 0.05 indica que hay evidencia suficiente para rechazar la hipótesis nula de que no hay correlación, sugiriendo que existe una relación significativa entre las dos variables.
Interpretación
El valor p (p-value) de 0.6717 es mayor que el nivel de significancia típico de 0.05. Por lo tanto, no hay suficiente evidencia para rechazar la hipótesis nula de que la correlación entre ‘Estrés’ y ‘Ansiedad’ es igual a cero. Esto sugiere que, en esta muestra, no se encuentra una correlación significativa entre estas dos variables. El coeficiente de correlación muestral es -0.01625554, lo que indica una correlación muy débil y cercana a cero. El intervalo de confianza también incluye el valor cero, lo que respalda la conclusión de que la correlación entre estas variables no es estadísticamente significativa.
Hipótesis nula (H0): La hipótesis nula para la prueba de regresión lineal es que el coeficiente de regresión de la variable independiente (‘Actividad Física’) es igual a cero, lo que significa que no hay relación entre la variable independiente y la variable dependiente (‘Felicidad’). En otras palabras, el modelo de regresión no explica la variabilidad de ‘Felicidad’ en función de ‘Actividad Física’.
Hipótesis alternativa (H1): La hipótesis alternativa es que el coeficiente de regresión de la variable independiente (‘Actividad Física’) no es igual a cero, lo que sugiere que hay una relación significativa entre ‘Actividad Física’ y ‘Felicidad’. En este caso, el modelo de regresión sí explica la variabilidad de ‘Felicidad’ en función de ‘Actividad Física’.
correlacion <- cor.test(nuevo_datos$actividad_fisica, nuevo_datos$felicidad, method = "spearman")
## Warning in cor.test.default(nuevo_datos$actividad_fisica,
## nuevo_datos$felicidad, : Cannot compute exact p-value with ties
# Mostrar resultados de la correlación
print(correlacion)
##
## Spearman's rank correlation rho
##
## data: nuevo_datos$actividad_fisica and nuevo_datos$felicidad
## S = 99928888, p-value = 0.8558
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.006259967
modelo <- lm(felicidad ~ actividad_fisica, data = nuevo_datos)
# Mostrar un resumen del modelo
summary(modelo)
##
## Call:
## lm(formula = felicidad ~ actividad_fisica, data = nuevo_datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.6127 -2.5740 0.3959 2.4002 4.4260
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.569716 0.210602 26.447 <2e-16 ***
## actividad_fisica 0.004301 0.034952 0.123 0.902
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.735 on 843 degrees of freedom
## Multiple R-squared: 1.796e-05, Adjusted R-squared: -0.001168
## F-statistic: 0.01514 on 1 and 843 DF, p-value: 0.9021
ggplot(nuevo_datos, aes(x = ansiedad, y = estres)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
labs(title = "Regresión entre Estrés y Ansiedad", x = "Ansiedad", y = "Estrés")
## `geom_smooth()` using formula = 'y ~ x'
La prueba de regresión lineal evalúa si ‘Actividad Física’ es un predictor significativo de ‘Felicidad’. El resumen del modelo incluye el valor de R cuadrado, los coeficientes del modelo, el valor p para cada coeficiente, y otros estadísticos. Un valor p menor a 0.05 para el coeficiente de ‘Actividad Física’ indica que esta variable es un predictor significativo de ‘Felicidad’, sugiriendo que cambios en ‘Actividad Física’ están asociados con cambios en ‘Felicidad’.
Estadísticas del modelo:
El error estándar residual es 2.837. El R cuadrado múltiple es extremadamente bajo (1.895e-05), lo que indica que el modelo explica muy poco de la variabilidad de la variable dependiente (‘Felicidad’) en función de la variable independiente (‘Actividad Física’). El p-value del estadístico F es 0.9095, lo que indica que el modelo en su conjunto no es significativo.
Interpretación:
La variable ‘Actividad Física’ no tiene un efecto significativo en la ‘Felicidad’ según los resultados del modelo de regresión. Esto se evidencia por el coeficiente de ‘actividad_fisica’ que no es significativamente diferente de cero (p-value = 0.91) y un R cuadrado muy bajo. El modelo en general no es significativo (p-value del estadístico F = 0.9095), lo que sugiere que la relación entre ‘Actividad Física’ y ‘Felicidad’ no es lineal o que otros factores no incluidos en el modelo pueden estar influyendo en la ‘Felicidad’.