ACCESO A LA VIVIENDA Y TURISTIFICACIÓN

Consecuencias del turismo masivo en el acceso a la vivienda

trabajo BigData
vivienda
Autores/as

Lamyaâ Abdaym (lamyaa@alumni.uv.es)

Andrea Segovia (ansegon3@alumni.uv.es)

Tomás Berríos (tobesua@alumni.uv.es)

Fecha de Publicación

30 de diciembre de 2024

Resumen
El presente trabajo, titulado Acceso a la Vivienda y Turistificación, tiene como objetivo analizar el impacto de la turistificación en el acceso a la vivienda en España. En las últimas décadas, el fenómeno de la turistificación ha experimentado un crecimiento notable, especialmente en ciudades con alta afluencia turística, lo que ha generado una serie de cambios en el mercado inmobiliario. Este estudio se enfoca en evaluar cómo la turistificación influye en los precios de la vivienda, la disponibilidad de alquileres y las dinámicas socioeconómicas de las ciudades más afectadas por este fenómeno. Se exploran factores como el aumento de la demanda de propiedades turísticas, la conversión de viviendas en alquileres de corta duración y sus efectos en la calidad de vida de los residentes permanentes. A través de un análisis de datos recientes y la comparación entre ciudades con diferentes niveles de turistificación, se busca proporcionar una visión integral de los retos y oportunidades asociados con la relación entre el turismo y el acceso a la vivienda en el contexto urbano español.

Introducción

En este trabajo, abordaremos el análisis de varios aspectos clave relacionados con el acceso a la vivienda en España, utilizando datos provenientes del INE. En primer lugar, realizaremos un estudio sobre la evolución de los salarios en el país, con el objetivo de comparar el poder adquisitivo a lo largo del tiempo y evaluar cómo ha cambiado en los últimos años. Después nos centraremos en el análisis de la oferta de vivienda y la evolución de los precios en las principales ciudades españolas, identificando las tendencias más relevantes en el mercado inmobiliario. Finalmente, compararemos la oferta de vivienda convencional con la oferta de viviendas turísticas, analizando cómo la turistificación afecta el acceso a la vivienda y contribuye a la transformación de las dinámicas urbanas. Este análisis nos permitirá obtener una visión integral de los desafíos actuales en el mercado de la vivienda, así como de las posibles soluciones y recomendaciones para mitigar los impactos negativos sobre los residentes permanentes.

Los paquetes se pueden cargar en la memoria de de R/RStudio de esta forma:

Código
library(tidyverse)
library(knitr)
library(httr)
library(jsonlite)
library(dplyr)
library(devtools) #install.packages("devtools")
library(eurostat)
library(plotly) #install.packages("plotly")
library(gganimate) #install.packages("gganimate")
library(leaflet)
library(readxl)
library(gifski)
library(magick)
library(tmap) #install.packages("tmap")
library(sf) #install.packages("sf")
library(rnaturalearth)
  

Importación y preparación de datos salariales

El objetivo de este apartado es analizar la evolución de los salarios en España en los últimos años para, posteriormente, evaluar cómo influyen en el acceso a la vivienda.

Para ello, hemos seleccionado datos del INE que recogen tanto los salarios medios desde 2008 hasta 2022 como los salarios más frecuentes (la moda). Esto nos permite evidenciar que la media salarial no es una medida representativa para abordar el acceso a la vivienda, ya que está condicionada por los extremos salariales más altos y más bajos.

Por este motivo, hemos comparado la media con el salario más común en estos años, lo que ofrece una visión más realista de la situación económica de la mayoría de los ciudadanos y ciudadanas.

Importar base de datos de salarios

Código
  # Definimos la ruta para importar los datos de salarios
  data_ruta <- here::here("assets", "salario_esp.xlsx")
  datos_salarios <- rio::import(data_ruta)
  
  # Confirmar que los datos se han importado correctamente
  head(datos_salarios)  # Ver las primeras filas
#>   años salario_medio salario_mediana
#> 1 2022      26948.87        22383.11
#> 2 2021      25896.82        21638.69
#> 3 2020      25165.51        20920.12
#> 4 2019      24395.98        20351.02
#> 5 2018      24009.12        20078.44
#> 6 2017      23646.50        19830.12

Transformar los datos a formato largo

Código
  # Transformar los datos de salarios a formato largo
  # Esto facilita la creación de gráficos comparativos
  datos_largos <- datos_salarios %>%
    pivot_longer(
      cols = c("salario_medio", "salario_mediana"), 
      names_to = "tipo_salario", 
      values_to = "valor"
    )
  
  # Eliminar el dataframe original para liberar memoria
  rm(datos_salarios)

Gráfico de barras - Evolución de salarios

Código
  # Crear un gráfico de barras interactivo
  plot_ly(datos_largos, 
          x = ~años, 
          y = ~valor, 
          color = ~tipo_salario, 
          type = 'bar', 
          text = ~paste(tipo_salario, ": ", valor, "€"),
          hoverinfo = 'text') %>%
    layout(
      title = "Evolución de los Salarios en España (2008-2024)",
      xaxis = list(title = "Año", tickangle = 45),
      yaxis = list(title = "Salario (€)"),
      barmode = "group"
    )

