# Instalamos y cargamos las librerías
if(!require(readxl)) install.packages("readxl")
## Cargando paquete requerido: readxl
library(readxl)
library(ggplot2)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
library(knitr)
# Cargamos el archivo
# Nota: Debo asegurarme de que el archivo está en la misma carpeta donde guarde el script de R
df <- read_excel("WorldSustainabilityDS_clean.xlsx")
# Verificamos que se ha cargado
print("Archivo cargado")
## [1] "Archivo cargado"
head(df)
## # A tibble: 6 × 54
## Country CountryCode Year EG.ELC.ACCS.ZS NY.ADJ.NNTY.PC.KD.ZG
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 Aruba ABW 2000 91.7 NA
## 2 Aruba ABW 2001 100 NA
## 3 Aruba ABW 2002 100 NA
## 4 Aruba ABW 2003 100 NA
## 5 Aruba ABW 2004 100 NA
## 6 Aruba ABW 2005 100 NA
## # ℹ 49 more variables: NY.ADJ.SVNX.GN.ZS <dbl>, NY.ADJ.DCO2.GN.ZS <dbl>,
## # NY.ADJ.DRES.GN.ZS <dbl>, NY.ADJ.DFOR.GN.ZS <dbl>, NY.ADJ.DPEM.GN.ZS <dbl>,
## # FB.ATM.TOTL.P5 <dbl>, FM.LBL.BMNY.GD.ZS <dbl>, SE.PRM.UNER.ZS <dbl>,
## # SE.COM.DURS <dbl>, IC.REG.COST.PC.FE.ZS <dbl>, IC.REG.COST.PC.MA.ZS <dbl>,
## # NE.EXP.GNFS.ZS <dbl>, NE.CON.TOTL.ZS <dbl>, NY.GDP.MKTP.CD <dbl>,
## # NY.GDP.PCAP.CD <dbl>, NE.CON.GOVT.ZS <dbl>, NE.DAB.TOTL.ZS <dbl>,
## # NY.GNS.ICTR.ZS <dbl>, NE.IMP.GNFS.ZS <dbl>, FP.CPI.TOTL.ZG <dbl>, …
print("1.0 ¿La esperanza de vida es mayor en los países con alto nivel de ingresos que en el resto?")
## [1] "1.0 ¿La esperanza de vida es mayor en los países con alto nivel de ingresos que en el resto?"
print("1.1. Análisis descriptivo")
## [1] "1.1. Análisis descriptivo"
# Filtramos el año, etiquetamos el paía en nueva columna Income y filtramos valore NA's en las columnas LE e Income
df_pr1 <- filter(
mutate(
filter(df, Year == 2018),
Group = ifelse(Income == "High income", "High Income", "Others"),
LE = SP.DYN.LE00.IN
),
!is.na(LE) & !is.na(Income)
)
# Seleccionamos los valores de LE para cada grupo
grupo_high <- df_pr1$LE[df_pr1$Group == "High Income"]
grupo_otros <- df_pr1$LE[df_pr1$Group == "Others"]
cat("1.2 Hipótesis nula= La esperanza de vida en países ricos es menor o igual al resto.", "\n", "Hipótesis alternativa= La esperanza de vida en países ricos es mayor.")
## 1.2 Hipótesis nula= La esperanza de vida en países ricos es menor o igual al resto.
## Hipótesis alternativa= La esperanza de vida en países ricos es mayor.
#Test
print("1.3 Usaremos un t-test para dos muestras independientes asumiendo varianzas diferentes (Welch). La variable es cuantitativa (años de vida) y comparamos dos grupos distintos de países. Al tener muestras grandes (n>30), el Teorema del Límite Central nos permite usar el test t sin exigir normalidad estricta en los datos originales.")
## [1] "1.3 Usaremos un t-test para dos muestras independientes asumiendo varianzas diferentes (Welch). La variable es cuantitativa (años de vida) y comparamos dos grupos distintos de países. Al tener muestras grandes (n>30), el Teorema del Límite Central nos permite usar el test t sin exigir normalidad estricta en los datos originales."
print("1.4 Aplicación del test, ejecutamos el Test T")
## [1] "1.4 Aplicación del test, ejecutamos el Test T"
t_test_pr1 <- t.test(grupo_high, grupo_otros,
alternative = "greater",
var.equal = FALSE)
# Mostramos el resultado
t_test_pr1
##
## Welch Two Sample t-test
##
## data: grupo_high and grupo_otros
## t = 13.668, df = 169.76, p-value < 2.2e-16
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
## 9.018434 Inf
## sample estimates:
## mean of x mean of y
## 79.96936 69.70942
# Mostramos el resultado
print(t_test_pr1)
##
## Welch Two Sample t-test
##
## data: grupo_high and grupo_otros
## t = 13.668, df = 169.76, p-value < 2.2e-16
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
## 9.018434 Inf
## sample estimates:
## mean of x mean of y
## 79.96936 69.70942
print("1.5 Desarrollo manual del calculo")
## [1] "1.5 Desarrollo manual del calculo"
# Estadísticos por grupo
mean_vals <- tapply(df_pr1$LE, df_pr1$Group, mean)
sd_vals <- tapply(df_pr1$LE, df_pr1$Group, sd)
n_vals <- tapply(df_pr1$LE, df_pr1$Group, length)
stats_pr1 <- data.frame(Group = names(mean_vals),
mean = mean_vals,
sd = sd_vals,
n = n_vals)
# Extraer valores
m1 <- stats_pr1$mean[stats_pr1$Group == "High Income"]
s1 <- stats_pr1$sd[stats_pr1$Group == "High Income"]
n1 <- stats_pr1$n[stats_pr1$Group == "High Income"]
m2 <- stats_pr1$mean[stats_pr1$Group == "Others"]
s2 <- stats_pr1$sd[stats_pr1$Group == "Others"]
n2 <- stats_pr1$n[stats_pr1$Group == "Others"]
# Cálculo del estadístico t
se_diff <- sqrt(s1^2/n1 + s2^2/n2)
t_manual <- (m1 - m2) / se_diff
# Grados de libertad (Welch)
df_welch <- (s1^2/n1 + s2^2/n2)^2 / ( (s1^2/n1)^2/(n1-1) + (s2^2/n2)^2/(n2-1) )
# Valor p (cola derecha)
p_val_manual <- 1 - pt(t_manual, df_welch)
cat("T calculado:", t_manual, "P-value manual:", p_val_manual)
## T calculado: 13.66783 P-value manual: 0
cat("1.6 y 1.7 Existen datos estadísticos significativos para afirmar que la esperanza de vida es mayor en los países de ingresos altos\n","valor P manual:", format(p_val_manual, nsmall = 5), "\n","los valores del tst primero son:", sprintf("%.5f", t_test_pr1$p.value))
## 1.6 y 1.7 Existen datos estadísticos significativos para afirmar que la esperanza de vida es mayor en los países de ingresos altos
## valor P manual: 0.00000
## los valores del tst primero son: 0.00000
cat("2. Desigualdad a lo largo del tiempo\n", "PR2:¿La desigualdad se reduce en un período de 10 años?\n", "\n", "2.1. Análisis descriptivo\n")
## 2. Desigualdad a lo largo del tiempo
## PR2:¿La desigualdad se reduce en un período de 10 años?
##
## 2.1. Análisis descriptivo
# Filtrar el data frame para quedarnos solo con los años 2008 y 2018
df_filtrado <- df[df$Year %in% c(2008, 2018), ]
# Seleccionar solo las columnas que nos interesan
df_seleccion <- df_filtrado[, c("Country", "Year", "SI.POV.GINI", "Region")]
# Eliminar filas con valores faltantes (NA)
df_pr2 <- na.omit(df_seleccion)
# 2.1.1 Crear el gráfico comparativo
ggplot(df_pr2, aes(x = factor(Year), y = SI.POV.GINI, fill = factor(Year))) +
geom_boxplot() +
labs(title = "Distribución del índice GINI (2008 vs 2018)",
y = "GINI",
x = "Año")

