1 INTRODUCCIÓN

En este apartado se analizará la relación entre la variable elegida por el alumno y una serie de indicadores de desarrollo humano. El objetivo final es conocer en qué medida la distribución espacial de esa variable depende de otros condicionantes, como su localización o el nivel de desarrollo.

Para dar comienzo a la actividad, se debe establecer la carpeta de trabajo, y a continuación, cargar el fichero con la variable elegida.

setwd("D:/G14_EE_CC_SS_2023/03_Trabajo_Aplicado/")
load("./datos_wdi.RData")

2 ANÁLISIS DE LA RELACIÓN ENTRE LA VARIABLE Y EL NIVEL ECONÓMICO (variable ingresos) Y SU UBICACION GEOGRÁFICA (variable region)

En primer lugar se analizará si los valores de la variable analizada (variable cuantitativa) dependen de el nivel de ingresos del país y de su ubicación geográfica (ambas son variable cualitativas con varios niveles). Para determinar si existe o no una diferencia estadísticamente significativa entre las medias de tres o más grupos independientes se puede recurrir al análisis de varianza. En este caso, se utilizará el análisis de varianza unidireccional (one-way ANOVA), también conocido como ANOVA de un factor; el adjetivo unidireccional proviene del hecho de que estamos analizando cómo una variable predictora impacta una variable de respuesta.

Las hipótesis con las que trabajaremos son las siguientes:

Por lo tanto:

En el caso de la variable ingresos, disponemos de 4 niveles pero uno de los paises, Venezuela, presenta una etiqueta que no es necesaria para nuestro trabajo, y por lo tanto, será eliminada.

datos <- subset(datos,
                !(ingresos=="NO"))                                        # Subconjunto de datos en los que region no es igual a "Aggregates".        

A continuación, se pueden calcular tanto los valores medios como la desviación típica de la tasa de feminidad según los 4 niveles de ingresos de los paises.

promedio_ing <- aggregate(tasa_fem ~ ingresos, data = datos, mean)
desviacion_ing <- aggregate(tasa_fem ~ ingresos, data = datos, sd)

Con estos valores se puede crear una tabla, que podría ser exportada mediante un fichero excel.

tabla_ing <- cbind(promedio_ing, desviacion_ing)
tabla_ing <- tabla_ing[  ,c(1,2,4)]
names(tabla_ing)[names(tabla_ing) == c("tasa_fem", "tasa_fem.1")] <- c("Promedio tasa feminidad", "Desviación típica de la tasa de feminidad")

También se podría elaborar un gráfico box plot para percibir las diferencias.

boxplot(tasa_fem ~ ingresos,                                                      
        data = datos,
        outline=FALSE)                                         # Dataframe de origen

A continuación se analizará si existen diferencias estadísticamente significativas entre la tasa de feminidad según el nivel de ingresos de los países:

aov_ingresos <- aov(tasa_fem ~ ingresos,                                                      
               data = datos)                
summary(aov_ingresos)  

De acuerdo con lo antes señalado, no es posible afirmar que existan diferencias según el nivel de ingresos. Por lo tanto, en este caso se acepta la hipótesis nula.

A continuación procederemos de la misma manera con la variable cualitativa region.

Elaboración de una tabla con valores medios y desviación típica.

promedio_reg <- aggregate(tasa_fem ~ region, data = datos, mean)
desviacion_reg <- aggregate(tasa_fem ~ region, data = datos, sd)

tabla_reg <- cbind(promedio_reg, desviacion_reg)
tabla_reg <- tabla_reg[  ,c(1,2,4)]
names(tabla_reg)[names(tabla_reg) == c("tasa_fem", "tasa_fem.1")] <- c("Promedio tasa feminidad", "Desviación típica de la tasa de feminidad")

Gráfico box plot para percibir las diferencias.

boxplot(tasa_fem ~ region,                                                      
        data = datos,
        outline=FALSE)   

A continuación se analizará si existen diferencias estadísticamente significativas entre la tasa de feminidad según el nivel de ingresos de los países:

aov_region <- aov(tasa_fem ~ region,                                                      
               data = datos)                
summary(aov_region)  

Dado que los resultados son estadísticamente significativos, podemos determinar en qué regiones se sustentan estas diferencias significativas.

TukeyHSD(aov_region)

En todos los casos, es la región denominada MENA, que corresponde a los países de Oriente Medio y Norte de África.

3 ANÁLISIS DE LA RELACIÓN ENTRE LA VARIABLE E INDICADORES SOCIOECONÓMICOS.

Los índices son los siguientes:

A continuación, se cargarán los datos con los índices de desarrollo humano

url <- "http://personales.unican.es/rasillad/docencia/G14/Trabajo_individual/indices_desarrollo_2023.csv"
indices <- read.csv2(url)
View(indices)

