La base de datos utilizada en este análisis es una encuesta simulada sobre la percepción de la población española frente a la migración marroquí. Los datos fueron generados de manera simulada con fines académicos, replicando patrones plausibles de opinión pública, dado que no se contó con acceso a una encuesta real para este ejercicio.
El análisis de la percepción migratoria resulta relevante en el contexto español actual, donde los flujos migratorios desde el norte de África han sido objeto de debate político y social recurrente. Comprender cómo variables como la ideología, la edad, el nivel educativo o el contacto directo con población inmigrante se relacionan con la percepción ciudadana permite identificar patrones de opinión pública relevantes para el estudio de fenómenos migratorios y su tratamiento en la esfera política.
En este documento se presenta primero el análisis exploratorio de
datos (EDA) y luego se construyen, manualmente, cuatro
intervalos de confianza a partir de sus fórmulas estadísticas, sin
utilizar t.test() ni prop.test().
library(readxl)
library(dplyr)
library(ggplot2)
datos <- read_excel("encuesta_migracion.xlsx")
En esta sección se presentan las primeras seis observaciones del conjunto de datos, con el propósito de verificar que la información haya sido importada correctamente y realizar un primer acercamiento a las variables disponibles.
head(datos)
## # A tibble: 6 × 12
## ID Edad Sexo Nivel_Educativo Ingreso_Mensual Ideologia Comunidad_Autonoma
## <dbl> <dbl> <chr> <chr> <dbl> <chr> <chr>
## 1 1 58 Homb… Secundaria 930 Centro Andalucía
## 2 2 47 Mujer Universitario 3290 Izquierda Madrid
## 3 3 34 Mujer Formación Prof… 1710 Izquierda Madrid
## 4 4 66 Mujer Formación Prof… 1900 Derecha Comunidad Valenci…
## 5 5 79 Homb… Postgrado 1500 Centro Comunidad Valenci…
## 6 6 37 Homb… Secundaria 1870 Izquierda Otra
## # ℹ 5 more variables: Contacto_Inmigrantes <dbl>, Horas_Noticias <dbl>,
## # Percepcion_Migracion <dbl>, Postura_Migracion <chr>,
## # Fuente_Informacion <chr>
La base de datos contiene información sociodemográfica y relacionada con las percepciones sobre la migración: identificador, edad, sexo, nivel educativo, ingreso mensual, ideología política, comunidad autónoma, contacto con inmigrantes, horas de consumo de noticias, percepción de la migración, postura frente a la migración y fuente de información.
dim(datos)
## [1] 100 12
La base de datos está conformada por 100 observaciones y 12 variables. Las observaciones corresponden a los participantes de la encuesta y las variables contienen información relacionada con sus características sociodemográficas y percepciones sobre la migración.
tipos <- data.frame(Variable = names(datos), Tipo = sapply(datos, class))
rownames(tipos) <- NULL
knitr::kable(tipos)
| Variable | Tipo |
|---|---|
| ID | numeric |
| Edad | numeric |
| Sexo | character |
| Nivel_Educativo | character |
| Ingreso_Mensual | numeric |
| Ideologia | character |
| Comunidad_Autonoma | character |
| Contacto_Inmigrantes | numeric |
| Horas_Noticias | numeric |
| Percepcion_Migracion | numeric |
| Postura_Migracion | character |
| Fuente_Informacion | character |
La base de datos contiene 12 variables, de las cuales 6 son numéricas y 6 son categóricas. Entre las numéricas se encuentran ID, edad, ingreso mensual, contacto con inmigrantes, horas de noticias y percepción de la migración. Las categóricas corresponden a sexo, nivel educativo, ideología, comunidad autónoma, postura frente a la migración y fuente de información. La variable ID, aunque es numérica, funciona como identificador de cada participante y no se utiliza en los análisis estadísticos.
colSums(is.na(datos))
## ID Edad Sexo
## 0 0 0
## Nivel_Educativo Ingreso_Mensual Ideologia
## 0 0 0
## Comunidad_Autonoma Contacto_Inmigrantes Horas_Noticias
## 0 0 0
## Percepcion_Migracion Postura_Migracion Fuente_Informacion
## 0 0 0
No se presentan datos faltantes en ninguna variable. Por lo tanto, no es necesario realizar procesos de imputación o eliminación de observaciones, y las medidas estadísticas utilizan las 100 observaciones disponibles.
Para las variables numéricas se calculan el mínimo, primer cuartil (Q1), mediana, media, tercer cuartil (Q3), máximo y desviación estándar.
vars_num <- c("Edad", "Ingreso_Mensual", "Contacto_Inmigrantes",
"Horas_Noticias", "Percepcion_Migracion")
resumen <- data.frame(
Variable = vars_num,
Minimo = sapply(datos[vars_num], min),
Q1 = sapply(datos[vars_num], function(v) quantile(v, 0.25)),
Mediana = sapply(datos[vars_num], median),
Media = sapply(datos[vars_num], mean),
Q3 = sapply(datos[vars_num], function(v) quantile(v, 0.75)),
Maximo = sapply(datos[vars_num], max),
Desv_Est = sapply(datos[vars_num], sd)
)
rownames(resumen) <- NULL
knitr::kable(resumen, digits = 2)
| Variable | Minimo | Q1 | Mediana | Media | Q3 | Maximo | Desv_Est |
|---|---|---|---|---|---|---|---|
| Edad | 18.0 | 33.00 | 48.0 | 48.55 | 64.00 | 79 | 18.08 |
| Ingreso_Mensual | 810.0 | 1697.50 | 2015.0 | 2095.60 | 2527.50 | 4220 | 708.43 |
| Contacto_Inmigrantes | 0.0 | 2.00 | 5.0 | 5.21 | 8.00 | 10 | 3.22 |
| Horas_Noticias | 0.1 | 6.62 | 11.5 | 10.88 | 15.45 | 20 | 5.72 |
| Percepcion_Migracion | 1.0 | 4.20 | 5.4 | 5.45 | 6.62 | 10 | 2.06 |
La edad de los participantes abarca un rango entre los 18 y los 79 años, con una media de 48,55 años y una mediana de 48,00 años; la cercanía entre ambas medidas sugiere una distribución aproximadamente simétrica. El ingreso mensual presenta valores entre 810 y 4.220 unidades, con una media (2.095,60) ligeramente superior a la mediana (2.015,00), lo que indica una leve concentración de valores altos hacia el extremo superior. Las horas dedicadas al consumo de noticias oscilan entre 0,10 y 20,00, con una media de 10,88. Finalmente, la percepción de la migración se mide en una escala de 1 a 10, con una media de 5,45 y una mediana de 5,40, es decir, ligeramente por encima del centro de la escala, con una desviación estándar de 2,06.
Para las variables categóricas se calcula la frecuencia absoluta y el porcentaje de cada categoría.
vars_cat <- c("Sexo", "Nivel_Educativo", "Ideologia",
"Comunidad_Autonoma", "Postura_Migracion", "Fuente_Informacion")
for (v in vars_cat) {
tab <- as.data.frame(table(datos[[v]]))
names(tab) <- c("Categoria", "Frecuencia")
tab$Porcentaje <- round(100 * tab$Frecuencia / nrow(datos), 1)
cat("\n\n**", v, "**\n\n")
print(knitr::kable(tab))
}
** Sexo **
| Categoria | Frecuencia | Porcentaje |
|---|---|---|
| Hombre | 51 | 51 |
| Mujer | 49 | 49 |
** Nivel_Educativo **
| Categoria | Frecuencia | Porcentaje |
|---|---|---|
| Formación Profesional | 27 | 27 |
| Postgrado | 18 | 18 |
| Secundaria | 30 | 30 |
| Universitario | 25 | 25 |
** Ideologia **
| Categoria | Frecuencia | Porcentaje |
|---|---|---|
| Centro | 35 | 35 |
| Derecha | 34 | 34 |
| Izquierda | 31 | 31 |
** Comunidad_Autonoma **
| Categoria | Frecuencia | Porcentaje |
|---|---|---|
| Andalucía | 24 | 24 |
| Cataluña | 15 | 15 |
| Comunidad Valenciana | 17 | 17 |
| Madrid | 18 | 18 |
| Otra | 15 | 15 |
| País Vasco | 11 | 11 |
** Postura_Migracion **
| Categoria | Frecuencia | Porcentaje |
|---|---|---|
| Desfavorable | 24 | 24 |
| Favorable | 26 | 26 |
| Neutral | 50 | 50 |
** Fuente_Informacion **
| Categoria | Frecuencia | Porcentaje |
|---|---|---|
| Conversaciones Personales | 13 | 13 |
| Prensa Digital | 23 | 23 |
| Radio | 13 | 13 |
| Redes Sociales | 29 | 29 |
| Televisión | 22 | 22 |
La muestra está equilibrada por sexo (51% hombres y 49% mujeres) y por ideología (35% centro, 34% derecha y 31% izquierda). Respecto a la postura frente a la migración, la mitad de la muestra (50%) adopta una posición neutral, el 26% una postura favorable y el 24% una desfavorable. Las redes sociales son la principal fuente de información (29%), seguidas por la prensa digital (23%) y la televisión (22%).
ggplot(datos, aes(x = Edad)) +
geom_histogram(bins = 15, fill = "#4C78A8", color = "white") +
labs(title = "Distribución de la edad",
x = "Edad (años)", y = "Frecuencia") +
theme_minimal()
El histograma de la edad refleja una cobertura amplia, de los 18 a los 79 años, sin asimetría pronunciada hacia ninguno de los extremos. Esto es coherente con la cercanía entre la media y la mediana.
ggplot(datos, aes(x = Ingreso_Mensual)) +
geom_histogram(bins = 15, fill = "#F58518", color = "white") +
labs(title = "Distribución del ingreso mensual",
x = "Ingreso mensual", y = "Frecuencia") +
theme_minimal()
El histograma del ingreso mensual muestra una concentración en el tramo central (entre 1.500 y 2.500) y un leve alargamiento hacia la derecha, lo que concuerda con una media ligeramente superior a la mediana (asimetría positiva leve).
ggplot(datos, aes(x = Sexo, fill = Sexo)) +
geom_bar() +
labs(title = "Distribución por sexo", x = "Sexo", y = "Frecuencia") +
theme_minimal() +
theme(legend.position = "none")
La distribución por sexo es prácticamente paritaria: 51 hombres (51%) y 49 mujeres (49%).
ggplot(datos, aes(x = Postura_Migracion, fill = Postura_Migracion)) +
geom_bar() +
labs(title = "Postura frente a la migración",
x = "Postura", y = "Frecuencia") +
theme_minimal() +
theme(legend.position = "none")
La postura neutral es la más frecuente (50 participantes), seguida de la favorable (26) y la desfavorable (24). Estos resultados describen únicamente a la muestra; para extenderlos a la población española se necesita inferencia, que es lo que se hace a continuación.
En los siguientes ejemplos se utiliza un nivel de confianza del
95 %. Cada intervalo se construye directamente a partir
de sus componentes: mean(), sd(),
length(), qnorm(), el error estándar y el
margen de error.
Nota: en los intervalos para medias la varianza poblacional es desconocida, por lo que se usa la desviación estándar muestral
s. Como los tamaños muestrales son suficientemente grandes, se utiliza la aproximación normal basada en el Teorema Central del Límite.
Queremos estimar la percepción media de la migración marroquí (escala de 1 a 10) en la población española.
\[ IC_{95\%}=\bar{x}\pm z_{\alpha/2}\frac{s}{\sqrt{n}} \]
x <- datos$Percepcion_Migracion
media <- mean(x)
s <- sd(x)
n <- length(x)
media
## [1] 5.454
s
## [1] 2.061647
n
## [1] 100
confianza <- 0.95
alpha <- 1 - confianza
z <- qnorm(1 - alpha / 2)
z
## [1] 1.959964
error_estandar <- s / sqrt(n)
margen_error <- z * error_estandar
error_estandar
## [1] 0.2061647
margen_error
## [1] 0.4040754
limite_inferior <- media - margen_error
limite_superior <- media + margen_error
ic1 <- c(limite_inferior, limite_superior)
ic1
## [1] 5.049925 5.858075
Con un 95 % de confianza, estimamos que la percepción promedio de la población española frente a la migración marroquí se encuentra entre 5.05 y 5.86 puntos en la escala de 1 a 10 (donde los valores más altos indican una percepción más favorable).
En el contexto del estudio, esto significa que, en promedio, la opinión de la población es moderada: el intervalo incluye el punto medio de la escala (5,5), así que con estos datos no podemos afirmar que los españoles, como conjunto, tengan una percepción claramente favorable ni claramente desfavorable de la migración marroquí. Además, el intervalo es relativamente estrecho (el margen de error es de apenas 0.4 puntos), lo que indica que, con 100 personas encuestadas, la estimación del promedio poblacional es bastante precisa.
Queremos estimar la proporción de personas con una postura desfavorable frente a la migración.
\[ IC_{95\%}=\hat{p}\pm z_{\alpha/2}\sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \]
prop.table()frecuencias <- table(datos$Postura_Migracion)
frecuencias
##
## Desfavorable Favorable Neutral
## 24 26 50
proporciones <- prop.table(frecuencias)
proporciones
##
## Desfavorable Favorable Neutral
## 0.24 0.26 0.50
p <- as.numeric(proporciones["Desfavorable"])
n <- length(datos$Postura_Migracion)
p
## [1] 0.24
n
## [1] 100
alpha <- 1 - 0.95
z <- qnorm(1 - alpha / 2)
z
## [1] 1.959964
error_estandar <- sqrt(p * (1 - p) / n)
margen_error <- z * error_estandar
error_estandar
## [1] 0.04270831
margen_error
## [1] 0.08370676
limite_inferior <- p - margen_error
limite_superior <- p + margen_error
ic2 <- c(limite_inferior, limite_superior)
ic2
## [1] 0.1562932 0.3237068
Con un 95 % de confianza, estimamos que la proporción de la población española con una postura desfavorable frente a la migración marroquí se encuentra entre 0.156 y 0.324, es decir, entre el 15.6 % y el 32.4 %.
En la muestra, el 24 % de los encuestados se declaró desfavorable, pero el intervalo muestra que en toda la población esa proporción podría ir desde cerca de 1 de cada 6 personas hasta cerca de 1 de cada 3. En el contexto del estudio, esto indica que la postura abiertamente desfavorable es minoritaria: incluso en el extremo superior del intervalo (32.4 %) no alcanza a la mitad de la población, lo que es coherente con que la mayoría de la muestra (76 %) se haya declarado neutral o favorable.
Comparamos la percepción media de la migración entre las personas de izquierda y de derecha. La diferencia que queremos estimar es:
\[ \mu_{\text{izquierda}}-\mu_{\text{derecha}} \]
\[ (\bar{x}_1-\bar{x}_2)\pm z_{\alpha/2}\sqrt{\frac{s_1^2}{n_1}+\frac{s_2^2}{n_2}} \]
percepcion_izq <- datos[datos$Ideologia == "Izquierda", ]$Percepcion_Migracion
percepcion_der <- datos[datos$Ideologia == "Derecha", ]$Percepcion_Migracion
media_1 <- mean(percepcion_izq)
s_1 <- sd(percepcion_izq)
n_1 <- length(percepcion_izq)
media_2 <- mean(percepcion_der)
s_2 <- sd(percepcion_der)
n_2 <- length(percepcion_der)
media_1
## [1] 6.135484
s_1
## [1] 1.800287
n_1
## [1] 31
media_2
## [1] 4.729412
s_2
## [1] 1.987923
n_2
## [1] 34
diferencia_medias <- media_1 - media_2
diferencia_medias
## [1] 1.406072
error_estandar <- sqrt((s_1^2 / n_1) + (s_2^2 / n_2))
error_estandar
## [1] 0.4698722
alpha <- 0.05
z <- qnorm(1 - alpha / 2)
margen_error <- z * error_estandar
z
## [1] 1.959964
margen_error
## [1] 0.9209326
limite_inferior <- diferencia_medias - margen_error
limite_superior <- diferencia_medias + margen_error
ic3 <- c(limite_inferior, limite_superior)
ic3
## [1] 0.4851395 2.3270047
El intervalo estima la diferencia entre las percepciones medias poblacionales de las personas de izquierda y de derecha, en ese orden. El valor 0 es el punto de referencia: si el intervalo lo contiene, no hay evidencia de diferencia entre los dos grupos.
Con un 95 % de confianza, la diferencia en la percepción media de la migración marroquí entre izquierda y derecha se encuentra entre 0.49 y 2.33 puntos. Como ambos límites son positivos y el intervalo no contiene el 0, estimamos que las personas de izquierda tienen una percepción media más alta que las de derecha (valores más altos de la escala corresponden a una percepción más favorable, como lo confirma que la izquierda tenga más posturas favorables y la derecha más desfavorables en la muestra). La ideología política parece, por tanto, asociada a cómo se percibe la migración marroquí.
Comparamos la proporción de personas con una postura favorable frente a la migración entre hombres y mujeres. La diferencia de interés es:
\[ p_{\text{hombres}}-p_{\text{mujeres}} \]
\[ (\hat{p}_1-\hat{p}_2)\pm z_{\alpha/2}\sqrt{\frac{\hat{p}_1(1-\hat{p}_1)}{n_1}+\frac{\hat{p}_2(1-\hat{p}_2)}{n_2}} \]
# TRUE si la postura es favorable
datos$Favorable <- datos$Postura_Migracion == "Favorable"
tabla_prop <- table(datos$Sexo, datos$Favorable)
tabla_prop
##
## FALSE TRUE
## Hombre 39 12
## Mujer 35 14
prop.table()proporciones <- prop.table(tabla_prop, margin = 1)
proporciones
##
## FALSE TRUE
## Hombre 0.7647059 0.2352941
## Mujer 0.7142857 0.2857143
p_1 <- proporciones["Hombre", "TRUE"]
p_2 <- proporciones["Mujer", "TRUE"]
p_1
## [1] 0.2352941
p_2
## [1] 0.2857143
n_1 <- length(datos[datos$Sexo == "Hombre", ]$Postura_Migracion)
n_2 <- length(datos[datos$Sexo == "Mujer", ]$Postura_Migracion)
n_1
## [1] 51
n_2
## [1] 49
diferencia_proporciones <- p_1 - p_2
diferencia_proporciones
## [1] -0.05042017
error_estandar <- sqrt((p_1 * (1 - p_1) / n_1) + (p_2 * (1 - p_2) / n_2))
error_estandar
## [1] 0.08770967
alpha <- 0.05
z <- qnorm(1 - alpha / 2)
margen_error <- z * error_estandar
z
## [1] 1.959964
margen_error
## [1] 0.1719078
limite_inferior <- diferencia_proporciones - margen_error
limite_superior <- diferencia_proporciones + margen_error
ic4 <- c(limite_inferior, limite_superior)
ic4
## [1] -0.2223280 0.1214876
El intervalo estima la diferencia entre la proporción poblacional de hombres con postura favorable y la de mujeres con postura favorable, en ese orden. El valor 0 es el punto de referencia.
Con un 95 % de confianza, la diferencia entre ambas proporciones se encuentra entre -0.22 y 0.12. Como el intervalo contiene el 0, no hay evidencia estadística de que la proporción de personas con postura favorable sea distinta entre hombres y mujeres al 5 % de significancia. Aunque en la muestra las mujeres tienen una proporción algo mayor (28.6 % frente a 23.5 %), esa diferencia es compatible con que, en la población, no exista ninguna.
resumen_ic <- data.frame(
Intervalo = c("Una media", "Una proporción",
"Diferencia de medias", "Diferencia de proporciones"),
Parametro = c("Percepción media de la migración",
"Proporción con postura desfavorable",
"Percepción media: izquierda - derecha",
"Postura favorable: hombres - mujeres"),
Limite_inferior = round(c(ic1[1], ic2[1], ic3[1], ic4[1]), 3),
Limite_superior = round(c(ic1[2], ic2[2], ic3[2], ic4[2]), 3)
)
knitr::kable(resumen_ic)
| Intervalo | Parametro | Limite_inferior | Limite_superior |
|---|---|---|---|
| Una media | Percepción media de la migración | 5.050 | 5.858 |
| Una proporción | Proporción con postura desfavorable | 0.156 | 0.324 |
| Diferencia de medias | Percepción media: izquierda - derecha | 0.485 | 2.327 |
| Diferencia de proporciones | Postura favorable: hombres - mujeres | -0.222 | 0.121 |
En este trabajo se realizó un análisis exploratorio de la encuesta simulada sobre la percepción española frente a la migración marroquí y se construyeron manualmente cuatro intervalos de confianza al 95 %.
Mientras que el EDA describe únicamente a los 100 encuestados, los intervalos permiten estimar, con un margen de incertidumbre explícito, cómo sería la población española. Los resultados muestran que la percepción promedio de la población se ubica en la zona media de la escala (entre 5.05 y 5.86), y que entre un 15.6 % y un 32.4 % de la población tendría una postura desfavorable. El hallazgo más relevante es la diferencia por ideología: las personas de izquierda tienen una percepción de la migración más alta (más favorable) que las de derecha, ya que el intervalo de la diferencia (0.49 a 2.33) no incluye el 0. En cambio, entre hombres y mujeres no se encontró evidencia de diferencias en la proporción de posturas favorables, porque el intervalo correspondiente sí incluye el 0.
Esto sugiere que, en estos datos, la ideología política muestra una asociación clara con la percepción de la migración, mientras que para el sexo no se encontró evidencia de diferencia en la postura favorable (aunque ambos hallazgos se midieron con variables distintas, por lo que su comparación es solo orientativa). Como limitación, hay que recordar que los datos son simulados con fines académicos, por lo que estas conclusiones ilustran el método y no describen la opinión real de la población española. Además, los intervalos informan sobre asociaciones, no sobre causas.