Les héritiers d’un bien immobilier ont en moyenne 54 ans, les bénéficiaires d’une donation en ont 48 - IA125

Données - INSEE

Figure 1 : un logement sur trois change de mains autrement que par une vente

Code
fig1 |>
  mutate(motif = fct_reorder(motif, nombre_logements)) |>
  ggplot(aes(x = nombre_logements / 1000, y = motif, fill = motif)) +
  geom_col(width = 0.65, show.legend = FALSE) +
  geom_text(aes(label = sprintf("%s milliers  (%s %%)", format(round(nombre_logements / 1000), big.mark = " "),
                                format(part, decimal.mark = ","))),
            hjust = -0.05, size = 3.8) +
  scale_fill_manual(values = cols_mutation) +
  scale_x_continuous(expand = expansion(mult = c(0, 0.35))) +
  theme_ia() +
  labs(x = "Milliers de logements par an", y = NULL,
       title = "Les changements de propriétaire de logements anciens",
       subtitle = "nombre annuel moyen de logements vendus ou transmis, selon le motif")

Figure 2 : l’âge auquel on reçoit, l’âge auquel on transmet

Code
fig2 |>
  filter(cote == "Receveurs (acquéreurs)") |>
  mutate(role = fct_relevel(role, "Acheteur", "Héritier", "Donataire")) |>
  ggplot(aes(x = age, y = part, color = role, fill = role)) +
  geom_area(alpha = 0.18, position = "identity", linewidth = 0) +
  geom_line(linewidth = 1.1) +
  scale_color_manual(values = c("Acheteur" = bleu, "Héritier" = rose, "Donataire" = vert), name = NULL) +
  scale_fill_manual(values = c("Acheteur" = bleu, "Héritier" = rose, "Donataire" = vert), name = NULL) +
  scale_x_continuous(breaks = seq(20, 100, 10), limits = c(18, 100)) +
  theme_ia() +
  labs(x = "Âge de l'acquéreur (années)",
       y = "% dans le groupe",
       title = "Répartition par âge des acheteurs, héritiers et donataires de logements",
       subtitle = "")

Code
fig2 |>
  filter(cote == "Cédants") |>
  mutate(role = fct_relevel(role, "Vendeur", "Défunt", "Donateur")) |>
  ggplot(aes(x = age, y = part, color = role, fill = role)) +
  geom_area(alpha = 0.18, position = "identity", linewidth = 0) +
  geom_line(linewidth = 1.1) +
  scale_color_manual(values = c("Vendeur" = bleu, "Défunt" = rose, "Donateur" = vert), name = NULL) +
  scale_fill_manual(values = c("Vendeur" = bleu, "Défunt" = rose, "Donateur" = vert), name = NULL) +
  scale_x_continuous(breaks = seq(20, 100, 10), limits = c(18, 105)) +
  theme_ia() +
  labs(x = "Âge du cédant (années)", y = "% dans le groupe",
       title = "Répartition par âge des vendeurs, défunts et donateurs de logements",
       subtitle = "")

Figure 3 : qui transmet à qui ? (âge)

Code
fig3 |>
  filter(age_receveur != "Ensemble", age_cedant != "Ensemble") |>
  mutate(age_receveur = factor(age_receveur, levels = rev(ages)),
         age_cedant = factor(age_cedant, levels = ages),
         mutation = fct_relevel(mutation, "Succession", "Donation", "Vente"),
         etiquette = case_when(non_significatif ~ "ns", part >= 1 ~ sprintf("%.0f", part), TRUE ~ "")) |>
  ggplot(aes(x = age_cedant, y = age_receveur, fill = part)) +
  geom_tile(color = "white", linewidth = 0.6) +
  geom_text(aes(label = etiquette), size = 3, color = "grey15") +
  facet_wrap(~ mutation, nrow = 1) +
  scale_fill_gradient(low = "#F7FBFF", high = bleu, na.value = "grey93", name = "% des\nmutations") +
  scale_x_discrete(labels = scales::label_wrap(8)) +
  scale_y_discrete(labels = scales::label_wrap(12)) +
  theme_ia(10) + theme(panel.grid = element_blank(), legend.position = "right") +
  labs(x = "Âge du cédant (défunt, donateur ou vendeur)", y = "Âge du receveur",
       title = "Les héritiers ont typiquement 20 à 30 ans de moins que les défunts",
       subtitle = "part des mutations selon l'âge du receveur et du cédant ; ns : non significatif ; étiquettes ≥ 1 %")

Code
tc1 |>
  mutate(ecart_age = fct_reorder(ecart_age, -ordre), mutation = fct_relevel(mutation, "Succession", "Donation", "Ensemble des transmissions")) |>
  ggplot(aes(x = part / 100, y = ecart_age, fill = mutation)) +
  geom_col(position = position_dodge(width = 0.8), width = 0.75) +
  scale_x_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_fill_manual(values = cols_mutation, name = NULL) +
  theme_ia() +
  labs(x = NULL, y = NULL, title = "Dans 3 cas sur 4, le cédant a 20 à 40 ans de plus que le receveur",
       subtitle = "écart d'âge moyen entre cédants et acquéreurs, par type de transmission")

