if(!require("pacman")) install.packages("pacman")
Loading required package: pacman
::p_load(ggplot2, modeest, caret, tidyverse, dplyr, kableExtra, classInt, RColorBrewer)
pacman
options(timeout=1000)
En este trabajo vamos a estimar los parámetros poblacionales del salario a partir de los estadísticos (estimadores) muestrales, atendiendo a que obtener información de toda la población resulta inviable.
La población incluye a los trabajadores por cuenta ajena que presten sus servicios en centros de cotización en España, independientemente de su tamaño, y hayan estado dados de alta en la Seguridad Social (SS) durante todo el mes de octubre de 2018.
Se toma como referencia a los trabajadores que estuvieron de alta todo el mes de octubre para minimizar el número de trabajadores que o empezaron o finalizaron su trabajo este mes. Este mes es el que guarda la distribución más normal en referencia al resto de meses por estar poco afectado por las variaciones estacionales.
Cabe destacar que se han excluido a presidentes, miembros de consejos de administración, y todo aquel personal cuya remuneración no sea principalmente en forma de salario. También se han excluido a los trabajadores con contrato de aprendizaje , ya que forman un colectivo muy particular y son muy poco representativos.
Nótese que vamos a dar por hecho que la base de datos del Instuituto Nacional de Estadística (INE) de la cual hemos extraido los datos vamos a entenderla como poblacional y no muestral para efectos prácticos del trabajo.
Para empezar, cargamos los paquetes necesarios para realizar el muestreo.
if(!require("pacman")) install.packages("pacman")
Loading required package: pacman
::p_load(ggplot2, modeest, caret, tidyverse, dplyr, kableExtra, classInt, RColorBrewer)
pacman
options(timeout=1000)
Cargamos los datos que hemos extraido del INE a través de la función load().
load("C:/Users/Portatil/OneDrive - Universitat de Valencia/Escritorio/Universidad/3º BIA/2n CUATRIMESTRE/MUESTREO/muestreo/practica1/Poblacion.Rdata")
load("C:/Users/Portatil/OneDrive - Universitat de Valencia/Escritorio/Universidad/3º BIA/2n CUATRIMESTRE/MUESTREO/muestreo/practica1/PoblacionNoCubierta.Rdata")
Para realizar el muestreo usamos la técnica de Muestreo Aleatorio Simple (MAS), que selecciona de forma completamente aleatoria, y cada individuo tiene la misma probabilidad de ser seleccionado.
Como la selección es aleatoria, fijamos una semilla (1) para asegurar su reproducibilidad en posteriores ejecuciones del código.
Hemos usado la función sample_n(), donde hemos especificado el dataframe, el número de individuos extraidos (1416) y que no realice repetición, ya que tenemos suficientes individuos en la población.
set.seed(1)
<- sample_n(Pobl, 1416, replace = FALSE)
sample_pobl head(sample_pobl)
SEXO TIPOPAIS ESTU ANOANTI TIPOJOR TIPOCON SALBASE
1 6 1 2 1 2 1 519.60
2 1 1 2 10 2 1 472.62
3 1 1 7 9 2 1 544.03
4 6 1 4 19 1 1 856.32
5 1 1 5 5 1 1 962.55
6 1 1 6 13 2 2 262.26
Ahora, seleccionamos el estadístico más adecuado
<- sample_pobl$SALBASE
sample_salario sd(sample_salario)
[1] 1242.505
mean(sample_salario)
[1] 1444.879
max(sample_salario)
[1] 27404.01
min(sample_salario)
[1] 20.1
ggplot(data = data.frame(sample_salario), aes(x = sample_salario)) +
geom_histogram(aes(y = after_stat(density), fill = after_stat(count)),
bins = 30, color = "black") +
geom_density(alpha = 0.5, color = "blue", fill = "lightblue") +
scale_fill_distiller(palette = "YlGnBu", direction = 1) + # Puedes cambiar la paleta aquí
theme_minimal() +
labs(title = "Distribución de Sample Salario",
x = "Salario",
y = "Densidad",
fill = "Frecuencia") +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))
VIendo estos datos, una desviación típica tan alta, y un mínimo y máximo tan dispares, podemos sospechar una desigualdad salarial en la muestra. Para estudiarla calculamos el coeficiente de Gini, una medida usada para determinar la desigualdad de los ingresos de un país.
<- function(x) {
gini <- length(x)
n <- mean(x)
mu <- outer(x, x, FUN = function(x, y) abs(x - y))
abs_diff <- sum(abs_diff) / (2 * n^2 * mu)
G return(G)
}
<- gini(sample_salario)
gini_salario print(gini_salario)
[1] 0.3200275
Con el coeficiente de Gini de 0.32, vemos que la muestra manifiesta una estructura desigual, lo cual es común al hablar de los salarios de un país, con valores outliers sobre todo en los salarios más altos según el gráfico.
Teniéndolo en cuenta, la medida más adecuada es la mediana, ya que es robusta frente a valores atípicos, y aunque la moda también lo sea, es complicado que se repita un mismo salario teniendo en cuenta los céntimos.
<- median(sample_salario, na.rm = TRUE)
mediana_salario mediana_salario
[1] 1211.255
La mediana nos indica que el 50% de los trabajadores gana menos de 1211.26€ y el otro 50% gana más.
/1080 mediana_salario
[1] 1.121532
Basándonos en los datos, el hecho de que la mediana salarial sea solo un 12% superior al salario mínimo impuesto por el Gobierno (1080€) sugiere que más de la mitad de la población española cobra sueldos cercanos al salario mínimo. Esto puede ser preocupante, ya que indica que muchos trabajadores ganan solo un poco más de lo mínimo establecido, y el resto incluso por debajo.
Probemos a realizar el mismo proceso con otra variable, por ejemplo, el sexo:
<- median(sample_pobl$SALBASE[sample_pobl$SEXO == "1"], na.rm = TRUE)
mediana_salario_hombres <- median(sample_pobl$SALBASE[sample_pobl$SEXO == "6"], na.rm = TRUE)
mediana_salario_mujeres
mediana_salario_hombres
[1] 1272.05
mediana_salario_mujeres
[1] 1083.34
-mediana_salario_mujeres mediana_salario_hombres
[1] 188.71
Por lo que vemos, hay una clara diferencia entre hombres y mujeres en cuanto a su salario. En concreto, 188.71€.
set.seed(1)
<- sample_n(Pob_NC, 606, replace = FALSE)
sample_poblNC head(sample_poblNC)
SEXO TIPOPAIS ESTU ANOANTI TIPOJOR TIPOCON SALBASE
1 1 1 3 11 1 1 1574.91
2 6 1 6 11 1 1 1161.00
3 6 1 4 15 1 1 1092.83
4 6 1 6 2 1 1 1166.28
5 6 1 4 19 1 1 2053.33
6 1 2 7 3 1 1 2889.36
<- sample_poblNC$SALBASE
sample_salarioNC <- median(sample_salarioNC, na.rm = TRUE)
mediana_salarioNC mediana_salarioNC
[1] 1154.15
<- function(tasaNC, yC, yNC) {
calcular_error_nc <- 1 - tasaNC
tasaC
<- tasaNC * (yC - yNC)
errorNC
<- (tasaC * yC) + (tasaNC * yNC)
yp
<- errorNC / yp
error_relativo_NC
return(list(
error_NC = errorNC,
error_relativo_NC = error_relativo_NC
))
}
<- length(sample_salario) + 606
numT <- 606
numC
<- numC / numT
tasaNC
<- mediana_salario
yC <- mediana_salarioNC
yNC
<- calcular_error_nc(tasaNC, yC, yNC)
errores_nc errores_nc
$error_NC
[1] 17.11455
$error_relativo_NC
[1] 0.01433211
Como observamos, siendo el error de no cobertura positivo, habíamos subestimado el salario mediano de la población española, de forma que la situación es incluso peor de la que habíamos imaginado. El salario mediano español está incluso más cercano al salario mínimo, por lo tanto tiene sentido que los sindicatos busquen mejorar esta situación elevando el salario mínimo a 1184€.
En conclusión, el análisis de la estructura salarial en España muestra una mediana de salario cercana al salario mínimo, lo que indica una alta proporción de trabajadores con ingresos bajos. Además, el cálculo del error de no cobertura sugiere que la situación parece ser peor de lo que la muestra indica. Esto resalta la necesidad de elevar el salario mínimo para mejorar las condiciones de vida de los trabajadores, o llevar a cabo políticas para reforzar esta medida.