「高齢層と若者」というとらえ方の問題点を示唆するグラフ
このRidgeline Plotは、実際のデータではなく、シミュレーションによるもの。
```{r}
# ----------------------------------------------------
# 1. 必要なパッケージのインストールと読み込み
# ggridgesパッケージは、分布を重ねて表示するリッジラインプロットに必要です。
# ----------------------------------------------------
# install.packages(c("ggplot2", "ggridges", "dplyr")) # 必要に応じてコメントを外して実行
library(ggplot2)
library(ggridges)
library(dplyr)
# ----------------------------------------------------
# 2. 所得分布のシミュレーションデータ生成
# (単位: 万円/年)
# ----------------------------------------------------
# 現役世代: 20代
# 所得平均は中程度だが、バラツキはやや小さめ
set.seed(42)
income_20s <- data.frame(
Generation = factor("現役世代 (20代)", levels = c("現役世代 (20代)", "現役世代 (40代)", "高齢層 (70代)")),
Income_Millions = round(rnorm(n = 500, mean = 3.5, sd = 1.0), 1)
)
# 現役世代: 40代
# 所得平均は最も高いが、格差も存在
income_40s <- data.frame(
Generation = factor("現役世代 (40代)", levels = c("現役世代 (20代)", "現役世代 (40代)", "高齢層 (70代)")),
Income_Millions = round(rnorm(n = 500, mean = 6.0, sd = 2.0), 1)
)
# 高齢層: 70代
# 所得平均は低いが、資産家(高所得)も多く、最もバラツキが大きい
# (平均3.0の年金層と、平均8.0の資産家層を混合)
income_70s_low <- rnorm(n = 400, mean = 3.0, sd = 1.0)
income_70s_high <- rnorm(n = 100, mean = 8.0, sd = 2.5) # 豊かな高齢層を表現
income_70s <- data.frame(
Generation = factor("高齢層 (70代)", levels = c("現役世代 (20代)", "現役世代 (40代)", "高齢層 (70代)")),
Income_Millions = round(c(income_70s_low, income_70s_high), 1)
)
# 全データを結合
simulated_data <- bind_rows(income_20s, income_40s, income_70s) %>%
# マイナスの所得をクリッピング(現実的な範囲に収める)
filter(Income_Millions > 0)
# ----------------------------------------------------
# 3. リッジラインプロットの作成 (世代内のグラデーションを表現)
# ----------------------------------------------------
ggplot(simulated_data, aes(x = Income_Millions, y = Generation, fill = Generation)) +
# リッジラインプロットの描画
geom_density_ridges(
alpha = 0.7, # 透明度
scale = 3, # 世代間の重なりの度合い (大きくすると分布の山が大きくなる)
rel_min_height = 0.01 # 非常に小さな密度値の表示を省略
) +
# ラベルとタイトルの設定
labs(
title = "世代別の所得分布のシミュレーション",
subtitle = "「高齢層」と「現役世代」内の大きなグラデーションを示す",
x = "年収 (百万円)",
y = "世代"
) +
# X軸の調整 (所得0から上限を設定)
scale_x_continuous(
limits = c(0, 15), # 年収0万円から1500万円の範囲で表示
breaks = seq(0, 15, by = 2.5)
) +
# カラーパレットの指定 (任意)
scale_fill_manual(values = c("現役世代 (20代)" = "#1f77b4",
"現役世代 (40代)" = "#ff7f0e",
"高齢層 (70代)" = "#2ca02c")) +
# ユーザー指定のテーマ(日本語フォント対応)の適用
theme_minimal(base_family="HiraKakuProN-W3") +
# 凡例を非表示に
theme(legend.position = "none")
# ----------------------------------------------------
# 実行結果:
# グラフを見ると、高齢層(70代)の分布は幅広く、一部は40代の平均を上回る所得を持っています。
# このように、「高齢層」対「若者」ではなく、「所得」という軸で見るとグラデーションがあることが分かります。
# ----------------------------------------------------
```
« 国民民主党の支持率が上昇するときに自由民主党の支持率が低下するのだろうか。 | Main | 候補者がどれだけ政党の基盤票を超えて幅広い有権者の票を包含できたか(2024年衆院選福岡11区)。 »
「b. 社会」カテゴリの記事
- 「高齢層と若者」というとらえ方の問題点を示唆するグラフ(2025.10.31)
- グローバリズムとグローバリゼーション (2025.10.08)
- 「社会的自由」という言葉があるらしい。(2025.10.07)
- 政治軸・経済軸・文化軸の3次元の分類 (2025.10.03)
- 消費税収と法人税収の推移(1979年以降)(2025.10.01)
「a. 政治」カテゴリの記事
- 政党支持率の推移(NHK世論調査)(2025.11.10)
- 候補者がどれだけ政党の基盤票を超えて幅広い有権者の票を包含できたか(2024年衆院選福岡11区)。(2025.11.10)
- 「高齢層と若者」というとらえ方の問題点を示唆するグラフ(2025.10.31)
- 国民民主党の支持率が上昇するときに自由民主党の支持率が低下するのだろうか。(2025.10.29)
- グローバリズムとグローバリゼーション (2025.10.08)
「e. 統計」カテゴリの記事
- 政党支持率の推移(NHK世論調査)(2025.11.10)
- 候補者がどれだけ政党の基盤票を超えて幅広い有権者の票を包含できたか(2024年衆院選福岡11区)。(2025.11.10)
- 「高齢層と若者」というとらえ方の問題点を示唆するグラフ(2025.10.31)
- 国民民主党の支持率が上昇するときに自由民主党の支持率が低下するのだろうか。(2025.10.29)
- 毎月行われているNHKの世論調査で自民党と参政党の支持率がどう変化するかに関心を持っている。(2025.10.06)
「f. 統計言語R」カテゴリの記事
- 「高齢層と若者」というとらえ方の問題点を示唆するグラフ(2025.10.31)
- 毎月行われているNHKの世論調査で自民党と参政党の支持率がどう変化するかに関心を持っている。(2025.10.06)
- 消費税収と法人税収の推移(1979年以降)(2025.10.01)
- NHK世論調査結果に見る年齢と政党支持との関係(2025年9月)(2025.09.25)
- 福岡県内72区市町村における政党別得票率(参院選比例代表)の散布図(2025.09.19)