# 2.1.2 Gráfico de Europa y Norteamérica
df_europa <- df_pr2[df_pr2$Region == "Europe and Northern America", ]
ggplot(df_europa, aes(x = factor(Year), y = SI.POV.GINI, fill = factor(Year))) +
geom_boxplot() +
labs(title = "Distribución del índice GINI en Europa y Norteamérica",
y = "Índice GINI", x = "Año")

# top 5 Regional (Europa y Norteamérica)
df_ranking_europa <- df_europa[df_europa$Year == 2018, c("Country", "SI.POV.GINI")]
df_ranking_europa <- df_ranking_europa[order(-df_ranking_europa$SI.POV.GINI), ]
top5_europa <- head(df_ranking_europa, 5)
bottom5_europa <- tail(df_ranking_europa, 5)
tabla_regional <- rbind(
data.frame(Ranking = "Top 5 (Mayor GINI)", top5_europa),
data.frame(Ranking = "Bottom 5 (Menor GINI)", bottom5_europa)
)
print(tabla_regional)
## Ranking Country SI.POV.GINI
## 1 Top 5 (Mayor GINI) United States 41.4
## 2 Top 5 (Mayor GINI) Bulgaria 41.3
## 3 Top 5 (Mayor GINI) Russian Federation 37.5
## 4 Top 5 (Mayor GINI) Romania 35.8
## 5 Top 5 (Mayor GINI) Lithuania 35.7
## 6 Bottom 5 (Menor GINI) Moldova 25.7
## 7 Bottom 5 (Menor GINI) Belarus 25.2
## 8 Bottom 5 (Menor GINI) Czech Republic 25.0
## 9 Bottom 5 (Menor GINI) Slovak Republic 25.0
## 10 Bottom 5 (Menor GINI) Slovenia 24.6
cat("2.2 Hipotesis nula: la desigualdad no ha bajado", "\n", "Hipotesis alternativa: la desigualdad ha disminuido, la diferencia es negativa", "\n", "\n", "2.3 Para este caso vamos a usar el Paired t-test, ya que son los mismos paises medidos en rengos de tiempo diferentes", "\n", "\n", "2.4 Aplicacion del test", "\n", "\n")
## 2.2 Hipotesis nula: la desigualdad no ha bajado
## Hipotesis alternativa: la desigualdad ha disminuido, la diferencia es negativa
##
## 2.3 Para este caso vamos a usar el Paired t-test, ya que son los mismos paises medidos en rengos de tiempo diferentes
##
## 2.4 Aplicacion del test
##
# Convertimos la columna a numérica
df_pr2$SI.POV.GINI <- as.numeric(df_pr2$SI.POV.GINI)
# Transformamos la tabla, pasando los años a columnas seguidos de la letra "Y".
df_paired <- pivot_wider(df_pr2,
names_from = Year,
values_from = SI.POV.GINI,
names_prefix = "Y")
# Eliminar filas con NA
df_paired <- na.omit(df_paired)
# Ver columnas
names(df_paired)
## [1] "Country" "Region" "Y2008" "Y2018"
# Test t pareado
t_test_pr2 <- t.test(df_paired$Y2018, df_paired$Y2008,
paired = TRUE, alternative = "less")
t_test_pr2
##
## Paired t-test
##
## data: df_paired$Y2018 and df_paired$Y2008
## t = -2.643, df = 52, p-value = 0.005417
## alternative hypothesis: true mean difference is less than 0
## 95 percent confidence interval:
## -Inf -0.4721233
## sample estimates:
## mean difference
## -1.288679
# Filtrar manualmente los países de Europa y Norteamérica
df_paired_eur <- df_paired[df_paired$Region == "Europe and Northern America", ]
# Verificamos cuántos países quedaron en la submuestra
cat("\nPaíses emparejados en Europa y Norteamérica:", nrow(df_paired_eur), "\n")
##
## Países emparejados en Europa y Norteamérica: 29
# Aplicamos el test t emparejado (unilateral 'less')
t_test_eur <- t.test(df_paired_eur$Y2018,
df_paired_eur$Y2008,
paired = TRUE,
alternative = "less")
# Mostramos el resultado
print(t_test_eur)
##
## Paired t-test
##
## data: df_paired_eur$Y2018 and df_paired_eur$Y2008
## t = -0.92225, df = 28, p-value = 0.1821
## alternative hypothesis: true mean difference is less than 0
## 95 percent confidence interval:
## -Inf 0.4047998
## sample estimates:
## mean difference
## -0.4793103
cat("\n2.5 Desarrollo ", "\n")
##
## 2.5 Desarrollo
# Calculamos las diferencias (2018 - 2008)
diferencias <- df_paired$Y2018 - df_paired$Y2008
head(df_paired)
## # A tibble: 6 × 4
## Country Region Y2008 Y2018
## <chr> <chr> <dbl> <dbl>
## 1 Angola Sub-Saharan Africa 42.7 51.3
## 2 Argentina Latin America and Caribbean 44.9 41.3
## 3 Armenia Northern Africa and Western Asia 29.2 34.4
## 4 Austria Europe and Northern America 30.4 30.8
## 5 Belgium Europe and Northern America 28.4 27.2
## 6 Bulgaria Europe and Northern America 33.6 41.3
# Calculamos valores estadistidos
d_bar2 <- mean(diferencias) # media de las diferencias
s_d2 <- sd(diferencias) # desviación estándar
n_d2 <- length(diferencias) # número de países
# Estadístico t manual
t_manual <- d_bar2 / (s_d2 / sqrt(n_d2))
# p-valor unilateral, para la hipotesis alternativa
df_t <- n_d2 - 1
p_val_manual <- pt(t_manual, df = df_t)
# Calculamos las diferencias de los mismos peridoos pero en la region eruopa america del norte
diferencias_eur <- df_paired_eur$Y2018 - df_paired_eur$Y2008
df_paired_eur <- na.omit(df_paired_eur)
head(df_paired_eur)
## # A tibble: 6 × 4
## Country Region Y2008 Y2018
## <chr> <chr> <dbl> <dbl>
## 1 Austria Europe and Northern America 30.4 30.8
## 2 Belgium Europe and Northern America 28.4 27.2
## 3 Bulgaria Europe and Northern America 33.6 41.3
## 4 Belarus Europe and Northern America 27.8 25.2
## 5 Switzerland Europe and Northern America 33.8 33.1
## 6 Czech Republic Europe and Northern America 26.3 25
# Calculamos los valores estadisticos
d_bar2eur <- mean(diferencias_eur)
s_d2eur <- sd(diferencias_eur)
n_d2eur <- length(diferencias_eur)
# Estadistico manual T para europa y norte america
t_manualeur <- d_bar2eur / (s_d2eur / sqrt(n_d2eur))
# Valor de P para region europa y north america
df_teur <- n_d2eur - 1
p_val_manualeur <- pt(t_manualeur, df = df_teur)
# Mostrar resultados
cat("\n2.6.1 RESULTADOS PARA EL GLOBAL DE PAISES:\n","Media de las diferencias (d_bar2):", d_bar2, "VS ", "test.estimate:", t_test_pr2$estimate,
"\nEstadístico t manual:", t_manual, "VS test.t:", t_test_pr2$statistic,
"\nP-value manual:", p_val_manual, "VS test.p:","\n", t_test_pr2$p.value,
"\n2.7.1\n",
"Para la media de las diferencias: Tanto el cálculo manual como el t.test coinciden exactamente. Esto significa que, en promedio, el índice GINI en 2018 es 1.29 puntos menor que en 2008\n",
"\nEn el estadistico t: La diferencia es mínima. Ambos indican que la diferencia es negativa en 2018, lo que da fuerza a la hipotesis alternativa.\n",
"\nPara los P-value: Coinciden prácticamente al milímetro. El valor p es muy pequeño (< 0.01), los datos son poco compatibles con la hipótesis nula\n",
"\nEn conclusión, tenemos evidencia suficiente para afirmar que la desigualdad se redujo significativamente entre 2008 y 2018 en los países analizados.\n\n\n")
##
## 2.6.1 RESULTADOS PARA EL GLOBAL DE PAISES:
## Media de las diferencias (d_bar2): -1.288679 VS test.estimate: -1.288679
## Estadístico t manual: -2.642975 VS test.t: -2.642975
## P-value manual: 0.005417203 VS test.p:
## 0.005417203
## 2.7.1
## Para la media de las diferencias: Tanto el cálculo manual como el t.test coinciden exactamente. Esto significa que, en promedio, el índice GINI en 2018 es 1.29 puntos menor que en 2008
##
## En el estadistico t: La diferencia es mínima. Ambos indican que la diferencia es negativa en 2018, lo que da fuerza a la hipotesis alternativa.
##
## Para los P-value: Coinciden prácticamente al milímetro. El valor p es muy pequeño (< 0.01), los datos son poco compatibles con la hipótesis nula
##
## En conclusión, tenemos evidencia suficiente para afirmar que la desigualdad se redujo significativamente entre 2008 y 2018 en los países analizados.
cat("\n2.6.2 RESULTADOS PARA LA REGION DE EUROPA Y NORTH AMERICA:\n","Media de las diferencias (d_bar2eur):", d_bar2eur, "VS ", "test.estimate.eur:", t_test_eur$estimate,
"\nEstadístico t manual eur:", t_manualeur, "VS test.t.eur:", t_test_eur$statistic,
"\nP-value manual:", p_val_manualeur, "VS test.p:","\n", t_test_eur$p.value,
"\n2.7.2\n",
"Para la media de las diferencias: la diferencia es muy pequeña, al ser negativa demuestra que si hubo disminucion, pero muy poca",
"\nEn el estadistico t eur: el resultado es negativo, lo que indica que la media en 2018 es algo menor que en 2008, pero la magnitud de la diferencia es pequeña.\n",
"Para los P-value.eur: Este valor es mayor que 0.05, por lo que no se rechaza la hipótesis nula.\n",
"\nEn Europa y Norteamérica, aunque la media del índice GINI en 2018 es ligeramente menor que en 2008, la variabilidad entre países es alta y el resultado no es estadísticamente significativo.\n")
##
## 2.6.2 RESULTADOS PARA LA REGION DE EUROPA Y NORTH AMERICA:
## Media de las diferencias (d_bar2eur): -0.4793103 VS test.estimate.eur: -0.4793103
## Estadístico t manual eur: -0.922249 VS test.t.eur: -0.922249
## P-value manual: 0.1821389 VS test.p:
## 0.1821389
## 2.7.2
## Para la media de las diferencias: la diferencia es muy pequeña, al ser negativa demuestra que si hubo disminucion, pero muy poca
## En el estadistico t eur: el resultado es negativo, lo que indica que la media en 2018 es algo menor que en 2008, pero la magnitud de la diferencia es pequeña.
## Para los P-value.eur: Este valor es mayor que 0.05, por lo que no se rechaza la hipótesis nula.
##
## En Europa y Norteamérica, aunque la media del índice GINI en 2018 es ligeramente menor que en 2008, la variabilidad entre países es alta y el resultado no es estadísticamente significativo.
cat("3. Desigualdad según el tipo de régimen\n", "\nPR3: ¿La proporción de países con mayor desigualdad (GINI>40) es diferente entre los países con régimen democrático y aquellos con régimen autocrático?\n")
## 3. Desigualdad según el tipo de régimen
##
## PR3: ¿La proporción de países con mayor desigualdad (GINI>40) es diferente entre los países con régimen democrático y aquellos con régimen autocrático?
# Filtrar solo el año 2018
df_pr3 <- df[df$Year == 2018, ]
# Quitar filas con NA en SI.POV.GINI o Regime
df_pr3 <- df_pr3[!is.na(df_pr3$SI.POV.GINI) & !is.na(df_pr3$Regime), ]
cat("3.1 Crear variable (Columna) de alta desigualdad")
## 3.1 Crear variable (Columna) de alta desigualdad
df_pr3$HighInequality <- ifelse(df_pr3$SI.POV.GINI > 40, 1, 0)
# Crear columna de tipo de régimen
df_pr3$RegimeType <- NA
df_pr3$RegimeType[grepl("Democracy", df_pr3$Regime)] <- "Democracy"
df_pr3$RegimeType[grepl("Autocracy", df_pr3$Regime)] <- "Autocracy"
# Quitar filas sin tipo de régimen
df_pr3 <- df_pr3[!is.na(df_pr3$RegimeType), ]
# Crear tabla de Regimen
tabla_regimen <- table(df_pr3$RegimeType, df_pr3$HighInequality)
print(tabla_regimen)
##
## 0 1
## Autocracy 12 5
## Democracy 34 13
cat("3.2","\nHipotesis nula= La proporción de países con mayor desigualdad (GINI>40) es IGUAL entre los países con régimen democrático y aquellos con régimen autocrático.\n","\nHipotesis alternativa= La proporción de países con mayor desigualdad (GINI>40) es DIFERENTE entre los países con régimen democrático y aquellos con régimen autocrático\n" )
## 3.2
## Hipotesis nula= La proporción de países con mayor desigualdad (GINI>40) es IGUAL entre los países con régimen democrático y aquellos con régimen autocrático.
##
## Hipotesis alternativa= La proporción de países con mayor desigualdad (GINI>40) es DIFERENTE entre los países con régimen democrático y aquellos con régimen autocrático
cat("3.3 Usaremos el test de dos proporciones (prop.test), porque tenemos una variable categórica dicotómica y queremos ver si su proporción cambia entre dos poblaciones distintas.\n")
## 3.3 Usaremos el test de dos proporciones (prop.test), porque tenemos una variable categórica dicotómica y queremos ver si su proporción cambia entre dos poblaciones distintas.
cat("3.5\n")
## 3.5
# Re-extraer valores de la tabla, enfocados en '1' (Alta Desigualdad)
x_altas <- tabla_regimen[, "1"] # Países con GINI > 40
n_totales <- rowSums(tabla_regimen) # Totales
x_aut <- x_altas["Autocracy"]; n_aut <- n_totales["Autocracy"]
x_dem <- x_altas["Democracy"]; n_dem <- n_totales["Democracy"]
# Calcular las proporciones muestrales (ALTA DESIGUALDAD)
p_hat_aut <- x_aut / n_aut
p_hat_dem <- x_dem / n_dem
# Calcular la proporción combinada (pooled proportion)
p_c <- (x_aut + x_dem) / (n_aut + n_dem)
# Calcular el Error Estándar (SE)
se_pooled <- sqrt(p_c * (1 - p_c) * (1/n_aut + 1/n_dem))
# Calcular el estadístico Z (Usamos Autocracia - Democracia)
z_manual <- (p_hat_aut - p_hat_dem) / se_pooled
# Calcular el p-valor (bilateral)
p_val_manual <- 2 * (1 - pnorm(abs(z_manual)))
cat("\n3.6 Resultados: \n",
"Proporción Autocracia (GINI>40):", p_hat_aut,
"\nProporción Democracia (GINI>40):", p_hat_dem,
"\nEstadístico Z manual:", z_manual,
"\nP-value manual:", p_val_manual)
##
## 3.6 Resultados:
## Proporción Autocracia (GINI>40): 0.2941176
## Proporción Democracia (GINI>40): 0.2765957
## Estadístico Z manual: 0.1376986
## P-value manual: 0.8904786
cat("\nNo se encontró evidencia estadística (P-value >0.05) de que la proporción de países con alta desigualdad (GINI>40) sea diferente entre democracias y autocracias. Aunque las autocracias presentan un 29.41% y las democracias un 27.66%, la diferencia es mínima y atribuible al azar. En consecuencia, se concluye que las proporciones son iguales.\n")
##
## No se encontró evidencia estadística (P-value >0.05) de que la proporción de países con alta desigualdad (GINI>40) sea diferente entre democracias y autocracias. Aunque las autocracias presentan un 29.41% y las democracias un 27.66%, la diferencia es mínima y atribuible al azar. En consecuencia, se concluye que las proporciones son iguales.
cat("\n4. Proporción de países que cumplen con el objetivo de no agota
miento de bosques\n", "\nPR4: ¿La proporción de países que cumplen con el objetivo de no agotamiento neto de bosques
es mayor que 50%?\n")
##
## 4. Proporción de países que cumplen con el objetivo de no agota
## miento de bosques
##
## PR4: ¿La proporción de países que cumplen con el objetivo de no agotamiento neto de bosques
## es mayor que 50%?
cat("\n4.1 Análisis descriptivo: \n")
##
## 4.1 Análisis descriptivo:
# Filtrar solo el año 2018
df_pr4 <- df[df$Year == 2018, ]
# Renombrar la columna de agotamiento de bosques
names(df_pr4)[names(df_pr4) == "NY.ADJ.DFOR.GN.ZS"] <- "FOR"
# Quitar filas con valores faltantes en FOR
df_pr4 <- df_pr4[!is.na(df_pr4$FOR), ]
# Crear columna CumpleObjetivo (1 si no agota bosques, 0 si sí)
df_pr4$CumpleObjetivo <- ifelse(df_pr4$FOR <= 0, 1, 0)
# Hacer el gráfico
hist(df_pr4$FOR,
breaks = 20,
col = "forestgreen",
main = "Distribución de Agotamiento de Bosques (2018)",
xlab = "% Ingreso Nacional Bruto")

cat("\n4.2\nHipotesis Nula: mas del 50% de los paises NO cumplen con el objetivo de no agotamiento de bosques.\n", "\nHipotesis alternativa: mas del 50% de los paises cumplen con el indice de no agotamiento de bosques\n","\n\n4.3 Test de una proporcion: ya que la variable a analizar en binaria de tipo cunple si o no, porque la pregunta de investigación se centra en verificar si la proporción de países que cumplen el objetivo supera el 50%. La variable de interés es dicotómica (cumple / no cumple) y se contrasta contra un valor fijo (50%) \n", "\n4.4 Aplicacion del test\n")
##
## 4.2
## Hipotesis Nula: mas del 50% de los paises NO cumplen con el objetivo de no agotamiento de bosques.
##
## Hipotesis alternativa: mas del 50% de los paises cumplen con el indice de no agotamiento de bosques
##
##
## 4.3 Test de una proporcion: ya que la variable a analizar en binaria de tipo cunple si o no, porque la pregunta de investigación se centra en verificar si la proporción de países que cumplen el objetivo supera el 50%. La variable de interés es dicotómica (cumple / no cumple) y se contrasta contra un valor fijo (50%)
##
## 4.4 Aplicacion del test
# Contamos cuántos países cumplen el objetivo (FOR <= 0)
n_cumplen <- sum(df_pr4$CumpleObjetivo)
# Sumamos el número total de países en el conjunto de datos
n_total <- nrow(df_pr4)
# Ejecutamos el test de proporción, Queremos comprobar si más del 50% de los países cumplen el objetivo
resultado_test <- prop.test(
x = n_cumplen, # número de cumplen
n = n_total, # número total de países
p = 0.5, # proporción de referencia (50%)
alternative = "greater", # hipótesis alternativa: proporción > 0.5
correct = FALSE # sin corrección de continuidad
)
# 4. Mostrar el resultado
print(resultado_test)
##
## 1-sample proportions test without continuity correction
##
## data: n_cumplen out of n_total, null probability 0.5
## X-squared = 4.8395, df = 1, p-value = 0.01391
## alternative hypothesis: true p is greater than 0.5
## 95 percent confidence interval:
## 0.5218656 1.0000000
## sample estimates:
## p
## 0.5864198
cat("\n4.7 interpretacion:\n", "más del 50% de los países cumplen el objetivo de no agotar sus bosques (P-value < 0.05). La proporción estimada es del 58.6%, y el intervalo de confianza confirma que la mayoría supera el umbral del 50%.")
##
## 4.7 interpretacion:
## más del 50% de los países cumplen el objetivo de no agotar sus bosques (P-value < 0.05). La proporción estimada es del 58.6%, y el intervalo de confianza confirma que la mayoría supera el umbral del 50%.
cat("\n5. Tabla resumen:\n")
##
## 5. Tabla resumen:
# Guardar los p-values de cada prueba
p_value_pr1 <- round(t_test_pr1$p.value, 5)
p_value_pr2 <- round(t_test_pr2$p.value, 5)
p_value_eur <- round(t_test_eur$p.value, 5)
p_value_pr3 <- round(p_val_manual, 5)
p_value_pr4 <- round(resultado_test$p.value, 5)
# Crear un data frame con los resultados básicos
conclusiones_df <- data.frame(
PR = c("PR1", "PR2.1", "PR2.2","PR3", "PR4"),
Pregunta = c(
"Esperanza de vida (Alto vs. Resto)",
"Desigualdad Global (2008 vs. 2018)",
"Desigualdad Global (2008 vs. 2018, en la region de EUR y EEUU)",
"GINI > 40 (Democracia vs. Autocracia)",
"Bosques (<= 0) > 50%"
),
Test = c(
"T-test Indep. (Unilateral)",
"T-test Emparejado (Unilateral)",
"Test 2.1 Proporciones (Bilateral)",
"Test 2.2 emparejado (unilateral)",
"Test 1 Proporción (Unilateral)"
),
P_value = c(p_value_pr1, p_value_pr2, p_value_eur, p_value_pr3, p_value_pr4)
)
# Agregar columna de decisión (rechazar H0 si p < 0.05)
conclusiones_df$H0_Rechazada <- ifelse(conclusiones_df$P_value < 0.05, "SÍ", "NO")
# Agregar columna de interpretación manualmente
conclusiones_df$Interpretacion <- c(
"La esperanza de vida es mayor en países de altos ingresos.",
"La desigualdad se redujo entre 2008 y 2018.",
"No se puede rechazar la hipotesis nula, por ende no se puede afirmar que se redujo la desigualdad en la region de EUR y EEUU",
"No hay diferencia significativa en la proporción de alta desigualdad.",
"Más del 50% de los países cumplen el objetivo de bosques."
)
# Mostrar la tabla final
print(conclusiones_df)
## PR Pregunta
## 1 PR1 Esperanza de vida (Alto vs. Resto)
## 2 PR2.1 Desigualdad Global (2008 vs. 2018)
## 3 PR2.2 Desigualdad Global (2008 vs. 2018, en la region de EUR y EEUU)
## 4 PR3 GINI > 40 (Democracia vs. Autocracia)
## 5 PR4 Bosques (<= 0) > 50%
## Test P_value H0_Rechazada
## 1 T-test Indep. (Unilateral) 0.00000 SÍ
## 2 T-test Emparejado (Unilateral) 0.00542 SÍ
## 3 Test 2.1 Proporciones (Bilateral) 0.18214 NO
## 4 Test 2.2 emparejado (unilateral) 0.89048 NO
## 5 Test 1 Proporción (Unilateral) 0.01391 SÍ
## Interpretacion
## 1 La esperanza de vida es mayor en países de altos ingresos.
## 2 La desigualdad se redujo entre 2008 y 2018.
## 3 No se puede rechazar la hipotesis nula, por ende no se puede afirmar que se redujo la desigualdad en la region de EUR y EEUU
## 4 No hay diferencia significativa en la proporción de alta desigualdad.
## 5 Más del 50% de los países cumplen el objetivo de bosques.