Importación y preparación de datos de salario mensual

Importar base de datos

Código
# Importar los datos del salario mensual
mensual_ruta <- here::here("assets", "salario_mensual.xlsx")
datos_salarios_mensual <- rio::import(mensual_ruta)
  
# Verificar la correcta importación
head(datos_salarios_mensual)
#>   años medio_mensual mediana_mensual
#> 1 2022      2245.739        1865.259
#> 2 2021      2158.068        1803.224
#> 3 2020      2097.126        1743.343
#> 4 2019      2032.998        1695.918
#> 5 2018      2000.760        1673.203
#> 6 2017      1970.542        1652.510

Transformación y gráfico

Código
  # Transformar los datos al formato largo
  datos_largos_mensual <- datos_salarios_mensual %>%
    pivot_longer(
      cols = c("medio_mensual", "mediana_mensual"), 
      names_to = "tipo_salario", 
      values_to = "valor"
    )
  
  # Eliminar el dataframe original
  rm(datos_salarios_mensual)
  
  # Crear gráfico de barras para salarios mensuales
  plot_ly(datos_largos_mensual, 
          x = ~años, 
          y = ~valor, 
          color = ~tipo_salario, 
          type = 'bar', 
          text = ~paste(tipo_salario, ": ", valor, "€")) %>%
    layout(
      title = "Evolución del Salario Mensual en España (2008-2024)",
      xaxis = list(title = "Año", tickangle = 45),
      yaxis = list(title = "Salario (€)"),
      barmode = "group"
    )

El primer gráfico muestra la evolución de esta comparación en términos anuales, mientras que el segundo lo hace en términos mensuales. Como podemos observar, el salario más común siempre es inferior a la media salarial, lo que evidencia que la media no refleja la realidad de la mayoría de los trabajadores. Esta diferencia resalta la desconexión entre los salarios más altos y más bajos, y cómo estos extremos afectan la percepción del poder adquisitivo y el acceso a la vivienda.

Análisis de IPV - Preparación de datos panel

Importar base de datos IPV

Código
  # Importar base de datos IPV
  ipv <- read_excel("./assets/ipv.xlsx", sheet = "usar")
  
  # Reorganizar la base de datos para formato panel
  datos_panel_ipv <- ipv %>%
    pivot_longer(cols = -year, names_to = "region", values_to = "valor") %>%
    arrange(year, region) %>%
    mutate(year = as.numeric(year))

Boxplot por región

Código
  # Crear boxplot para comparar valores por región
  library(ggplot2)
  
  ggplot(datos_panel_ipv, aes(x = region, y = valor, fill = region)) +
    geom_boxplot() +
    labs(title = "Distribución de valores por región", x = "Región", y = "Valor") +
    theme_minimal() +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))

El boxplot muestra la distribución de valores por región, permitiendo comparar la variabilidad y los niveles centrales de los datos entre las diferentes comunidades autónomas. Las cajas representan el rango intercuartil (IQR), donde la línea negra central indica la mediana de los valores, mientras que los bigotes y puntos extremos reflejan la dispersión y la presencia de posibles valores atípicos.

Se observa que regiones como Madrid y Cataluña presentan una mayor dispersión en los datos, evidenciada por bigotes más largos y rangos intercuartiles más amplios, lo que indica una alta variabilidad en estas zonas. Asimismo, estas regiones, junto con País Vasco, destacan con valores medianos y máximos más altos, reflejando un mercado inmobiliario con precios más elevados. Por otro lado, comunidades como Extremadura, Melilla y Ceuta muestran valores más bajos, con medianas cercanas a 100 y rangos intercuartiles más estrechos, lo que sugiere una menor variabilidad y niveles de precios más estables.

Regiones como Castilla-La Mancha, Canarias y Galicia presentan distribuciones más uniformes, con rangos intercuartiles más reducidos, lo que indica menor dispersión en los valores de estas zonas. La categoría Nacional, que actúa como un promedio global, muestra una distribución intermedia, sirviendo como referencia para comparar la posición de las demás regiones en el conjunto de datos.

En conclusión, el gráfico refleja diferencias significativas en la distribución de valores entre regiones, con Madrid y Cataluña liderando en valores más altos y dispersos, mientras que Extremadura y Melilla se ubican en el extremo opuesto con valores más bajos y menor variabilidad. La categoría Nacional proporciona una visión global para entender el comportamiento agregado del mercado.

Análisis y gráficos animados

Evolución de precios

Código
# Seleccionar regiones y calcular el promedio general
regiones_elegidas <- c("Comunitat Valenciana", "Madrid", "Cataluña")
datos_filtrados <- datos_panel_ipv %>%
  filter(region %in% regiones_elegidas)

#limpiamos la base 
datos_filtrados %>%
  filter(is.na(year) | is.na(valor)) %>%
  print()
#> # A tibble: 0 × 3
#> # ℹ 3 variables: year <dbl>, region <chr>, valor <dbl>
#> # A tibble: 0 × 3
#> # ℹ 3 variables: year <dbl>, region <chr>, valor <dbl>