Figure 4 : héritage et niveau de vie

Code
quintiles |>
  filter(quintile_receveur != "Ensemble", quintile_cedant != "Ensemble") |>
  mutate(quintile_receveur = factor(names(quint_court)[match(quintile_receveur, quint_court)], levels = rev(names(quint_court))),
         quintile_cedant = factor(names(quint_court)[match(quintile_cedant, quint_court)], levels = names(quint_court)),
         mutation = fct_relevel(mutation, "Ensemble des transmissions", "Succession", "Donation")) |>
  ggplot(aes(x = quintile_cedant, y = quintile_receveur, fill = part)) +
  geom_tile(color = "white", linewidth = 0.6) +
  geom_text(aes(label = sprintf("%.1f", part)), size = 3.4, color = "grey15") +
  facet_wrap(~ mutation, nrow = 1) +
  scale_fill_gradient(low = "#FFF5F0", high = "#B2182B", name = "% des\ntransmissions") +
  coord_equal() +
  theme_ia(10) + theme(panel.grid = element_blank(), legend.position = "right") +
  labs(x = "Quintile de niveau de vie du cédant", y = "Quintile de niveau de vie du receveur",
       title = "Les riches transmettent surtout à des riches",
       subtitle = "part des transmissions immobilières selon le niveau de vie (Q1 : 20 % les plus modestes, Q5 : 20 % les plus aisés)")

Code
quintiles |>
  filter(mutation == "Ensemble des transmissions",
         (quintile_receveur == "Ensemble") != (quintile_cedant == "Ensemble")) |>
  mutate(role = if_else(quintile_receveur == "Ensemble", "Cédants", "Receveurs"),
         quintile = if_else(quintile_receveur == "Ensemble", quintile_cedant, quintile_receveur),
         quintile = factor(names(quint_court)[match(quintile, quint_court)], levels = names(quint_court))) |>
  ggplot(aes(x = quintile, y = part / 100, fill = role)) +
  geom_col(position = position_dodge(width = 0.75), width = 0.7) +
  geom_hline(yintercept = 0.2, linetype = "dashed", color = "grey40") +
  annotate("text", x = 0.55, y = 0.213, label = "20 % : répartition égalitaire", hjust = 0, size = 3.4, color = "grey35") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_fill_manual(values = c("Cédants" = jaune, "Receveurs" = bleu), name = NULL) +
  theme_ia() +
  labs(x = "Quintile de niveau de vie", y = NULL,
       title = "Un tiers des logements transmis viennent\ndes 20 % les plus aisés — et vont à eux",
       subtitle = "part des transmissions immobilières entre individus, selon le niveau de vie du cédant et du receveur")

Figure 5 : que deviennent les logements hérités ou donnés ?

Code
usage |>
  group_by(usage) |> mutate(tri = max(part)) |> ungroup() |>
  mutate(usage = str_replace(usage, "Résidence principale occupée? par un propriétaire antérieur à la (succession|donation)",
                              "Résidence principale d'un propriétaire déjà présent"),
         usage = str_replace(usage, "Résidence principale occupée? par un des (héritiers|donataires)", "Résidence principale d'un héritier ou donataire"),
         usage = str_replace(usage, "Vendu par tous les (héritiers|donataires)", "Vendu par tous les nouveaux propriétaires"),
         usage = fct_reorder(usage, tri)) |>
  ggplot(aes(x = part / 100, y = usage, fill = mutation)) +
  geom_col(position = position_dodge(width = 0.8), width = 0.75) +
  scale_x_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_fill_manual(values = cols_mutation, name = NULL) +
  scale_y_discrete(labels = scales::label_wrap(38)) +
  theme_ia() +
  labs(x = NULL, y = NULL, title = "Les logements hérités sont vendus ; les logements donnés sont loués",
       subtitle = "usage du logement trois ans après la transmission (1er janvier 2022)")

Encadré : qui entre et qui sort de la détention ?

Code
encadre |>
  filter(detail != "Total de la situation") |>
  mutate(situation = str_replace(situation, " et d’autres copropriétaires rentrent et sortent de la détention", " (et d'autres changent)"),
         situation = fct_reorder(situation, part, .fun = sum),
         detail = str_replace(detail, "et leurs droits de propriété sont démembrés", "avec démembrement des droits"),
         detail = str_replace(detail, "en nue-propriété, les autres deviennent usufruitiers", "en nue-propriété (autres : usufruitiers)"),
         detail = str_replace(detail, "en usufruit, les autres deviennent plein propriétaires", "en usufruit (autres : pleins propriétaires)")) |>
  ggplot(aes(x = part / 100, y = situation, fill = detail)) +
  geom_col(width = 0.7) +
  facet_wrap(~ mutation, ncol = 1) +
  scale_x_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_y_discrete(labels = scales::label_wrap(40)) +
  scale_fill_brewer(palette = "Set2", name = NULL) +
  guides(fill = guide_legend(nrow = 2)) +
  theme_ia(11) +
  labs(x = "Part des logements", y = NULL,
       title = "Successions : un copropriétaire sort ; donations : un copropriétaire entre",
       subtitle = "répartition des successions et donations immobilières selon l'entrée et la sortie dans la détention")