Máster Universitario en Análisis Aplicado en Ciencias Sociales
Elaboración y Tratamiento de Encuestas
Autores:
Cándido David García Lorenzo;
Gabriel González Díaz;
José Manuel Viera González
Convocatoria de Enero 2026
Universidad de La Laguna
El trabajo consiste en elaborar una presentación en la que se exponga el proceso de operacionalización de un indicador socioeconómico (p.e. tasa de paro) elaborado por algún organismo estadístico cuyos microdatos sean accesibles.
Para ello deben:
A partir de la información metodológica de la operación estadística (ej: EPA), identificar como el diseño muestral y del cuestionario sirven a los objetivos vinculados al indicador (ej: se requieren resultados a nivel provincial, la actividad económica debe medirse para el conjunto de miembros del hogar, …).
Detallar el proceso de cálculo del indicador (ej: fichero de individuos -> identificar activos -> depuración parados -> cálculo de la tasa).
Importar, etiquetar y explotar en R un fichero de microdatos de la operación estadística de forma que se reproduzca algún resultado publicado del indicador (ej: tasa de paro por CCAA y trimestre, incluyendo ponderaciones).
Deberán entregar un documento (preferiblemente .pdf) con la presentación y el script con la importación y explotación de resultados. En el texto en línea deben señalar los integrantes del grupo.
En este trabajo se utiliza la Encuesta sobre el Gasto Turístico (EGT) del Instituto Canario de Estadística (ISTAC) para ejemplificar el proceso de operacionalización y reproducción de un indicador socioeconómico a partir de microdatos, es decir, el punto 3 del trabajo.
El indicador seleccionado es el Gasto Total Agregado realizado por los turistas en cada isla de Canarias, entendido como la estimación del gasto total poblacional atribuible a los turistas no residentes de 16 y más años que visitan Canarias durante el periodo de referencia.
Para este trabajo hemos seleccionado el fichero de microdatos correspondiente al:
por ser el trimestre más reciente para el que se disponen de datos en el momento que se comenzó la elaboración de este trabajo.
Enlace al dataset: https://www.gobiernodecanarias.org/istac/galerias/documentos/C00028A/egt-metodologia-2018-microdatos-2025q3.html
De acuerdo con la metodología de la Encuesta sobre el Gasto Turístico (EGT), la población objeto de estudio está formada por turistas no residentes en Canarias, y la información se recoge mediante entrevistas personales realizadas en los puntos de salida del archipiélago (aeropuertos y puertos), una vez finalizada la estancia. El gasto se asigna territorialmente a la isla de mayor estancia declarada por el entrevistado.
Este indicador no se obtiene a partir de una única pregunta directa del cuestionario. En la EGT, el gasto se recoge a nivel de grupo de viaje y por partidas (p. ej., vuelo, alojamiento y gasto en destino), junto con el número de integrantes del grupo. Por tanto, es necesario reconstruir el gasto por turista mediante:
Gasto del grupo = vuelo + alojamiento + gasto en destino
Gasto por turista = (gasto del grupo) / (nº de integrantes)
Una vez calculado el gasto por turista, se incorpora el factor de ponderación (PESO) para elevar los resultados a población y se agregan por isla, con el objetivo de reproducir resultados publicados (o comparables) por el organismo estadístico.
Documento metodológico: chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://www.gobiernodecanarias.org/istac/descargas/C00028A/2018/EGT-2018-metodologia.pdf
if (!requireNamespace("pacman", quietly = TRUE)) {
install.packages("pacman")
}
library(pacman)
p_load(
tidyverse, # dplyr, ggplot2, tidyr, readr, etc.
readxl, # leer Excel
readr,
scales, # escalas y porcentajes
likert, # análisis Likert
Hmisc, # utilidades estadísticas
expss, # tablas de encuestas
survey, # para trabajar con encuestas y ponderar
tinytex
)
Enlace al dataset: https://www.gobiernodecanarias.org/istac/galerias/documentos/C00028A/egt-metodologia-2018-microdatos-2025q3.html
egt <- read_csv("J:/Mi unidad/2025-2025 MUAAC (compartido)/1 CUTRIMESTRE/5. Elaboración y tratamiento de encuestas X/R_MICRODATOS/DATA/C00028A_2025Q2.csv", locale = locale(encoding = "ISO-8859-1"))
## Rows: 9083 Columns: 200
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (86): AEROPUERTO_ORIGEN, PAIS_DESTINO, SEXO, NACIONALIDAD, PAIS_RESIDEN...
## dbl (114): NUMERO_CUESTIONARIO, OLA, EDAD, NO_DESTINOS_TASA_TURISTICA, CANAL...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(egt,5)
## # A tibble: 5 × 200
## NUMERO_CUESTIONARIO OLA AEROPUERTO_ORIGEN PAIS_DESTINO SEXO EDAD
## <dbl> <dbl> <chr> <chr> <chr> <dbl>
## 1 96 4 ES_GCLA 724_XES70 M 80
## 2 886 4 ES_GCTS 056 M 69
## 3 886 6 ES_GCFV 276 M 36
## 4 995 6 ES_GCFV 276 M 34
## 5 990 6 ES_GCRR 724_XES70 F 43
## # ℹ 194 more variables: NACIONALIDAD <chr>, PAIS_RESIDENCIA <chr>,
## # NUTS_1 <chr>, PROVINCIA_RESIDENCIA <chr>, PROPOSITO <chr>,
## # PROPOSITO_OTRO_COD <chr>, MOTIVACION <chr>, MOTIVACION_OTRO_COD <chr>,
## # OTRO_DESTINO_NINGUNO <chr>, OTRO_DESTINO_CANARIAS <chr>,
## # OTRO_DESTINO_BALEARES <chr>, OTRO_DESTINO_ESPAÑA <chr>,
## # OTRO_DESTINO_ITALIA <chr>, OTRO_DESTINO_FRANCIA <chr>,
## # OTRO_DESTINO_TURQUIA <chr>, OTRO_DESTINO_GRECIA <chr>, …
Vemos su estructura
dim(egt)
## [1] 9083 200
Estamos trabajando con 9 mil filas (que son los casos, turistas encuestados)
y 200 columnas, que son las variables
Vamos a quedarnos solo con aquellas variables de interés
egt_filtered <- egt |> select( ISLA,
PERSONAS_16_O_MAS,
GASTO_EUROS,
COSTE_ALOJ_EUROS,
COSTE_VUELOS_EUROS,
NACIONALIDAD,
PESO
)
head(egt_filtered,5)
## # A tibble: 5 × 7
## ISLA PERSONAS_16_O_MAS GASTO_EUROS COSTE_ALOJ_EUROS COSTE_VUELOS_EUROS
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 ES707 2 300 0 0
## 2 ES709 2 1200. 0 500.
## 3 ES704 2 950. 0 750.
## 4 ES704 1 235. 0 320.
## 5 ES708 1 2350 0 580
## # ℹ 2 more variables: NACIONALIDAD <chr>, PESO <dbl>
Vemos los valores de las variables categóricas:
unique(egt_filtered$ISLA)
## [1] "ES707" "ES709" "ES704" "ES708" "ES705"
## [6] "_Z" "ES706_ES703"
Reemplazamos los códigos de
ISLApor el nombre de la isla.
egt_filtered_labels <- egt_filtered |>
mutate(ISLA = factor(
ISLA,
levels = c("ES707","ES709", "ES704", "ES708","ES705", "_Z", "ES706_ES703"),
labels = c("La Palma", "Tenerife","Fuerteventura", "Lanzarote", "Gran Canaria", "NA", "El Hierro/La Gomera")
)
)
Comprobamos:
as.data.frame(table(egt_filtered_labels$ISLA)) |> arrange(desc(Freq))
## Var1 Freq
## 1 Tenerife 3241
## 2 Gran Canaria 2320
## 3 Lanzarote 1514
## 4 Fuerteventura 1279
## 5 La Palma 607
## 6 NA 69
## 7 El Hierro/La Gomera 53
Creamos la columna GASTO_GRUPO como suma del gasto en
vuelo (COSTE_VUELOS_EUROS), el gasto en alojamiento
(COSTE_ALOJ_EUROS) y el gasto en destino
(GASTO_EUROS).
egt_filtered_labels <- egt_filtered_labels |>
mutate(GASTO_GRUPO = COSTE_VUELOS_EUROS + COSTE_ALOJ_EUROS + GASTO_EUROS)
print(egt_filtered_labels)
## # A tibble: 9,083 × 8
## ISLA PERSONAS_16_O_MAS GASTO_EUROS COSTE_ALOJ_EUROS COSTE_VUELOS_EUROS
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 La Palma 2 300 0 0
## 2 Tenerife 2 1200. 0 500.
## 3 Fuertevent… 2 950. 0 750.
## 4 Fuertevent… 1 235. 0 320.
## 5 Lanzarote 1 2350 0 580
## 6 Tenerife 2 200 0 120
## 7 Lanzarote 2 840 0 703.
## 8 Gran Canar… 2 110. 0 200.
## 9 Gran Canar… 1 80.0 0 180
## 10 Gran Canar… 1 190 0 200
## # ℹ 9,073 more rows
## # ℹ 3 more variables: NACIONALIDAD <chr>, PESO <dbl>, GASTO_GRUPO <dbl>
A continuación, se calcula el gasto por turista sin ponderar
(GASTO_TURISTA_SIN_W) dividiendo el gasto total del grupo
(GASTO_GRUPO) entre el número de personas de 16 o más años
que lo componen (PERSONAS_16_O_MAS).
egt_filtered_labels <- egt_filtered_labels |>
mutate(GASTO_TURISTA_SIN_W = GASTO_GRUPO / PERSONAS_16_O_MAS)
print(egt_filtered_labels)
## # A tibble: 9,083 × 9
## ISLA PERSONAS_16_O_MAS GASTO_EUROS COSTE_ALOJ_EUROS COSTE_VUELOS_EUROS
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 La Palma 2 300 0 0
## 2 Tenerife 2 1200. 0 500.
## 3 Fuertevent… 2 950. 0 750.
## 4 Fuertevent… 1 235. 0 320.
## 5 Lanzarote 1 2350 0 580
## 6 Tenerife 2 200 0 120
## 7 Lanzarote 2 840 0 703.
## 8 Gran Canar… 2 110. 0 200.
## 9 Gran Canar… 1 80.0 0 180
## 10 Gran Canar… 1 190 0 200
## # ℹ 9,073 more rows
## # ℹ 4 more variables: NACIONALIDAD <chr>, PESO <dbl>, GASTO_GRUPO <dbl>,
## # GASTO_TURISTA_SIN_W <dbl>
Ahora ponderamos el gasto
egt_filtered_labels <- egt_filtered_labels |>
mutate(GASTO_TURISTA_W = GASTO_TURISTA_SIN_W * PESO)
print(egt_filtered_labels)
## # A tibble: 9,083 × 10
## ISLA PERSONAS_16_O_MAS GASTO_EUROS COSTE_ALOJ_EUROS COSTE_VUELOS_EUROS
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 La Palma 2 300 0 0
## 2 Tenerife 2 1200. 0 500.
## 3 Fuertevent… 2 950. 0 750.
## 4 Fuertevent… 1 235. 0 320.
## 5 Lanzarote 1 2350 0 580
## 6 Tenerife 2 200 0 120
## 7 Lanzarote 2 840 0 703.
## 8 Gran Canar… 2 110. 0 200.
## 9 Gran Canar… 1 80.0 0 180
## 10 Gran Canar… 1 190 0 200
## # ℹ 9,073 more rows
## # ℹ 5 more variables: NACIONALIDAD <chr>, PESO <dbl>, GASTO_GRUPO <dbl>,
## # GASTO_TURISTA_SIN_W <dbl>, GASTO_TURISTA_W <dbl>
gasto_isla <- egt_filtered_labels |>
group_by(ISLA) |>
summarise(
gasto_sin_w = sum(GASTO_TURISTA_SIN_W, na.rm = TRUE),
gasto_w = sum(GASTO_TURISTA_W, na.rm = TRUE),
diff_gasto = gasto_w - gasto_sin_w,
.groups = "drop"
) |>
arrange(desc(diff_gasto))
gasto_isla
## # A tibble: 7 × 4
## ISLA gasto_sin_w gasto_w diff_gasto
## <fct> <dbl> <dbl> <dbl>
## 1 Tenerife 3869510. 1717889036. 1714019526.
## 2 Gran Canaria 3213445. 1179378883. 1176165438.
## 3 Lanzarote 1836810. 795597948. 793761138.
## 4 Fuerteventura 1584161. 653333188. 651749028.
## 5 La Palma 671652. 44452926. 43781274.
## 6 NA 112565. 5421758. 5309193.
## 7 El Hierro/La Gomera 75389. 4741864. 4666474.
La tabla muestra que el gasto turístico total agregado ponderado es muy superior al observado sin ponderar en todas las islas. Esto refleja la corrección que introducen los pesos muestrales al elevar la información de la muestra a la población y pone de manifiesto la infraestimación del gasto cuando no se aplica ponderación.
En el fichero de microdatos no existe un dato global para Canarias, ya que el total regional se obtiene como la suma del gasto ponderado de todas las observaciones del archivo.
Por ello, y con el fin de comparar posteriormente nuestros resultados con los datos oficiales publicados por el ISTAC, construimos el valor correspondiente al gasto turístico total agregado para Canarias (ES70) a partir de los microdatos. Lo que haremos es una nueva fila que haga la suma:
fila_canarias <- gasto_isla |>
summarise(
ISLA = "Canarias",
gasto_sin_w = sum(gasto_sin_w, na.rm = TRUE),
gasto_w = sum(gasto_w, na.rm = TRUE),
diff_gasto = gasto_w - gasto_sin_w
)
gasto_isla_final <- bind_rows(gasto_isla, fila_canarias) |>
arrange(desc(diff_gasto))
gasto_isla_final
## # A tibble: 8 × 4
## ISLA gasto_sin_w gasto_w diff_gasto
## <chr> <dbl> <dbl> <dbl>
## 1 Canarias 11363531. 4400815602. 4389452070.
## 2 Tenerife 3869510. 1717889036. 1714019526.
## 3 Gran Canaria 3213445. 1179378883. 1176165438.
## 4 Lanzarote 1836810. 795597948. 793761138.
## 5 Fuerteventura 1584161. 653333188. 651749028.
## 6 La Palma 671652. 44452926. 43781274.
## 7 NA 112565. 5421758. 5309193.
## 8 El Hierro/La Gomera 75389. 4741864. 4666474.
Una vez calculados los gastos turísticos totales agregados ponderados para cada isla y para el conjunto de Canarias, se cargan los datos oficiales del ISTAC con el fin de elaborar una tabla comparativa entre ambas fuentes.
Estos son los datos oficiales publicados por el ISTAC para el gasto turírstico total agregado (Q2-202 por islas:
Que además los cargamos en un objeto para comparar con los nuestros
egt_istac_2025_q2 <- read_delim("J:/Mi unidad/2025-2025 MUAAC (compartido)/1 CUTRIMESTRE/5. Elaboración y tratamiento de encuestas X/R_MICRODATOS/DATA/EGT_ISTAC_2025_Q2.tsv",
delim = "\t", escape_double = FALSE,
trim_ws = TRUE)
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
## dat <- vroom(...)
## problems(dat)
## Rows: 6 Columns: 11
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: "\t"
## chr (6): MEDIDAS, CONCEPTOS_GASTOS_TURISTICOS, TIME_PERIOD, TERRITORIO, TERR...
## dbl (1): OBS_VALUE
## lgl (4): NOTAS_OBSERVACION, CONFIDENCIALIDAD_OBSERVACION, ESTADO_OBSERVACION...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
print(egt_istac_2025_q2)
## # A tibble: 6 × 11
## MEDIDAS CONCEPTOS_GASTOS_TURISTICOS TIME_PERIOD TERRITORIO TERRITORIO_CODE
## <chr> <chr> <chr> <chr> <chr>
## 1 Gasto Total 2025 Segundo t… Canarias ES70
## 2 Gasto Total 2025 Segundo t… Lanzarote ES708
## 3 Gasto Total 2025 Segundo t… Fuerteven… ES704
## 4 Gasto Total 2025 Segundo t… Gran Cana… ES705
## 5 Gasto Total 2025 Segundo t… Tenerife ES709
## 6 Gasto Total 2025 Segundo t… La Palma ES707
## # ℹ 6 more variables: PAIS_RESIDENCIA <chr>, OBS_VALUE <dbl>,
## # NOTAS_OBSERVACION <lgl>, CONFIDENCIALIDAD_OBSERVACION <lgl>,
## # ESTADO_OBSERVACION <lgl>, ESTADO_OBSERVACION_CODE <lgl>
Vemos el nombre de las variables:
colnames(egt_istac_2025_q2)
## [1] "MEDIDAS" "CONCEPTOS_GASTOS_TURISTICOS"
## [3] "TIME_PERIOD" "TERRITORIO"
## [5] "TERRITORIO_CODE" "PAIS_RESIDENCIA"
## [7] "OBS_VALUE" "NOTAS_OBSERVACION"
## [9] "CONFIDENCIALIDAD_OBSERVACION" "ESTADO_OBSERVACION"
## [11] "ESTADO_OBSERVACION_CODE"
Filtramos para quedarnos solo con las variables que nos interesan:
egt_istac_filtered <- egt_istac_2025_q2 |>
select(TERRITORIO,
OBS_VALUE
)
print(egt_istac_filtered)
## # A tibble: 6 × 2
## TERRITORIO OBS_VALUE
## <chr> <dbl>
## 1 Canarias 4400815602.
## 2 Lanzarote 795597948.
## 3 Fuerteventura 653333188.
## 4 Gran Canaria 1179378883.
## 5 Tenerife 1717889036.
## 6 La Palma 44452926.
Vamos a incorporar a la tabla que contiene los datos oficiales del ISTAC sobre el gasto turístico total agregado las estimaciones que hemos obtenido a partir de los microdatos, tanto ponderadas como sin ponderar, con el fin de comparar los resultados.
tabla_comparativa <- egt_istac_filtered |>
left_join(
gasto_isla_final |>
select(ISLA, gasto_w, gasto_sin_w),
by = c("TERRITORIO" = "ISLA")
)
tabla_comparativa
## # A tibble: 6 × 4
## TERRITORIO OBS_VALUE gasto_w gasto_sin_w
## <chr> <dbl> <dbl> <dbl>
## 1 Canarias 4400815602. 4400815602. 11363531.
## 2 Lanzarote 795597948. 795597948. 1836810.
## 3 Fuerteventura 653333188. 653333188. 1584161.
## 4 Gran Canaria 1179378883. 1179378883. 3213445.
## 5 Tenerife 1717889036. 1717889036. 3869510.
## 6 La Palma 44452926. 44452926. 671652.
Como se observa, el gasto turístico total agregado ponderado, estimado a partir de los microdatos, coincide prácticamente con el gasto turístico total agregado publicado por el ISTAC en su página web.
Para comprobarlo de forma más precisa, se calcula un indicador de
diferencia entre el valor publicado (OBS_VALUE) y el gasto
turístico total agregado ponderado estimado a partir de los microdatos
(gasto_w).
tabla_comparativa <- tabla_comparativa |>
mutate(
DIF_MICRO_PUB = OBS_VALUE - gasto_w
)
print(tabla_comparativa)
## # A tibble: 6 × 5
## TERRITORIO OBS_VALUE gasto_w gasto_sin_w DIF_MICRO_PUB
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Canarias 4400815602. 4400815602. 11363531. -0.0322
## 2 Lanzarote 795597948. 795597948. 1836810. 0.00442
## 3 Fuerteventura 653333188. 653333188. 1584161. -0.0143
## 4 Gran Canaria 1179378883. 1179378883. 3213445. -0.0463
## 5 Tenerife 1717889036. 1717889036. 3869510. -0.0284
## 6 La Palma 44452926. 44452926. 671652. 0.00300
Los resultados muestran que dichas diferencias son mínimas, del orden de las centésimas, y pueden atribuirse a los distintos criterios de redondeo aplicados tanto en los datos publicados por el ISTAC como en los microdatos utilizados en el análisis.
En cambio, resulta evidente que, si no se aplicara la ponderación, el gasto turístico total agregado se alejaría considerablemente del valor oficial publicado, lo que pone de manifiesto la importancia de utilizar los pesos muestrales en este tipo de análisis.
En este trabajo se ha utilizado la información de microdatos de la EGT del ISTAC para reconstruir el gasto turístico total agregado a partir de variables del tamaño del grupo y del gasto por conceptos.
En primer lugar, se construyó el gasto total del grupo
(GASTO_GRUPO) como suma de sus componentes —gasto en vuelo,
alojamiento y destino— y, a continuación, se obtuvo el gasto por turista
dividiendo dicho gasto entre el número de personas del grupo de 16 o más
años (PERSONAS_16_O_MAS), generando la variable
GASTO_TURISTA_SIN_W.
Posteriormente, se agregaron los resultados por isla y para el
conjunto de Canarias, comparando las estimaciones sin ponderar con las
ponderadas mediante la variable de pesos (PESO). Esta
comparación pone de manifiesto que trabajar sin ponderación describe
únicamente la muestra entrevistada y conduce a una infraestimación
importante del gasto agregado, mientras que la ponderación permite
elevar los resultados a población y corregir desajustes derivados del
diseño muestral y/o la no respuesta.
Finalmente, la validación externa con los datos oficiales del ISTAC
muestra que el gasto turístico total agregado ponderado calculado a
partir de microdatos reproduce de forma muy precisa los valores
publicados (OBS_VALUE), observándose únicamente diferencias
mínimas atribuibles a criterios de redondeo.
El proceso de reconstrucción del gasto turístico total agregado a partir de los microdatos de la EGT ha permitido comprender en profundidad la metodología aplicada por el ISTAC y sus implicaciones analíticas. En particular, el cálculo del gasto por turista se basa en la división del gasto total del grupo entre el número de personas de 16 y más años, que constituyen la población objeto de estudio de la encuesta.
Este enfoque garantiza la coherencia entre la definición poblacional, los factores de ponderación y los estimadores utilizados, y permite reproducir con gran precisión los valores oficiales del gasto turístico total agregado publicados por el ISTAC. No obstante, el análisis detallado del procedimiento pone de manifiesto una posible limitación conceptual: en los grupos de viaje que incluyen menores, parte del gasto generado por estos se atribuye implícitamente a los adultos, al no incorporarse los niños en el denominador del cálculo del gasto medio.
Esta decisión metodológica puede conducir a una sobreestimación del gasto medio por turista adulto en determinados perfiles de viaje, especialmente en aquellos con presencia significativa de menores. El propio documento metodológico del ISTAC reconoce esta cuestión y plantea, a nivel teórico, la posibilidad de utilizar escalas de equivalencia que ponderen de forma diferenciada a adultos y niños. Sin embargo, dichas escalas no se aplican en la estadística oficial con el fin de preservar la coherencia poblacional, la comparabilidad temporal y la alineación con las recomendaciones internacionales.
En consecuencia, aunque el método utilizado resulta adecuado para la estimación del gasto turístico total agregado y para su comparación con fuentes oficiales, conviene tener presente esta limitación a la hora de interpretar indicadores de gasto medio, especialmente en análisis desagregados por tipología de grupo o estructura familiar.