# Crear el gráfico animado
grafico_animado <- ggplot(datos_filtrados, aes(x = year, y = valor, color = region, group = region)) +
  geom_line(size = 1.2) +
  geom_point(size = 2) +
  scale_color_manual(values = c("Cataluña" = "blue", "Comunitat Valenciana" = "green", 
                                "Madrid" = "red")) +
  labs(
    title = "Evolución de Precios de Viviendas",
    x = "Año", y = "Precio", color = "Región"
  ) +
  theme_minimal() +
  transition_reveal(year)
grafico_animado

El gráfico muestra la evolución de los precios de viviendas en Cataluña, Madrid y la Comunitat Valenciana entre 2007 y 2023, reflejando tres fases clave: una caída drástica entre 2007 y 2013, atribuida a la crisis financiera global de 2008, donde los precios tocaron fondo en 2013, especialmente en Cataluña y Madrid. A partir de 2014-2015, se observa una recuperación sostenida, impulsada por la reactivación económica y el aumento de la demanda, especialmente en regiones metropolitanas como Madrid y Cataluña, que muestran un crecimiento más acelerado, alcanzando niveles cercanos a 150 en 2023. En contraste, la Comunitat Valenciana presenta una recuperación más moderada y pausada, lo que sugiere menor presión del mercado inmobiliario. Estas diferencias regionales destacan el papel de Madrid como el mercado más dinámico, seguido de Cataluña, evidenciando la importancia de las grandes ciudades en el proceso de recuperación del sector inmobiliario español.

Análisis adicional con Heatmap

Código
  # Crear un heatmap
  p <- ggplot(datos_filtrados, aes(x = region, y = year, fill = valor)) +
    geom_tile(color = "white") +
    scale_fill_viridis_c(name = "Valor", option = "plasma") +
    labs(title = "Heatmap Valores por Región y Año", x = "Región", y = "Año") +
    theme_minimal() +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))
  
  # Mostrar heatmap
  p

Este heatmap presenta la distribución de los valores de precios de viviendas en las regiones de Cataluña, Comunitat Valenciana y Madrid a lo largo de los años 2010, 2015 y 2020. Los colores representan la magnitud de los valores, donde tonos más claros (amarillo) indican valores más altos, y tonos oscuros (azul oscuro) reflejan valores más bajos.

En 2010, se observan altos valores en Cataluña y Madrid (colores amarillos), mientras que la Comunitat Valenciana presenta valores más moderados (naranja). Para 2015, el gráfico muestra un descenso generalizado de los valores en todas las regiones, con predominio de tonos oscuros (azul), indicando que fue el período más bajo en términos de precios, probablemente debido a la crisis financiera de 2008-2013. En 2020, los valores muestran una recuperación gradual, especialmente en Madrid y Cataluña, donde los colores vuelven a tonalidades más claras (rosado y naranja), mientras que la Comunitat Valenciana mantiene valores relativamente moderados. En conclusión, el heatmap refleja el impacto de la crisis económica con una caída marcada de los valores en 2015, seguida de una recuperación desigual en 2020, donde Madrid y Cataluña lideran la recuperación, mientras que la Comunitat Valenciana presenta un crecimiento más moderado.


Aumento del número de viviendas turísticas por CCAA

Código
library(tidyverse)
library(sf) 
# definimos la ruta para poder importar los datos
ruta <- here::here("assets", "viv_tur_2020.xlsx")
viv_tur_2020 <- rio::import(ruta)

df_viv_tur_2020 <- viv_tur_2020



#- cargo geometrías de provincias
df_geo_prov <- pjpv.curso.R.2022::LAU2_prov_2020_canarias
plot(df_geo_prov, max.plot = 1)

#- podemos ver que la última columna de df_geo_prov tiene las "geometrías"
names(df_geo_prov)
#>  [1] "ine_prov"       "ine_prov.n"     "ine_ccaa"       "ine_ccaa.n"    
#>  [5] "pob_2020"       "ine_ccaa.n.pjp" "X"              "Y"             
#>  [9] "geometry"       "X1"             "Y1"
head(df_geo_prov)
#> Simple feature collection with 6 features and 10 fields
#> Geometry type: GEOMETRY
#> Dimension:     XY
#> Bounding box:  xmin: -7.335962 ymin: 35.93765 xmax: 0.2342113 ymax: 43.21719
#> Geodetic CRS:  ETRS89
#>   ine_prov       ine_prov.n ine_ccaa           ine_ccaa.n pob_2020
#> 1       01      Araba/Álava       16           País Vasco   333940
#> 2       02         Albacete       08   Castilla-La Mancha   388270
#> 3       03 Alicante/Alacant       10 Comunitat Valenciana  1879888
#> 4       04          Almería       01            Andalucía   727945
#> 5       05            Ávila       07      Castilla y León   157664
#> 6       06          Badajoz       11          Extremadura   672137
#>         ine_ccaa.n.pjp          X        Y                       geometry
#> 1           País Vasco -2.7204263 42.83501 POLYGON ((-3.144822 42.7568...
#> 2   Castilla-La Mancha -1.9803024 38.82542 POLYGON ((-2.827264 39.0983...
#> 3 Comunitat Valenciana -0.5686032 38.47860 MULTIPOLYGON (((-1.085173 3...
#> 4            Andalucía -2.3448084 37.19612 MULTIPOLYGON (((-3.057583 3...
#> 5      Castilla y León -4.9455672 40.57104 POLYGON ((-5.700885 40.2891...
#> 6          Extremadura -6.1413874 38.70980 POLYGON ((-7.179114 39.1811...
#>           X1       Y1
#> 1 -2.7204263 42.83501
#> 2 -1.9803024 38.82542
#> 3 -0.5686032 38.47860
#> 4 -2.3448084 37.19612
#> 5 -4.9455672 40.57104
#> 6 -6.1413874 38.70980