La primera columna del dataframe indices (que contiene el nombre de los países) puede ser suprimida:

indices <- indices[ , -1]

Por último, juntaremos ambos dataframes en uno único. De este fichero extraeremos un subconjunto con las variables numéricas y le asignaremos el nombre de nuevos_datos.

nuevos_datos <- merge(x = datos, y = indices, all.x = TRUE)

nuevos_datos <- nuevos_datos[ , -3]                

nuevos_datos$provisional <- apply(is.na(nuevos_datos), MARGIN = 1, FUN = sum)
nuevos_datos <- nuevos_datos[nuevos_datos$provisional < 12,  ]
nuevos_datos <- nuevos_datos[ , -18]

Comenzaremos analizando la relación entre las variables creando una matriz de correlación entre todos los índices. En primer lugar, se creará un nuevo objeto que contiene únicamente las variables cuantitativas.

datos_para_correlacion <- nuevos_datos[ ,c(3, 6:17)]

IMPORTANTE: cuando alguna de las variables registra datos ausentes (NA), R no es capaz de calcular el coeficiente de correlación, a menos que se incluya el argumento use = "complete.obs".

matriz.corr <- round(cor(datos_para_correlacion, use = "complete.obs"),2)
matriz.corr

Se puede obtener la matriz de significación con la función

library("Hmisc")
matriz.corr2 <- rcorr(as.matrix(datos_para_correlacion))            
round((matriz.corr2$P),2)

Los valores de correlación encontrados son muy bajos y no significativos, probablemente por la existencia de valores atípicos y/o extremos en la variable bajo análisis. A continuación, repetiremos el procedimiento, pero eliminando los datos atípicos. Primero debemos, sin embargo, identificarlos, como se hizo en el apartado anterior.

Q1 <- quantile(nuevos_datos$Tasa_fem, probs = 0.25)
Q3 <- quantile(nuevos_datos$Tasa_fem, probs = 0.75)
IQR <- IQR(nuevos_datos$Tasa_fem)

atipico_superior <- Q3 + IQR * 1.5
atipico_inferior <- Q1 - 1.5 * IQR 

extremo_superior <- Q3 + IQR * 3
extremo_inferior <- Q1 - 3 * IQR 

nuevos_datos$atipicos[nuevos_datos$Tasa_fem <= atipico_inferior | nuevos_datos$Tasa_fem >= atipico_superior] <- 1
nuevos_datos$atipicos[nuevos_datos$Tasa_fem <= extremo_inferior | nuevos_datos$Tasa_fem >= extremo_superior] <- 2
nuevos_datos$atipicos[nuevos_datos$Tasa_fem > atipico_inferior & nuevos_datos$Tasa_fem < atipico_superior] <- 0

Una vez identificados, podemos eliminarlos del fichero original y repetir el procedimiento.

nuevos_datos2 <- nuevos_datos[which(nuevos_datos$atipicos == 0),   ]
nuevos_datos2 <- subset(nuevos_datos2, select = -atipicos)

Nueva matriz de correlación

matriz.corr.nuevos_datos2 <- round(cor(nuevos_datos2,use = "complete.obs"),2)
matriz.corr.nuevos_datos2

Podemos elaborar un gráfico con las matrices de dispersión

library(PerformanceAnalytics)

chart.Correlation(nuevos_datos2,                                                
                  method="spearman",
                  histogram=TRUE,
                  pch=16)

En el caso que nos ocupa, se observa un incremento sustancial del índice de correlación de Pearson entre la Tasa de Feminidad y el Índice de Desarrollo según Géneros. El valor es positivo, lo que indica que un aumento de la primera variable se corresponde con un aumento de la segunda. Esta relación será el objeto de los restantes análisis. Obsérvese además que existen cierto número de casos cuya inclusión sería cuestionable, dado que poseen un valor muy bajo en el índice IDG.

modelo.regresion <- lm(IDG ~ Tasa_fem, 
     data = nuevos_datos2)                                         
print(modelo.regresion)              

Es habitual acompañar el modelo de regresión con un diagrama de puntos y dibujar sobre él la recta de regresión.

plot(IDG ~ Tasa_fem, 
     data = nuevos_datos2, pch = 16)
abline(modelo.regresion, col="red", lwd=2)                                    # Añade una recta de regresión 
etiqueta.corr <- cor(nuevos_datos2$IDG,nuevos_datos2$Tasa_fem, use = "complete.obs")                                      # Calculamos la correlación entre las variables
text(paste("Correlación:", round(etiqueta.corr, 2)), 
     x = 52, 
     y = 0.7) 
coef <- round(coef(lm(nuevos_datos2$IDG ~ nuevos_datos2$Tasa_fem)), 2)                              # Calculamos el modelo de regresion
text(paste("Y = ", coef[1], "+", coef[2], "x"),
     x = 52, 
     y = 0.6)