En esta actividad usaremos el conjunto de datos Happiness_clean, es decir el fichero utilizado en la actividad anterior A2. Recordamos que la base de datos contiene información sobre diferentes factores que se emplean para evaluar la felicidad en distintos países del mundo. Las variables incluidas en el conjunto de datos son:
Primero se estudiarán las posibles relaciones lineales entre el nivel de felicidad de los países HS y diferentes variables independientes. En la segunda parte de la actividad se buscarán los posibles factores de riesgo o protección que contribuyen o no, a la percepción de mayor felicidad. A continuación, se especifican los pasos a seguir.
Nota: - Se debe respetar la misma numeración de los apartados que el enunciado. - No se pueden realizar listados completos del conjunto de datos en la solución. Esto generaría un documento con cientos de páginas y dificulta la revisión del texto. Para comprobar las funcionalidades del código sobre los datos, se pueden usar las funciones head y tail que sólo muestran unas líneas del fichero de datos. - Se valorará con un 20% el informe ejecutivo (tabla y resumen con las principales conclusiones)
Antes de proceder al análisis, revisad la naturaleza de cada una de las variables a estudiar. Se recomienda cambiar las variables character a factor y las de tipo integer a numeric.
# Cargamos el archivo datos.
df<- read.csv("Happiness_clean.csv")
# Convertir las columnas de tipo integer a numeric
df <- data.frame(lapply(df, function(x) if (is.integer(x)) as.numeric(x) else x))
# Identificar las variables de tipo character en el dataframe
variables_character <- sapply(df, is.character)
# Convertir las variables de tipo character a factor
df[, variables_character] <- lapply(df[, variables_character], factor)
# Verificar los tipos de datos después de la conversión
str(df)
## 'data.frame': 157 obs. of 12 variables:
## $ Country : Factor w/ 157 levels "Afghanistan",..: 38 135 58 104 45 26 98 99 7 134 ...
## $ Region : Factor w/ 10 levels "Australia and New Zealand",..: 10 10 10 10 10 6 10 1 1 10 ...
## $ HR : num 1 2 3 4 5 6 7 8 9 10 ...
## $ HS : num 7.53 7.51 7.5 7.5 7.41 ...
## $ LCI : num 7.46 7.43 7.33 7.42 7.35 ...
## $ UCI : num 7.59 7.59 7.67 7.58 7.47 ...
## $ GpC : num 1.44 1.53 1.43 1.58 1.41 ...
## $ Family : num 1.16 1.15 1.1 1.13 1.13 ...
## $ LE : num 0.795 0.863 0.867 0.796 0.811 ...
## $ Freedom : num 0.579 0.586 0.566 0.596 0.571 ...
## $ GC : num 0.445 0.412 0.15 0.358 0.41 ...
## $ Generosity: num 0.362 0.281 0.477 0.379 0.255 ...
# Ajustar el modelo lineal
modelo <- lm(HS ~ Family + LE + Freedom, data = df)
# Mostrar los resultados del modelo
summary(modelo)
##
## Call:
## lm(formula = HS ~ Family + LE + Freedom, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.46132 -0.32228 0.02211 0.35526 1.41061
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.1603 0.1573 13.736 < 2e-16 ***
## Family 1.4889 0.2224 6.695 3.85e-10 ***
## LE 2.3746 0.2445 9.714 < 2e-16 ***
## Freedom 1.9310 0.3497 5.521 1.41e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.563 on 153 degrees of freedom
## Multiple R-squared: 0.7615, Adjusted R-squared: 0.7568
## F-statistic: 162.8 on 3 and 153 DF, p-value: < 2.2e-16
Interpretación de los resultados:
Residuos (Residuals): Los residuos representan las diferencias entre los valores observados de la variable de respuesta (HS) y los valores predichos por el modelo. En este caso, los residuos tienen un rango desde -1.46132 hasta 1.41061, con una mediana cercana a cero.
Error estándar residual (Residual standard error): El error estándar residual indica la magnitud promedio de los residuos. En este caso, el error estándar residual es 0.563, lo cual significa que, en promedio, los residuos tienen una magnitud de aproximadamente 0.563.
R-cuadrado y R-cuadrado ajustado (Multiple R-squared, Adjusted R-squared): El R-cuadrado representa la proporción de la variabilidad total de la variable de respuesta (HS) que es explicada por el modelo. En este caso, el R-cuadrado es 0.7615, lo que indica que aproximadamente el 76.15% de la variabilidad en la percepción de la felicidad se explica por las variables explicativas (Family, LE y Freedom). El R-cuadrado ajustado tiene en cuenta el número de variables explicativas y penaliza el sobreajuste del modelo. En este caso, el R-cuadrado ajustado es 0.7568.
Estadístico F y valor p (F-statistic, p-value): El estadístico F se utiliza para evaluar la significancia global del modelo, es decir, si al menos una de las variables explicativas tiene un efecto significativo en la variable de respuesta. En este caso, el estadístico F es 162.8, con un valor p extremadamente pequeño (< 2.2e-16), lo que indica que el modelo en su conjunto es altamente significativo.
En resumen, los resultados indican que el modelo tiene un buen ajuste global y que las variables explicativas (Family, LE y Freedom) son significativas en la explicación de la percepción de la felicidad (HS).
Para determinar qué variables son significativas y en qué grado, podemos basarnos en los valores p asociados a cada coeficiente estimado en el resumen del modelo. En este caso, los coeficientes estimados y sus valores p son los siguientes:
Variable “Family”: El coeficiente estimado para “Family” es 1.4889, con un valor p de 3.85e-10. Como el valor p es extremadamente pequeño (< 0.001), se puede concluir que la variable “Family” es altamente significativa en el modelo.
Variable “LE”: El coeficiente estimado para “LE” es 2.3746, con un valor p de < 2e-16. Al igual que con “Family”, el valor p es muy pequeño, lo que indica que la variable “LE” es altamente significativa en el modelo.
Variable “Freedom”: El coeficiente estimado para “Freedom” es 1.9310, con un valor p de 1.41e-07. Una vez más, el valor p es muy pequeño, lo que indica que la variable “Freedom” es altamente significativa en el modelo.
# Actualizar el modelo existente agregando las variables GpC y Generosity
modelo_actualizado <- update(modelo, . ~ . + GpC + Generosity)
# Mostrar los resultados del modelo actualizado
summary(modelo_actualizado)
##
## Call:
## lm(formula = HS ~ Family + LE + Freedom + GpC + Generosity, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.43538 -0.32448 0.02847 0.33489 1.40303
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.183045 0.167243 13.053 < 2e-16 ***
## Family 1.472651 0.223959 6.576 7.45e-10 ***
## LE 2.344565 0.246495 9.512 < 2e-16 ***
## Freedom 1.946307 0.376134 5.174 7.17e-07 ***
## GpC 0.001830 0.001623 1.128 0.261
## Generosity -0.055031 0.367278 -0.150 0.881
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5644 on 151 degrees of freedom
## Multiple R-squared: 0.7634, Adjusted R-squared: 0.7556
## F-statistic: 97.47 on 5 and 151 DF, p-value: < 2.2e-16
Aquí están algunos puntos a considerar:
p-value: El coeficiente para “GpC” tiene un valor p de 0.261, lo cual sugiere que no es estadísticamente significativo a un nivel de significancia típico de 0.05. Por otro lado, el coeficiente para “Generosity” también tiene un valor p alto de 0.881, lo que indica que no es significativo en absoluto.
Valor p global del modelo: El valor p del estadístico F del modelo actualizado es extremadamente pequeño (< 2.2e-16), lo que indica que el modelo en su conjunto sigue siendo altamente significativo. Esto sugiere que las variables “Family”, “LE” y “Freedom” siguen siendo importantes para explicar la variabilidad en la percepción de la felicidad, incluso después de añadir las variables “GpC” y “Generosity”.
R-cuadrado ajustado: El R-cuadrado ajustado del modelo actualizado es 0.7556, lo que indica que aproximadamente el 75.56% de la variabilidad en la variable de respuesta “HS” se explica por el conjunto de variables incluidas en el modelo. El R-cuadrado ajustado no muestra un aumento significativo después de agregar las variables “GpC” y “Generosity”, lo cual puede sugerir que estas variables no aportan mucha información adicional al modelo.
En general, al evaluar los resultados, parece que las variables “GpC” y “Generosity” no son estadísticamente significativas en la explicación de la percepción de la felicidad (“HS”). Estos resultados sugieren que es posible que no sea adecuado incluir estas variables en el modelo, ya que no aportan una mejora significativa en la capacidad explicativa del modelo y no son significativas por sí mismas.
# Establecer "Sub-Saharan Africa" como la categoría de referencia
df$Region <- relevel(df$Region, ref = "Sub-Saharan Africa")
# Ajustar el modelo final ModelF con la variable "Region" añadida
ModelF <- lm(HS ~ Family + LE + Freedom + Region, data = df)
# Mostrar los resultados del modelo final
summary(ModelF)
##
## Call:
## lm(formula = HS ~ Family + LE + Freedom + Region, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.32749 -0.27865 -0.00209 0.33207 1.42999
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.38882 0.17242 13.855 < 2e-16 ***
## Family 1.36311 0.22301 6.112 8.74e-09 ***
## LE 1.65909 0.40315 4.115 6.48e-05 ***
## Freedom 1.71330 0.36400 4.707 5.85e-06 ***
## RegionAustralia and New Zealand 1.00197 0.44923 2.230 0.027266 *
## RegionCentral and Eastern Europe 0.24430 0.20425 1.196 0.233623
## RegionEastern Asia -0.00755 0.31863 -0.024 0.981129
## RegionLatin America and Caribbean 0.74518 0.20011 3.724 0.000281 ***
## RegionMiddle East and Northern Africa 0.48654 0.20943 2.323 0.021568 *
## RegionNorth America 1.16719 0.44021 2.651 0.008913 **
## RegionSoutheastern Asia 0.09973 0.23314 0.428 0.669458
## RegionSouthern Asia 0.16685 0.23541 0.709 0.479609
## RegionWestern Europe 0.69233 0.26963 2.568 0.011257 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5235 on 144 degrees of freedom
## Multiple R-squared: 0.8059, Adjusted R-squared: 0.7898
## F-statistic: 49.84 on 12 and 144 DF, p-value: < 2.2e-16
En la interpretación del modelo, podemos observar lo siguiente:
Las variables “Family”, “LE”, y “Freedom” tienen coeficientes positivos, lo que indica una relación positiva con la variable de respuesta. Esto sugiere que a medida que aumenta el valor de estas variables predictoras, se espera un aumento en el valor de la variable de respuesta.
Las variables categóricas que representan las diferentes regiones tienen coeficientes estimados que indican la diferencia en el valor esperado de la variable de respuesta en comparación con la categoría de referencia (que no está incluida en la tabla).
La calidad del modelo:
El R cuadrado múltiple es 0.806, lo que indica que aproximadamente el 80.6% de la variabilidad en la variable de respuesta se explica por el modelo y las variables predictoras incluidas.
El R cuadrado ajustado es 0.7869, que tiene en cuenta el número de variables predictoras y los grados de libertad ajustados.
El valor p asociado al estadístico F es muy pequeño (< 2.2e-16), lo que indica que el modelo en su conjunto es altamente significativo.
En general, este modelo parece tener una buena calidad de ajuste y varias variables predictoras tienen una influencia significativa en la variable de respuesta.
# Calcular los valores medios de HS por Region
media_HS_por_Region <- aggregate(HS ~ Region, data = df, FUN = mean)
media_HS_por_Region
## Region HS
## 1 Sub-Saharan Africa 4.136421
## 2 Australia and New Zealand 7.323500
## 3 Central and Eastern Europe 5.370690
## 4 Eastern Asia 5.624167
## 5 Latin America and Caribbean 6.101750
## 6 Middle East and Northern Africa 5.386053
## 7 North America 7.254000
## 8 Southeastern Asia 5.338889
## 9 Southern Asia 4.563286
## 10 Western Europe 6.685667
Al comparar las medias de la variable dependiente (HS) por región con los coeficientes estimados para cada región en el modelo, podemos hacer las siguientes observaciones:
Las regiones “Australia and New Zealand” y “North America” tienen las medias más altas de la variable HS, con valores de 7.323500 y 7.254000 respectivamente. Estas regiones también tienen los coeficientes más altos en el modelo (1.00197 y 1.16719 respectivamente). Esto indica que estas regiones tienden a tener niveles más altos de felicidad en comparación con la región de referencia “Sub-Saharan Africa”.
La región “Western Europe” tiene la tercera media más alta de HS (6.685667) y también tiene un coeficiente positivo significativo (0.69233) en el modelo. Esto sugiere que esta región también tiende a tener niveles más altos de felicidad en comparación con “Sub-Saharan Africa”.
La región “Latin America and Caribbean” tiene una media de HS de 6.101750 y un coeficiente positivo significativo de 0.74518 en el modelo. Esto indica que esta región tiende a tener niveles más altos de felicidad en comparación con “Sub-Saharan Africa”.
Las regiones restantes (“Central and Eastern Europe”, “Eastern Asia”, “Middle East and Northern Africa”, “Southeastern Asia” y “Southern Asia”) tienen medias de HS que varían entre 4.136421 y 5.624167. Sin embargo, los coeficientes estimados para estas regiones en el modelo son relativamente pequeños y no son estadísticamente significativos. Esto indica que no se encontró una relación lineal clara entre estas regiones y la variable HS en el modelo.
En general, las medias de la variable HS por región son congruentes con los coeficientes estimados en el modelo, lo que indica que las regiones con medias más altas tienden a tener coeficientes más altos y significativos en el modelo.
Para la diagnosis se escoge el ModelF construído y se piden dos gráficos: uno con los valores ajustados frente a los residuos (que nos permitirá ver si la varianza es constante) y el gráfico cuantil-cuantil que compara los residuos del modelo con los valores de una variable que se distribuye normalmente (QQ plot). Interpretad los resultados.
# Crear un data frame con los valores ajustados y los residuos
data <- data.frame(Fitted = ModelF$fitted.values, Residuals = resid(ModelF))
# Crear el gráfico utilizando ggplot2
ggplot(data, aes(x = Fitted, y = Residuals)) +
geom_point(color = "#1f3554", alpha = 0.6) +
geom_hline(yintercept = 0, linetype = "dashed", color = "#888888") +
labs(x = "Valores ajustados", y = "Residuos") +
ggtitle("Gráfico de valores ajustados frente a los residuos") +
theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14),
axis.text = element_text(color = "#1f3554"),
axis.title = element_text(color = "#1f3554"),
panel.grid = element_blank(),
panel.border = element_blank())
La dispersión uniforme de los puntos alrededor del valor cero sugiere que no hay una relación sistemática entre los valores ajustados y los residuos. Esto es positivo, ya que indica que el modelo está capturando adecuadamente la relación entre las variables explicativas y la variable de respuesta.
# Crear un data frame con los residuos
data <- data.frame(Residuals = resid(ModelF))
# Crear el gráfico utilizando ggplot2
ggplot(data, aes(sample = Residuals)) +
stat_qq() +
stat_qq_line(color = "red") +
labs(title = "Gráfico cuantil-cuantil (QQ plot) de los residuos") +
theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14),
axis.text = element_text(color = "#1f3554"),
axis.title = element_text(color = "#1f3554"),
panel.grid = element_blank(),
panel.border = element_blank())
La mayoría de los puntos de los residuos se alinean cerca de la distribución normal teórica, esto indica una buena aproximación a una distribución normal.
Sin embargo, es importante tener en cuenta las desviaciones en los extremos del gráfico, que puede indicar que hay valores atípicos o que la distribución de los residuos no sigue una distribución normal en esas regiones específicas.
Según ModelF, calculad el valor de percepción de la felicidad, HS, de un país hipotético de la zona de Latin America and Caribbean, que hubiera obtenido las puntuaciones siguientes: Freedom= 0.5, Family = 1.2 y LE=0.90.
# Coeficientes del modelo ModelF
intercept <- 2.3804417
coef_family <- 1.3622877
coef_le <- 1.6634834
coef_freedom <- 1.7076698
coef_latin_america <- 0.7429322
# Valores de las variables para el país hipotético
family <- 1.2
le <- 0.9
freedom <- 0.5
# Cálculo de HS
hs <- intercept + coef_family * family + coef_le * le + coef_freedom * freedom + coef_latin_america
hs
## [1] 7.109089
La predicción de puntuación de felicidad (HS) del país hipotético es de 7.11.
Se quiere estudiar cuáles son los factores que más influyen en la percepción de los habitantes de cada país sobre la felicidad. Para ello, primero se creará una nueva variable dicotómica llamada HS_re. Esta nueva variable está relacionada con los valores de la variable HS. Se codificará de la siguiente forma: “unhappy or neutral”, con valores de HS de 0 a 6, y “happy” con valores de HS mayores de 6. Posteriormente se le dará el valor 0 a “unhappy” y el valor 1 a “happy”.
# Crear la variable dicotómica HS_re
df$HS_re <- ifelse(df$HS <= 6, "unhappy or neutral", "happy")
# Asignar valores numéricos: 0 a "unhappy" y 1 a "happy"
df$HS_re <- ifelse(df$HS_re == "unhappy or neutral", 0, 1)
summary(df$HS_re)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.0000 0.0000 0.2994 1.0000 1.0000
Para poder estimar de forma más objetiva la precisión del modelo, separaremos el conjunto de datos en dos partes: el conjunto de entrenamiento (training) y el conjunto de prueba (testing). Ajustaremos el modelo de regresión logística con el conjunto de entrenamiento, y evaluaremos la precisión con el conjunto de prueba. Se pide:
Generad los conjuntos de datos para entrenar el modelo (training) y para testarlo (testing). Se puede fijar el tamaño de la muestra de entrenamiento a un 80% del original.
set.seed(123) # Establecer una semilla para la reproducibilidad
# Dividir el conjunto de datos en conjuntos de entrenamiento y prueba
indice_entrenamiento <- sample(1:nrow(df), floor(0.8 * nrow(df)))
training <- df[indice_entrenamiento, ]
testing <- df[-indice_entrenamiento, ]
Tomando como base el conjunto de datos training:
# Estimar el modelo de regresión logística
modelo <- glm(HS_re ~ LE + Freedom + Generosity, data = training, family = binomial)
# Imprimir el resumen del modelo
summary(modelo)
##
## Call:
## glm(formula = HS_re ~ LE + Freedom + Generosity, family = binomial,
## data = training)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.2035 -0.4866 -0.1802 0.4111 2.4099
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -10.40441 1.86457 -5.580 2.40e-08 ***
## LE 8.86545 2.03712 4.352 1.35e-05 ***
## Freedom 9.91331 2.78045 3.565 0.000363 ***
## Generosity -0.06667 2.37210 -0.028 0.977578
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 151.859 on 124 degrees of freedom
## Residual deviance: 83.501 on 121 degrees of freedom
## AIC: 91.501
##
## Number of Fisher Scoring iterations: 6
A la vista de los resultados, las variables que seleccionaría para el modelo son “LE” y “Freedom”. Estas dos variables tienen coeficientes significativos (p-valor < 0.05) y parecen estar relacionadas con la variable de respuesta en el modelo.
La variable “Generosity” no es significativa (p-valor > 0.05), lo que significa que no parece tener un efecto significativo en la variable de respuesta en el modelo.
# Estimar el modelo de regresión logística
modelo <- glm(HS_re ~ LE + Freedom, data = training, family = binomial)
# Imprimir el resumen del modelo
summary(modelo)
##
## Call:
## glm(formula = HS_re ~ LE + Freedom, family = binomial, data = training)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.1992 -0.4844 -0.1811 0.4117 2.4116
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -10.406 1.863 -5.585 2.34e-08 ***
## LE 8.864 2.036 4.354 1.33e-05 ***
## Freedom 9.883 2.563 3.856 0.000115 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 151.859 on 124 degrees of freedom
## Residual deviance: 83.501 on 122 degrees of freedom
## AIC: 89.501
##
## Number of Fisher Scoring iterations: 6
Además, comparando los dos modelos, ambos tienen el mismo valor de residual deviance (83.501), lo que implica que ambos modelos tienen el mismo ajuste a los datos. Sin embargo, el segundo modelo tiene un valor de AIC más bajo (89.501), lo que indica que tiene un mejor equilibrio entre el ajuste y la complejidad en comparación con el primer modelo (AIC de 91.501). Dado esto, sería razonable excluir la variable “Generosity” del modelo.
# Estimar el modelo de regresión logística
model <- glm(HS_re ~ LE + Freedom + GC, data = training, family = binomial)
# Obtener el resumen del modelo
summary(model)
##
## Call:
## glm(formula = HS_re ~ LE + Freedom + GC, family = binomial, data = training)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.3021 -0.5053 -0.1663 0.2767 2.2180
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -10.488 1.924 -5.453 4.96e-08 ***
## LE 9.097 2.103 4.325 1.53e-05 ***
## Freedom 8.196 2.753 2.977 0.00291 **
## GC 4.792 3.037 1.578 0.11467
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 151.859 on 124 degrees of freedom
## Residual deviance: 80.973 on 121 degrees of freedom
## AIC: 88.973
##
## Number of Fisher Scoring iterations: 6
La variable “GC” tiene un coeficiente estimado de 4.792 y un valor p de 0.11467. El valor p no es significativamente pequeño (mayor que 0.05), lo que indica que no hay suficiente evidencia para afirmar una relación significativa entre la “GC” y “HS_re”.
Con todo y con eso vamos a estudiar la presencia o no de colinealidad entre “GC”y “Freedom”.
# Calcular los factores de inflación de la varianza (VIF) para cada variable
vif_results <- vif(model)
# Muestra los resultados de los VIF
print(vif_results)
## LE Freedom GC
## 1.086859 1.153947 1.196147
Los VIF proporcionan una medida de la colinealidad. Valores de VIF por encima de 5 o 10 se consideran indicativos de colinealidad problemática. En este caso podemos observar que no existe colinealidad significativa entre ninguna de nuestras variables independientes.
Ahora vamos a analizar si nos encontramos en presencia de una variable confusora:
# Estimar el modelo de regresión logística
model <- glm(HS_re ~ LE + Freedom, data = training, family = binomial)
# Obtener el resumen del modelo
summary(model)
##
## Call:
## glm(formula = HS_re ~ LE + Freedom, family = binomial, data = training)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.1992 -0.4844 -0.1811 0.4117 2.4116
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -10.406 1.863 -5.585 2.34e-08 ***
## LE 8.864 2.036 4.354 1.33e-05 ***
## Freedom 9.883 2.563 3.856 0.000115 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 151.859 on 124 degrees of freedom
## Residual deviance: 83.501 on 122 degrees of freedom
## AIC: 89.501
##
## Number of Fisher Scoring iterations: 6
Al comparar los coeficientes estimados y la significancia estadística de las variables “LE” y “Freedom” en el modelo de regresión logística con y sin la variable “GC”, se observa que la inclusión de “GC” no tiene un impacto significativo en los coeficientes ni en la significancia de las otras variables.
Esto sugiere que la variable “GC” no actúa como una variable confusora en este modelo, ya que no está afectando sustancialmente la relación entre las variables “LE”, “Freedom” y la variable dependiente “HS_re”.
En base a estos puntos, podemos considerar eliminar la variable “GC” del modelo debido a su valor p no significativo.
training$Region <- as.character(training$Region)
training$Region_re <- ifelse(grepl("Africa", training$Region), "Africa",
ifelse(grepl("Asia", training$Region), "Asia",
ifelse(training$Region %in% c("Australia and New Zealand", "North America"), "A_A_NZ",
ifelse(training$Region %in% c("Western Europe", "Central and Eastern Europe",
"Latin America and Caribbean"), training$Region, NA))))
training$Region_re <- factor(training$Region_re, levels = c("Africa", "Asia", "A_A_NZ",
"Western Europe", "Latin America and Caribbean",
"Central and Eastern Europe"))
training$Region_re <- relevel(training$Region_re, ref = "Central and Eastern Europe")
ModlgF <- glm(HS_re ~ LE + Freedom + Region_re, family = binomial, data = training)
summary(ModlgF)
##
## Call:
## glm(formula = HS_re ~ LE + Freedom + Region_re, family = binomial,
## data = training)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.07654 -0.25707 -0.08044 0.27468 2.29560
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -16.127 3.547 -4.547 5.45e-06 ***
## LE 12.842 3.414 3.762 0.000169 ***
## Freedom 11.036 3.611 3.057 0.002238 **
## Region_reAfrica 3.902 1.508 2.588 0.009643 **
## Region_reAsia 1.249 1.535 0.814 0.415816
## Region_reA_A_NZ 17.322 1898.991 0.009 0.992722
## Region_reWestern Europe 1.388 1.394 0.996 0.319377
## Region_reLatin America and Caribbean 4.113 1.359 3.027 0.002471 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 151.859 on 124 degrees of freedom
## Residual deviance: 61.683 on 117 degrees of freedom
## AIC: 77.683
##
## Number of Fisher Scoring iterations: 16
Podemos comparar el modelo final con el modelo más simple que solo incluía las variables “LE” y “Freedom”.
En el modelo final, se observa una disminución en la deviance residual, pasando de 83.501 a 61.683, y un menor valor de AIC, pasando de 91.501 a 77.683. Estos indicadores sugieren que el modelo final tiene un mejor ajuste en comparación con el modelo más simple.
Además, al evaluar los coeficientes estimados, se observa que algunas de las variables indicadoras de región tienen valores de p significativos, lo que indica que estas variables aportan información adicional al modelo.
Observamos un Std. Error de la región A_A_NZ es estremadamente grande, con un valor de 1898.796. Esto puede deberse a que la mayoría de los casos en esta región puedan tener el mismo valor de la variable de respuesta (es decir, son felices) y el modelo puede tener dificultades para encontrar patrones o relaciones significativas entre las variables predictoras y la variable de respuesta.
Cuando hay una falta de variabilidad en la variable de respuesta en una región específica, puede generar un problema conocido como “sesgo de región” o “problema de separabilidad”. Esto ocurre cuando la variable de respuesta está altamente sesgada en una categoría específica en una región, lo que dificulta el ajuste y la interpretación adecuada del modelo. Vamos a investigar la causa de ese Std. Error:
ggplot(training, aes(x = HS_re)) +
geom_histogram(bins = 2, fill = "#1f3554", color = "white", alpha = 0.8) +
facet_wrap(~ Region_re, nrow = 2) +
theme_minimal() +
theme(axis.text = element_text(color = "#1f3554"),
strip.text = element_text(color = "#1f3554"),
panel.grid = element_blank(),
panel.border = element_blank(),
legend.position = "none")
Como podemos observar, en nuestro conjunto “training” todos los valores de A_A_NZ tiene el valor 1 (happy). Vamos a analizar si pasa solo en nuestro conjunto “trainig”:
# Crear tabla de HS_re vs Region
t <- table(df$Region, df$HS_re)
kable(t)
0 | 1 | |
---|---|---|
Sub-Saharan Africa | 38 | 0 |
Australia and New Zealand | 0 | 2 |
Central and Eastern Europe | 27 | 2 |
Eastern Asia | 5 | 1 |
Latin America and Caribbean | 10 | 14 |
Middle East and Northern Africa | 12 | 7 |
North America | 0 | 2 |
Southeastern Asia | 6 | 3 |
Southern Asia | 7 | 0 |
Western Europe | 5 | 16 |
Podemos observar que en nuestro conjunto de datos “df” todos los valores también son “happy” para las regiones de “North América” y “Australia and New Zealand”.
Para mejorar el modelo, podríamos considerar algunas opciones:
Obtener más datos: Si es posible, recopilar más datos de diferentes regiones o de las regiones mencionadas para aumentar la variabilidad en los valores de la variable de respuesta.
Reevaluar las variables predictoras: Verificar si las variables predictoras que estamos utilizando en el modelo son adecuadas para capturar las diferencias entre las regiones. Puede ser necesario considerar otras variables relevantes que puedan explicar mejor la variabilidad en la variable de respuesta.
Revisar el enfoque del modelo: Evalúar si la regresión logística es el enfoque adecuado para nuestro problema.
En nuestro modelo, dado que todos los coeficientes estimados son positivos, implica que todas las variables son factores de riesgo para la felicidad.
Según los resultados de ModlgF, calculad las OR de cada una de las variables explicativas e interpretad.
# Calcular OR
t <- exp(coefficients(ModlgF))
kable(t)
x | |
---|---|
(Intercept) | 1.000000e-07 |
LE | 3.778478e+05 |
Freedom | 6.209278e+04 |
Region_reAfrica | 4.952001e+01 |
Region_reAsia | 3.488303e+00 |
Region_reA_A_NZ | 3.331609e+07 |
Region_reWestern Europe | 4.008765e+00 |
Region_reLatin America and Caribbean | 6.111656e+01 |
Los Odds Ratios (OR) son estimaciones que se utilizan en un modelo logístico para interpretar el efecto de las variables explicativas sobre la variable de interés. Los OR representados para cada variable son los siguientes:
“LE”: El OR asociado a la variable LE es 3.778478e+05. Esto significa que, para cada unidad de incremento en la variable LE, la odds (razón de probabilidades) de que ocurra el evento de interés se incrementa en aproximadamente 3.78e+05 veces.
“Freedom”: El OR asociado a la variable Freedom es 6.209278e+04. Esto indica que, para cada unidad de incremento en la variable Freedom, la odds de que ocurra el evento de interés se incrementa en aproximadamente 6.21e+04 veces.
“Africa”: El OR asociado a la variable “Africa” es 4.952001e+01. Esto significa que la región de África tiene una odds de ocurrencia del evento de interés aproximadamente 49.52 veces mayor en comparación con la región de referencia.
“Asia”: El OR asociado a la variable “Asia” es 3.488303. Esto indica que la región de Asia tiene una odds de ocurrencia del evento de interés aproximadamente 3.49 veces mayor en comparación con la región de referencia.
“A_A_NZ”: El OR asociado a la variable “A_A_NZ” es 3.331609e+07. Esto significa que la región de Australia and New Zealand tiene una odds de ocurrencia del evento de interés aproximadamente 3.33e+07 veces mayor en comparación con la región de referencia.
“Western Europe”: El OR asociado a la variable Region_reWestern Europe es 4.008765. Esto indica que la región de Western Europe tiene una odds de ocurrencia del evento de interés aproximadamente 4.01 veces mayor en comparación con la región de referencia.
“Latin America and Caribbean”: El OR asociado a la variable Region_reLatin America and Caribbean es 61.11656. Esto significa que la región de Latin America and Caribbean tiene una odds de ocurrencia del evento de interés aproximadamente 61.1 veces mayor en comparación con la región de referencia.
A continuación analizad la precisión de ModlgF, comparando la predicción del modelo contra el conjunto de prueba (testing). Se asumirá que la predicción del modelo es 1, happy, si la probabilidad del modelo de regresión logística es superior o igual a 0.8 y 0 en caso contrario. Analizad la matriz de confusión y las medidas de sensibilidad y especificidad.
testing$Region <- as.character(testing$Region)
testing$Region_re <- ifelse(grepl("Africa", testing$Region), "Africa",
ifelse(grepl("Asia", testing$Region), "Asia",
ifelse(testing$Region %in% c("Australia and New Zealand",
"North America"), "A_A_NZ",
ifelse(testing$Region %in% c("Western Europe", "Central and Eastern Europe",
"Latin America and Caribbean"), testing$Region, NA))))
testing <- subset(testing, Region_re != "A_A_NZ")
probabilities <- predict(ModlgF, newdata = testing, type = "response")
predictions <- ifelse(probabilities >= 0.8, 1, 0)
confusionMatrix(table(predictions, testing$HS_re))
## Confusion Matrix and Statistics
##
##
## predictions 0 1
## 0 20 3
## 1 2 7
##
## Accuracy : 0.8438
## 95% CI : (0.6721, 0.9472)
## No Information Rate : 0.6875
## P-Value [Acc > NIR] : 0.03739
##
## Kappa : 0.6262
##
## Mcnemar's Test P-Value : 1.00000
##
## Sensitivity : 0.9091
## Specificity : 0.7000
## Pos Pred Value : 0.8696
## Neg Pred Value : 0.7778
## Prevalence : 0.6875
## Detection Rate : 0.6250
## Detection Prevalence : 0.7188
## Balanced Accuracy : 0.8045
##
## 'Positive' Class : 0
##
El modelo ha acertado 20 de 22 instancias clasificadas como “unhappy” y 7 de 10 instancias clasificadas como “happy”. Esto indica que el modelo ha tenido un buen desempeño al clasificar la clase “unhappy”, con una alta tasa de aciertos. Sin embargo, en el caso de la clase “happy”, el modelo ha tenido un rendimiento ligeramente inferior, acertando solo 7 de las 10 instancias.
Según los resultados proporcionados, la sensibilidad del modelo es del 90.91%, lo que indica que ha identificado correctamente el 90.91% de las instancias de la clase “happy”. Por otro lado, la especificidad del modelo es del 70%, lo que significa que ha identificado correctamente el 70% de las instancias de la clase “unhappy”.
Una alta sensibilidad indica que el modelo es bueno para detectar instancias de la clase “happy”, mientras que una alta especificidad indica que el modelo es bueno para detectar instancias de la clase “unhappy”. En este caso, la sensibilidad es más alta que la especificidad, lo que sugiere que el modelo tiene un mejor rendimiento en la detección de la clase “happy” que en la detección de la clase “unhappy”.
Identificad aquéllos países cuya probabilidad de estar entre los países más felices sea superior al 80%, según el modelo de predicciones contra el conjunto de prueba (testing), calculado anteriormente. Comparad este resultado con el ranking inicial de países más felices.
# Obtener los índices de los países con probabilidad superior al 80%
indices_happy <- which(predictions == 1)
# Obtener los nombres de los países correspondientes
paises_felices_test <- testing$Country[indices_happy]
paises_felices <- df$Country[indices_happy]
# Imprimir los países identificados
paises_felices_test
## [1] Denmark Switzerland Iceland
## [4] Sweden Belgium Luxembourg
## [7] United Arab Emirates Nicaragua Hong Kong
## 157 Levels: Afghanistan Albania Algeria Angola Argentina Armenia ... Zimbabwe
paises_felices
## [1] Denmark Switzerland Iceland Norway Finland Canada
## [7] Netherlands Israel Belgium
## 157 Levels: Afghanistan Albania Algeria Angola Argentina Armenia ... Zimbabwe
n <- nrow(df)
Comparando los resultados del modelo con el ranking inicial de los países más felices, podemos observar algunas diferencias significativas:
El modelo predice a Suecia, Luxemburgo, Emiratos Árabes Unidos, Nicaragua y Hong Kong como países más felices, pero ninguno de ellos aparece en el ranking inicial de los países más felices.
Noruega, Finlandia, Canadá, Países Bajos e Israel, que se encuentran en el ranking inicial, no están presentes en la lista de predicciones del modelo.
Ambos rankings coinciden en incluir a Dinamarca, Suiza, Bélgica e Islandia como países felices.
En resumen, hay algunas discrepancias entre los resultados del modelo y el ranking inicial de los países más felices. Las diferencias entre los resultados del modelo y el ranking inicial pueden deberse a las diferencias en las variables consideradas, enfoques de análisis y características de las muestras de datos.
La devianza nula es de 151.859, mientras que la devianza residual es de 61.683. Comparando estos valores, podemos observar que la devianza residual es significativamente menor que la devianza nula. Esto indica que el modelo tiene un mejor ajuste que un modelo simple que solo consideraría la media de la variable de respuesta.
En este caso, la diferencia entre la devianza nula y la devianza residual sugiere que el modelo ModlgF tiene una mayor precisión en la predicción de la variable dependiente.
Nota: los grados de libertad se calcularán como la diferencia de grados de libertad entre el modelo nulo y residual.
sum(residuals(ModlgF,type="pearson")^2)
## [1] 67.59899
1-pchisq(sum(residuals(ModlgF,type="pearson")^2),7)
## [1] 4.509171e-12
El valor de la suma de los residuos al cuadrado (67.59899) indica que existen diferencias significativas entre los valores observados y los valores predichos por el modelo de regresión logística. Un valor más bajo indicaría un mejor ajuste del modelo a los datos.
El p-valor asociado al estadístico del contraste Chi-cuadrado (4.509171e-12) es extremadamente pequeño, lo que sugiere una significancia estadística muy alta. Esto significa que existe una diferencia significativa entre el modelo ajustado y el modelo nulo, lo que respalda la validez del modelo de regresión logística para predecir la variable dependiente.
Dibujad la curva ROC y calcular el área debajo de la curva con ModlgF. Discutid el resultado.
# Obtener las probabilidades predichas por el modelo
probabilities <- predict(ModlgF, newdata = testing, type = "response")
# Calcular el AUC utilizando la librería pROC
roc_obj <- roc(testing$HS_re, probabilities)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
auc <- auc(roc_obj)
# Dibujar la curva ROC
plot(roc_obj, main = "Curva ROC", xlab = "Tasa de Falsos Positivos", ylab = "Tasa de Verdaderos Positivos")
lines(roc_obj, col = "blue")
legend("bottomright", legend = paste("AUC =", round(auc, 2)), col = "blue", lty = 1, cex = 0.8)
Un valor de 0.84 para el Área bajo la Curva ROC (AUC) indica un buen rendimiento del modelo en términos de clasificación, lo que indica su capacidad para predecir correctamente las etiquetas de clase basándose en las variables predictoras seleccionadas.
Presentad una tabla, de tal forma que en cada fila se detallen los resultados principales de cada apartado. Ejemplo correspondiente al apartado 1: la pregunta de investigación planteada, los resultados obtenidos (la significación o no de las variables explicativas, valores del coeficiente de determinación„) y la conclusiones. Se podría tomar un formato similar a la actividad anterior.
Apartado | Pregunta | Resultado | Conclusiones |
---|---|---|---|
1 | Regresión lineal | ||
1.1 | Modelo de regresión lineal (variables cuantitativas) |
Family: Coef = 1.49 ; p-value = 3.85 e-10 LE: Coef = 2.37 ; p-value < 2e-16 Freedom: Coef = 2.37 ; p-value = 1.41e-07 Residual Estandard Error: 0.563 R-squared: 0.7615 F-stastic: 162.8 p value: < 2.2e-06 |
Los resultados indican que el modelo tiene un buen ajuste global y que las variables explicativas (Family, LE y Freedom) son significativas en la explicación de la percepción de la felicidad (HS). |
Family: Coef = 1.47 ; p-value = 7.45 e-10 LE: Coef = 2.34 ; p-value < 2e-16 Freedom: Coef = 1.95 ; p-value = 7.17e-07 GpC: Coef = 0.0018 ; p-value = 0.261 Freedom: Coef = -0.055 ; p-value = 0.881 Residual Estandard Error: 0.5664 R-squared: 0.7634 F-statistic: 97.47 p value: < 2.2e-06 |
Al evaluar los resultados, parece que las variables “GpC” y “Generosity” no son estadísticamente significativas. | ||
1.2 | Modelo de regresión lineal (variables cuantitativas y cualitativas) |
Family: Coef = 1.49 ; p-value = 3.85 e-10 LE: Coef = 2.37 ; p-value < 2e-16 Freedom: Coef = 2.37 ; p-value = 1.41e-07 Australia and New Zealand: Coef = 1.00 ; p-value = 0.03 Central and Easter Europe: Coef = 0.24 ; p-value = 0.234 Eastern Asia: Coef = -0.0075 ; p-value = 0.98 Latin América and Caribean: Coef = 0.74; p-value = 0.0003 East and Northern Africa: Coef = 0.49 ; p-value = 0.02 North America: Coef = 1.17 ; p-value = 0.0089 Southeastern Asia: Coef = 0.10 ; p-value = 0.67 Southern Asia: Coef = 0.17 ; p-value = 0.48 Western Europe: Coef = 0.69 ; p-value = 0.01 Residual Estandard Error: 0.5235 R-squared: 0.8059 F-stastic: 49.84 p value: < 2.2e-06 |
El modelo parece tener una buena calidad de ajuste y varias variables predictoras tienen una influencia significativa en la variable de respuesta. |
Valores medios de la puntuación de felicidad por Region Sub-Saharan Africa: 4.136421 Australia and New Zealand: 7.323500 Central and Eastern Europe: 5.370690 Eastern Asia: 5.624167 Latin America and Caribbean: 6.101750 Middle East and Northern Africa: 5.386053 North America: 7.254000 Southeastern Asia: 5.338889 Southern Asia: 4.563286 Western Europe: 6.6856 |
Las medias de la variable HS por región son congruentes con los coeficientes estimados en el modelo, lo que indica que las regiones con medias más altas tienden a tener coeficientes más altos y significativos en el modelo. | ||
1.3 | Gráfico de valores ajustados frente a los residuos. Gráfico cuantil-cuantil (QQ plot) de los residuos |
La dispersión uniforme de los puntos alrededor del valor cero sugiere que no hay una relación sistemática entre los valores ajustados y los residuos. Esto es positivo, ya que indica que el modelo está capturando adecuadamente la relación entre las variables explicativas y la variable de respuesta. La mayoría de los puntos de los residuos se alinean cerca de la distribución normal teórica, esto indica una buena aproximación a una distribución normal. |
|
1.4 | Predicción del modelo | Predicción HS = 7.11 | La puntuación de felicidad (HS) del país hipotético es de 7.11. |
2. | Regresión logística | ||
2.1 | Generación del conjunto de datos | Conjutos “training” y “testing” | |
2.2 | Estimación del modelo con el conjunto de entrenamiento e interpretación | Modelo con Ge nerosity**: LE: Coef = 8.87 ; p-value = 1.35 e-05 Freedom: Coef = 9.91 ; p-value = 0.0004 Generosity: Coef = -0.67 ; p-value = 0.9976 Residual deviance: 83.501 AIC: 91.501 LE: Coef = 8.86 ; p-value = 1.33 e-10 Freedom: Coef = 9.88 ; p-value = 0.0001 Residual deviance: 83.501 AIC: 89.501 |
El análisis revela que la variable “Generosity” no muestra una relación significativa con la variable de respuesta en el modelo. No hay evidencia suficiente para afirmar que la generosidad tenga un impacto significativo en la felicidad. En base a estos resultados, sería apropiado excluir la variable “Generosity” del modelo, ya que no parece tener un efecto significativo en la variable de respuesta. |
Modelo con GC: LE: Coef = 9.10 ; p-value = 4.96 e-10 Freedom: Coef = 2.37 ; p-value = 0.0029 GC: Coef = 4.79 ; p-value = 0.1147 Residual deviance: 83.501 AIC: 88.973 LE: 1.07 Freedom: 1.15 GC: 1.20 |
La variable “GC” no es estadísticamente significativa. Al comparar los coeficientes estimados y la significancia estadística de las variables “LE” y “Freedom” en el modelo con y sin la variable “GC”, se concluye que la inclusión de “GC” no afecta de manera significativa los coeficientes ni la significancia de las otras variables. | ||
LE: Coef = 12.84 ; p-value = 0.0002 Freedom: Coef = 11.04 ; p-value = 0.0022 Africa: Coef = 3.09 ; p-value = 0.0097 Asia: Coef = 1.25 ; p-value = 0.4158 A_ANZ: Coef = 17.32 ; p-value = 0.9927 Western Europe: Coef = 1.39 ; p-value = 0.3193 Latin America and Caribean: Coef = 4.11 ; p-value = 0.0025 Residual deviance: 61.683 AIC: 77.683 |
En el modelo final, se observa una disminución en la deviance residual, pasando de 83.501 a 61.683, y un menor valor de AIC, pasando de 91.501 a 77.683. Estos indicadores sugieren que el modelo final tiene un mejor ajuste en comparación con el modelo más simple. | ||
2.3 | Cálculo de las OR | OR(LE) = 3.778478e+05 OR(Freedom) = 6.209278e+04 OR(Africa) = 49.52001 OR(Asia) = 3.488303 OR(A_A_NZ) = 3.331609e+07 OR(Western Europe) = 4.008765 OR(Latin America and Caribbean) = 61.11656 |
Para “LE” y “Freedom” la odds de que ocurra el evento de interés son
incrementales. Para las demás variables tienen una odds de ocurrencia del evento de interés mayor en comparación con la región de referencia. |
2.4 | Matriz de confusión | Accuracy = 0.8438 Sensitivity : 0.9091 Specificity : 0.7000 |
La sensibilidad del modelo indica que ha identificado correctamente la mayoría de las instancias de la clase “happy”, mientras que la especificidad indica que ha identificado correctamente la mayoría de las instancias de la clase “unhappy”. Sin embargo, la sensibilidad es más alta que la es pecificidad, lo que indica que el modelo es mejor para detectar instancias de la clase “happy” que de la clase “unhappy”. |
2.5 | Predicción | Predicción paises más felices: Switzerland Iceland Sweden Belgium Luxembourg United Arab Emirates Nicaragua Hong Kong |
Hay algunas discrepancias entre los resultados del modelo y el ranking inicial de los países más felices. Las diferencias entre los resultados del modelo y el ranking inicial pueden deberse a las diferencias en las variables consideradas, enfoques de análisis y características de las muestras de datos. |
2.6 | Bondad del ajuste | Devianza nula: 151.859, Devianza residual: 61.683. |
La diferencia entre la devianza nula y la devianza residual sugiere que el modelo ModlgF tiene una mayor precisión en la predicción de la variable dependiente. |
p-valor Chi-cuadrado: 4.509171e-12 | El p-valor asociado al estadístico del contraste Chi-cuadrado es extremadamente pequeño, lo que sugiere una significancia estadística muy alta. | ||
2.7 | Curva ROC | AUCROC: 0.84 | Indica un buen rendimiento del modelo en términos de clasificación, lo que indica su capacidad para predecir correctamente las etiquetas de clase basándose en las variables predictoras seleccionadas. |
Resumid las conclusiones del estudio para una audiencia no técnica, indicando las respuestas a las preguntasde investigación planteadas. El resumen no debe ocupar más de media página.
Nota: esta pregunta trabaja la competencia de comunicación que es muy importante en el rol de analista de datos.
Los resultados obtenidos mediante el análisis de regresión lineal indican que el modelo utilizado se ajusta bien y que las variables familia, esperanza de vida y libertad son importantes para explicar cómo percibimos la felicidad. Sin embargo, las variables “GpC” y “Generosity” no tienen un impacto significativo en la explicación de la felicidad. Por lo tanto, no es necesario tener en cuenta esas variables en el modelo. En general, el modelo tiene un buen ajuste y las variables que utilizamos para predecir la felicidad tienen una influencia significativa en la misma. Los residuos del modelo están distribuidos de manera uniforme alrededor de cero, lo cual es positivo y sugiere que el modelo captura adecuadamente la relación entre las variables que explican la felicidad y la propia felicidad. Además, la mayoría de los residuos se aproximan a una distribución normal.
En cuanto a los resultados obtenidos mediante el análisis de regresión logística, encontramos que la variable “Generosity” no es relevante en el modelo y no tiene un impacto significativo en la felicidad. Al comparar los dos modelos, descubrimos que el segundo modelo, sin incluir la variable “Generosity”, logra un mejor equilibrio entre el ajuste y la complejidad, por lo que sugerimos eliminar dicha variable del modelo. Además, la variable “GC” no tiene un impacto significativo y recomendamos descartarla debido a su falta de importancia estadística.
El modelo final muestra un mejor ajuste, con una disminución en la devianza residual y un valor más bajo de AIC en comparación con el modelo más simple. Las variables “LE” (esperanza de vida) y “Freedom” (libertad) tienen una influencia adicional en la probabilidad de que ocurra el evento de interés, es decir, influyen en nuestra percepción de la felicidad.
El modelo tiene una alta capacidad para detectar casos en los que las personas se sienten “felices”, pero su capacidad para identificar los casos de “infelicidad” es algo menor. Las discrepancias entre los resultados del modelo y el ranking inicial de los países más felices pueden deberse a diferencias en las variables consideradas y en los enfoques de análisis utilizados.
El modelo tiene una mayor precisión en la predicción de la variable que queremos estudiar, y el valor p asociado al estadístico de Chi-cuadrado indica una alta significancia estadística. El gráfico ROC muestra un buen desempeño del modelo en términos de clasificación, lo cual demuestra su capacidad para predecir correctamente las etiquetas de clase basándose en las variables que hemos seleccionado.