#- me quedo con las vv. q me interesan
df_geo_prov <- df_geo_prov %>% select(ine_prov, ine_prov.n, ine_ccaa, ine_ccaa.n)
names(df_geo_prov)
#> [1] "ine_prov"   "ine_prov.n" "ine_ccaa"   "ine_ccaa.n" "geometry"

#- podemos "agregar" geometrías
df_geo_ccaa <- df_geo_prov %>%
  group_by(ine_ccaa, ine_ccaa.n) %>% summarize() %>% ungroup()
plot(df_geo_ccaa, max.plot = 1)
names(df_geo_ccaa)
#> [1] "ine_ccaa"   "ine_ccaa.n" "geometry"


#- junto geometría (df_geo_ccaa) con datos INE (df_viv_tur_2020)
#- las geometrías a la izquierda
df_ok <- left_join(df_geo_ccaa, df_viv_tur_2020, by = c("ine_ccaa.n" = "ccaa"))
names(df_ok)
#> [1] "ine_ccaa"             "ine_ccaa.n"           "geometry"            
#> [4] "viviendas_turisticas"

#- basic plot
p <- ggplot() +
  geom_sf(data = df_ok,
          aes(geometry = geometry, fill = viviendas_turisticas),
          color = "white", size = 0.09)

p + scale_fill_distiller(palette = 2)
p + pjpv.curso.R.2022::theme_pjp_maps()
p + scale_fill_viridis_c(option = "plasma") 


#- mejoramos un poco el plot ---------------------------------------------------
#- para ello calculo centroides
library(sf)
df_geo_ccaa <- cbind(df_geo_ccaa, st_coordinates(st_centroid(df_geo_ccaa$geometry)))
names(df_geo_ccaa)
#> [1] "ine_ccaa"   "ine_ccaa.n" "X"          "Y"          "geometry"
#- vuelvo a juntar datos EPA con geometrías (que ahora incorporan los centroides)
df_ok <- left_join(df_geo_ccaa, df_viv_tur_2020, by = c("ine_ccaa.n" = "ccaa"))

p <- ggplot() +
  geom_sf(data = df_ok) +
  geom_text(data = df_ok, aes(x = X, y = Y, label = viviendas_turisticas), #- v. continua
            color = "black",
            check_overlap = TRUE, size = 3)  #- fontface = "bold"

p


p <- ggplot() +
geom_sf(data = df_ok,
        aes(geometry = geometry), fill = "#B0E0E6",
        color = "black", size = 0.09) +
  geom_text(data = df_ok, aes(x = X, y = Y, label = viviendas_turisticas), #- v. continua
            color = "black",
            check_overlap = TRUE, size = 3)  #- fontface = "bold"

p


#- luego ya hay que añadirle el título
p2020 <- p + pjpv.curso.R.2022::theme_pjp_maps() +
  labs(title = "Viviendas Turísticas 2020",
       caption = "Datos provenientes del INE")

p2020

#Ahora hacemos lo mismo para el año 2024 con el fin de ver el cambio en el número de viviendas turísticas

# definimos la ruta para poder importar los datos
ruta2 <- here::here("assets", "viv_tur_2024.xlsx")
viv_tur_2024 <- rio::import(ruta2)

df_viv_tur_2024 <- viv_tur_2024



#- cargo geometrías de provincias
df_geo_prov <- pjpv.curso.R.2022::LAU2_prov_2020_canarias
plot(df_geo_prov, max.plot = 1)

#- podemos ver que la última columna de df_geo_prov tiene las "geometrías"
names(df_geo_prov)
#>  [1] "ine_prov"       "ine_prov.n"     "ine_ccaa"       "ine_ccaa.n"    
#>  [5] "pob_2020"       "ine_ccaa.n.pjp" "X"              "Y"             
#>  [9] "geometry"       "X1"             "Y1"
head(df_geo_prov)
#> Simple feature collection with 6 features and 10 fields
#> Geometry type: GEOMETRY
#> Dimension:     XY
#> Bounding box:  xmin: -7.335962 ymin: 35.93765 xmax: 0.2342113 ymax: 43.21719
#> Geodetic CRS:  ETRS89
#>   ine_prov       ine_prov.n ine_ccaa           ine_ccaa.n pob_2020
#> 1       01      Araba/Álava       16           País Vasco   333940
#> 2       02         Albacete       08   Castilla-La Mancha   388270
#> 3       03 Alicante/Alacant       10 Comunitat Valenciana  1879888
#> 4       04          Almería       01            Andalucía   727945
#> 5       05            Ávila       07      Castilla y León   157664
#> 6       06          Badajoz       11          Extremadura   672137
#>         ine_ccaa.n.pjp          X        Y                       geometry
#> 1           País Vasco -2.7204263 42.83501 POLYGON ((-3.144822 42.7568...
#> 2   Castilla-La Mancha -1.9803024 38.82542 POLYGON ((-2.827264 39.0983...
#> 3 Comunitat Valenciana -0.5686032 38.47860 MULTIPOLYGON (((-1.085173 3...
#> 4            Andalucía -2.3448084 37.19612 MULTIPOLYGON (((-3.057583 3...
#> 5      Castilla y León -4.9455672 40.57104 POLYGON ((-5.700885 40.2891...
#> 6          Extremadura -6.1413874 38.70980 POLYGON ((-7.179114 39.1811...
#>           X1       Y1
#> 1 -2.7204263 42.83501
#> 2 -1.9803024 38.82542
#> 3 -0.5686032 38.47860
#> 4 -2.3448084 37.19612
#> 5 -4.9455672 40.57104
#> 6 -6.1413874 38.70980

#- me quedo con las vv. q me interesan
df_geo_prov <- df_geo_prov %>% select(ine_prov, ine_prov.n, ine_ccaa, ine_ccaa.n)
names(df_geo_prov)
#> [1] "ine_prov"   "ine_prov.n" "ine_ccaa"   "ine_ccaa.n" "geometry"

#- podemos "agregar" geometrías
df_geo_ccaa <- df_geo_prov %>%
  group_by(ine_ccaa, ine_ccaa.n) %>% summarize() %>% ungroup()
plot(df_geo_ccaa, max.plot = 1)
names(df_geo_ccaa)
#> [1] "ine_ccaa"   "ine_ccaa.n" "geometry"


#- junto geometría (df_geo_ccaa) con datos INE (df_viv_tur_2024)
#- las geometrías a la izquierda
df_ok1 <- left_join(df_geo_ccaa, df_viv_tur_2024, by = c("ine_ccaa.n" = "ccaa"))
names(df_ok1)
#> [1] "ine_ccaa"             "ine_ccaa.n"           "geometry"            
#> [4] "viviendas_turisticas"

#- basic plot
p1 <- ggplot() +
  geom_sf(data = df_ok1,
          aes(geometry = geometry, fill = viviendas_turisticas),
          color = "white", size = 0.09)

p1 + scale_fill_distiller(palette = 2)
p1 + pjpv.curso.R.2022::theme_pjp_maps()
p1 + scale_fill_viridis_c(option = "plasma") 


#- mejoramos un poco el plot ---------------------------------------------------
#- para ello calculo centroides
library(sf)
df_geo_ccaa <- cbind(df_geo_ccaa, st_coordinates(st_centroid(df_geo_ccaa$geometry)))
names(df_geo_ccaa)
#> [1] "ine_ccaa"   "ine_ccaa.n" "X"          "Y"          "geometry"
#- vuelvo a juntar datos EPA con geometrías (que ahora incorporan los centroides)
df_ok1 <- left_join(df_geo_ccaa, df_viv_tur_2024, by = c("ine_ccaa.n" = "ccaa"))

p1 <- ggplot() +
  geom_sf(data = df_ok1) +
  geom_text(data = df_ok1, aes(x = X, y = Y, label = viviendas_turisticas), #- v. continua
            color = "black",
            check_overlap = TRUE, size = 3)  #- fontface = "bold"

p1


p1 <- ggplot() +
  geom_sf(data = df_ok1,
          aes(geometry = geometry), fill = "#B0E0E6",
          color = "black", size = 0.09) +
  geom_text(data = df_ok1, aes(x = X, y = Y, label = viviendas_turisticas), #- v. continua
            color = "black",
            check_overlap = TRUE, size = 3)  #- fontface = "bold"

p1

#- luego ya hay que mejorarlo
p2024 <- p1 + pjpv.curso.R.2022::theme_pjp_maps() +
  labs(title = "Viviendas Turísticas 2024",
       caption = "Datos provenientes del INE")

p2024

#- utilizamos el pkg "patchwork" para mostrar los 2 gráficos (p2020 y p2024) side-by-side
library(patchwork)

p2020 + p2024

En los presentes mapas de coropletas se ilustran los cambios en el número de viviendas turísticas en España durante el período comprendido entre 2020 y 2024. En particular, se ha puesto el foco en tres comunidades autónomas: Cataluña, la Comunitat Valenciana y la Comunidad de Madrid.

De estas tres regiones, la Comunitat Valenciana destaca como la que ha experimentado el mayor incremento en el número de viviendas turísticas, con un aumento de 16548 unidades en apenas cuatro años. A continuación, se sitúa Cataluña, seguida por la Comunidad de Madrid, que ha registrado el menor crecimiento relativo dentro del grupo analizado.

Extras

#Incremento de la Población en España

#Poblacion espana

Código
library(ggplot2)
library(gganimate)
library(readxl)

# Cargar los datos
poblacion_espana <- read_excel("./assets/poblacion_espana.xlsx", sheet = "formateada")

# Convertir columnas a numéricas
poblacion_espana$year <- as.numeric(poblacion_espana$year)
poblacion_espana$value <- as.numeric(poblacion_espana$value)

# Crear el gráfico
poblacion_espana_plot <- ggplot(poblacion_espana, aes(x = year, y = value, group = 1)) +
  geom_line(color = "#2C3E50", size = 1.5, alpha = 0.8, stat = "identity") +
  geom_point(color = "#E74C3C", size = 3, alpha = 0.9, stat = "identity") +
  labs(
    title = "Incremento de la Población en España",
    subtitle = "Evolución desde {round(frame_along, 0)}",
    x = "Año",
    y = "Población",
    caption = "Fuente: Instituto Nacional de Estadísticas"
  ) +
  theme_minimal()

# Añadir animación
anim <- poblacion_espana_plot + 
  transition_reveal(along = year)

# Guardar la animación
anim_save("poblacion_espana.gif", animation = animate(anim, nframes = 150, fps = 15, renderer = gifski_renderer()))

# Mostrar la animación
knitr::include_graphics("poblacion_espana.gif")

Conclusión

El análisis realizado en este estudio refleja cómo la turistificación ha influido en el acceso a la vivienda en España, destacando los efectos en los precios inmobiliarios, la oferta de viviendas de alquiler y las dinámicas socioeconómicas urbanas. Las regiones analizadas evidencian un crecimiento desigual, con Madrid y Cataluña liderando en términos de valores inmobiliarios más altos y variabilidad, mientras que la Comunitat Valenciana muestra un comportamiento más moderado.

Además, la conversión de viviendas a usos turísticos ha contribuido a un incremento notable en el número de alojamientos turísticos, especialmente en la Comunitat Valenciana. Este fenómeno, combinado con la evolución de los salarios, pone de manifiesto las dificultades crecientes para los residentes permanentes en acceder a una vivienda adecuada.

Los resultados obtenidos subrayan la necesidad de equilibrar el crecimiento del turismo con políticas que protejan el acceso a la vivienda, como regulaciones para limitar el número de viviendas turísticas, incentivos para el alquiler a largo plazo y medidas que fortalezcan el poder adquisitivo de los ciudadanos. De esta manera, se puede mitigar el impacto de la turistificación en el mercado inmobiliario y garantizar un desarrollo urbano sostenible.

current session info

─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.4.1 (2024-06-14)
 os       macOS Monterey 12.7.6
 system   x86_64, darwin20
 ui       X11
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Europe/Rome
 date     2024-12-29
 pandoc   3.2 @ /Users/tomy/Desktop/RStudio.app/Contents/Resources/app/quarto/bin/tools/x86_64/ (via rmarkdown)

─ Packages ───────────────────────────────────────────────────────────────────
 package           * version    date (UTC) lib source
 abind               1.4-8      2024-09-12 [1] CRAN (R 4.4.1)
 assertthat          0.2.1      2019-03-21 [1] CRAN (R 4.4.0)
 backports           1.5.0      2024-05-23 [1] CRAN (R 4.4.0)
 base64enc           0.1-3      2015-07-28 [1] CRAN (R 4.4.0)
 bibtex              0.5.1      2023-01-26 [1] CRAN (R 4.4.0)
 cachem              1.1.0      2024-05-16 [1] CRAN (R 4.4.0)
 cellranger          1.1.0      2016-07-27 [1] CRAN (R 4.4.0)
 class               7.3-22     2023-05-03 [1] CRAN (R 4.4.1)
 classInt            0.4-10     2023-09-05 [1] CRAN (R 4.4.0)
 cli                 3.6.3      2024-06-21 [1] CRAN (R 4.4.0)
 clipr               0.8.0      2022-02-22 [1] CRAN (R 4.4.0)
 codetools           0.2-20     2024-03-31 [1] CRAN (R 4.4.1)
 colorspace          2.1-1      2024-07-26 [1] CRAN (R 4.4.0)
 countrycode         1.6.0      2024-03-22 [1] CRAN (R 4.4.0)
 crayon              1.5.3      2024-06-20 [1] CRAN (R 4.4.0)
 crosstalk           1.2.1      2023-11-23 [1] CRAN (R 4.4.0)
 curl                6.0.1      2024-11-14 [1] CRAN (R 4.4.1)
 data.table          1.16.4     2024-12-06 [1] CRAN (R 4.4.1)
 DBI                 1.2.3      2024-06-02 [1] CRAN (R 4.4.0)
 desc                1.4.3      2023-12-10 [1] CRAN (R 4.4.0)
 details             0.3.0      2022-03-27 [1] CRAN (R 4.4.0)
 devtools          * 2.4.5      2022-10-11 [1] CRAN (R 4.4.0)
 dichromat           2.0-0.1    2022-05-02 [1] CRAN (R 4.4.0)
 digest              0.6.37     2024-08-19 [1] CRAN (R 4.4.1)
 dplyr             * 1.1.4      2023-11-17 [1] CRAN (R 4.4.0)
 e1071               1.7-16     2024-09-16 [1] CRAN (R 4.4.1)
 ellipsis            0.3.2      2021-04-29 [1] CRAN (R 4.4.0)
 eurostat          * 4.0.0      2023-12-19 [1] CRAN (R 4.4.0)
 evaluate            0.24.0     2024-06-10 [1] CRAN (R 4.4.0)
 fansi               1.0.6      2023-12-08 [1] CRAN (R 4.4.0)
 farver              2.1.2      2024-05-13 [1] CRAN (R 4.4.0)
 fastmap             1.2.0      2024-05-15 [1] CRAN (R 4.4.0)
 forcats           * 1.0.0      2023-01-29 [1] CRAN (R 4.4.0)
 fs                  1.6.5      2024-10-30 [1] CRAN (R 4.4.1)
 generics            0.1.3      2022-07-05 [1] CRAN (R 4.4.0)
 gganimate         * 1.0.9      2024-02-27 [1] CRAN (R 4.4.0)
 ggplot2           * 3.5.1      2024-04-23 [1] CRAN (R 4.4.0)
 gifski            * 1.32.0-1   2024-10-13 [1] CRAN (R 4.4.1)
 glue                1.8.0      2024-09-30 [1] CRAN (R 4.4.1)
 gtable              0.3.5      2024-04-22 [1] CRAN (R 4.4.0)
 here                1.0.1      2020-12-13 [1] CRAN (R 4.4.0)
 hms                 1.1.3      2023-03-21 [1] CRAN (R 4.4.0)
 htmltools           0.5.8.1    2024-04-04 [1] CRAN (R 4.4.0)
 htmlwidgets         1.6.4      2023-12-06 [1] CRAN (R 4.4.0)
 httpuv              1.6.15     2024-03-26 [1] CRAN (R 4.4.0)
 httr              * 1.4.7      2023-08-15 [1] CRAN (R 4.4.0)
 httr2               1.0.5      2024-09-26 [1] CRAN (R 4.4.1)
 ISOweek             0.6-2      2011-09-07 [1] CRAN (R 4.4.0)
 jsonlite          * 1.8.8      2023-12-04 [1] CRAN (R 4.4.0)
 KernSmooth          2.23-24    2024-05-17 [1] CRAN (R 4.4.1)
 knitr             * 1.48       2024-07-07 [1] CRAN (R 4.4.0)
 labeling            0.4.3      2023-08-29 [1] CRAN (R 4.4.0)
 later               1.3.2      2023-12-06 [1] CRAN (R 4.4.0)
 lattice             0.22-6     2024-03-20 [1] CRAN (R 4.4.1)
 lazyeval            0.2.2      2019-03-15 [1] CRAN (R 4.4.0)
 leafem              0.2.3      2023-09-17 [1] CRAN (R 4.4.0)
 leaflet           * 2.2.2      2024-03-26 [1] CRAN (R 4.4.0)
 leaflet.providers   2.0.0      2023-10-17 [1] CRAN (R 4.4.0)
 leafsync            0.1.0      2019-03-05 [1] CRAN (R 4.4.0)
 lifecycle           1.0.4      2023-11-07 [1] CRAN (R 4.4.0)
 lubridate         * 1.9.3      2023-09-27 [1] CRAN (R 4.4.0)
 lwgeom              0.2-14     2024-02-21 [1] CRAN (R 4.4.0)
 magick            * 2.8.5      2024-09-20 [1] CRAN (R 4.4.1)
 magrittr            2.0.3      2022-03-30 [1] CRAN (R 4.4.0)
 memoise             2.0.1      2021-11-26 [1] CRAN (R 4.4.0)
 mime                0.12       2021-09-28 [1] CRAN (R 4.4.0)
 miniUI              0.1.1.1    2018-05-18 [1] CRAN (R 4.4.0)
 munsell             0.5.1      2024-04-01 [1] CRAN (R 4.4.0)
 patchwork         * 1.3.0      2024-09-16 [1] CRAN (R 4.4.1)
 pillar              1.9.0      2023-03-22 [1] CRAN (R 4.4.0)
 pjpv.curso.R.2022   0.0.0.9000 2024-10-01 [1] Github (perezp44/pjpv.curso.R.2022@bd4dd73)
 pkgbuild            1.4.4      2024-03-17 [1] CRAN (R 4.4.0)
 pkgconfig           2.0.3      2019-09-22 [1] CRAN (R 4.4.0)
 pkgload             1.4.0      2024-06-28 [1] CRAN (R 4.4.0)
 plotly            * 4.10.4     2024-01-13 [1] CRAN (R 4.4.0)
 plyr                1.8.9      2023-10-02 [1] CRAN (R 4.4.0)
 png                 0.1-8      2022-11-29 [1] CRAN (R 4.4.0)
 prettyunits         1.2.0      2023-09-24 [1] CRAN (R 4.4.0)
 profvis             0.4.0      2024-09-20 [1] CRAN (R 4.4.1)
 progress            1.2.3      2023-12-06 [1] CRAN (R 4.4.0)
 promises            1.3.0      2024-04-05 [1] CRAN (R 4.4.0)
 proxy               0.4-27     2022-06-09 [1] CRAN (R 4.4.0)
 purrr             * 1.0.2      2023-08-10 [1] CRAN (R 4.4.0)
 R.methodsS3         1.8.2      2022-06-13 [1] CRAN (R 4.4.0)
 R.oo                1.26.0     2024-01-24 [1] CRAN (R 4.4.0)
 R.utils             2.12.3     2023-11-18 [1] CRAN (R 4.4.0)
 R6                  2.5.1      2021-08-19 [1] CRAN (R 4.4.0)
 rappdirs            0.3.3      2021-01-31 [1] CRAN (R 4.4.0)
 raster              3.6-26     2023-10-14 [1] CRAN (R 4.4.0)
 RColorBrewer        1.1-3      2022-04-03 [1] CRAN (R 4.4.0)
 Rcpp                1.0.13     2024-07-17 [1] CRAN (R 4.4.0)
 readr             * 2.1.5      2024-01-10 [1] CRAN (R 4.4.0)
 readxl            * 1.4.3      2023-07-06 [1] CRAN (R 4.4.0)
 RefManageR          1.4.0      2022-09-30 [1] CRAN (R 4.4.0)
 regions             0.1.8      2021-06-21 [1] CRAN (R 4.4.0)
 remotes             2.5.0      2024-03-17 [1] CRAN (R 4.4.0)
 rio                 1.2.3      2024-09-25 [1] CRAN (R 4.4.1)
 rlang               1.1.4      2024-06-04 [1] CRAN (R 4.4.0)
 rmarkdown           2.28       2024-08-17 [1] CRAN (R 4.4.1)
 rnaturalearth     * 1.0.1      2023-12-15 [1] CRAN (R 4.4.0)
 rprojroot           2.0.4      2023-11-05 [1] CRAN (R 4.4.0)
 rstudioapi          0.16.0     2024-03-24 [1] CRAN (R 4.4.0)
 s2                  1.1.7      2024-07-17 [1] CRAN (R 4.4.0)
 scales              1.3.0      2023-11-28 [1] CRAN (R 4.4.0)
 sessioninfo         1.2.2      2021-12-06 [1] CRAN (R 4.4.0)
 sf                * 1.0-19     2024-11-05 [1] CRAN (R 4.4.1)
 shiny               1.9.1      2024-08-01 [1] CRAN (R 4.4.0)
 sp                  2.1-4      2024-04-30 [1] CRAN (R 4.4.0)
 stars               0.6-6      2024-07-16 [1] CRAN (R 4.4.0)
 stringi             1.8.4      2024-05-06 [1] CRAN (R 4.4.0)
 stringr           * 1.5.1      2023-11-14 [1] CRAN (R 4.4.0)
 terra               1.7-78     2024-05-22 [1] CRAN (R 4.4.0)
 tibble            * 3.2.1      2023-03-20 [1] CRAN (R 4.4.0)
 tidyr             * 1.3.1      2024-01-24 [1] CRAN (R 4.4.0)
 tidyselect          1.2.1      2024-03-11 [1] CRAN (R 4.4.0)
 tidyverse         * 2.0.0      2023-02-22 [1] CRAN (R 4.4.0)
 timechange          0.3.0      2024-01-18 [1] CRAN (R 4.4.0)
 tmap              * 3.3-4      2023-09-12 [1] CRAN (R 4.4.0)
 tmaptools           3.1-1      2021-01-19 [1] CRAN (R 4.4.0)
 tweenr              2.0.3      2024-02-26 [1] CRAN (R 4.4.0)
 tzdb                0.4.0      2023-05-12 [1] CRAN (R 4.4.0)
 units               0.8-5      2023-11-28 [1] CRAN (R 4.4.0)
 urlchecker          1.0.1      2021-11-30 [1] CRAN (R 4.4.0)
 usethis           * 3.0.0      2024-07-29 [1] CRAN (R 4.4.0)
 utf8                1.2.4      2023-10-22 [1] CRAN (R 4.4.0)
 vctrs               0.6.5      2023-12-01 [1] CRAN (R 4.4.0)
 viridisLite         0.4.2      2023-05-02 [1] CRAN (R 4.4.0)
 withr               3.0.1      2024-07-31 [1] CRAN (R 4.4.0)
 wk                  0.9.3      2024-09-06 [1] CRAN (R 4.4.1)
 xfun                0.49       2024-10-31 [1] CRAN (R 4.4.1)
 XML                 3.99-0.17  2024-06-25 [1] CRAN (R 4.4.0)
 xml2                1.3.6      2023-12-04 [1] CRAN (R 4.4.0)
 xtable              1.8-4      2019-04-21 [1] CRAN (R 4.4.0)
 yaml                2.3.10     2024-07-26 [1] CRAN (R 4.4.0)

 [1] /Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/library

──────────────────────────────────────────────────────────────────────────────


Reutilizar