論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説(ジャストインタイム型データサイエンス教育)
1変量の可視化(ヒストグラム・箱ひげ・KDE)
Univariate Visualization
1 つの変数の分布を視覚化する6つの基本手法。 数値要約だけでは見えない「分布の形・歪み・多峰性・外れ値」を確認。
記述統計可視化univariate viz

📍 あなたが今見ているもの

🍰 まずはやさしく

分析のスタート地点となる道具です。

データの全体像を正しく掴むために使います。

スマホの利用時間をみんなで比べる時に役立ちます。

分析の基本となる可視化の手法を読みましょう。

論文・記事に 「ヒストグラム」「箱ひげ図」「KDE」「バイオリンプロット」「ECDF」「QQプロット」 として登場する 1変量データの可視化手法群。 すべての分析の出発点となる探索的データ解析 (EDA) の中核ツール。

🔖 キーワード索引

論文記事から各用語のリンクをクリックすると、 該当箇所が開きます:

📊 ヒストグラム 📦 箱ひげ図 🌊 KDE 🎻 バイオリンプロット 📈 ECDF 📐 QQプロット ビン数選択 分布の形 🚧 よくある誤解 📝 練習問題 🗺️ 概念マップ

💡 30秒で分かる結論

🍰 まずはやさしく

データの形を絵にする方法です。

データの偏りや特徴を知るために使います。

テストの点数の散らばりを調べる時に便利です。

代表的な6つのグラフについて学びます。

🗂️ 章俯瞰 — 6つの 1変量可視化

1変量データを見ることは、 あらゆる分析の出発点。 数値要約(平均、 分散)だけでは見えない分布の形・歪み・多峰性・外れ値を確認できます。

手法分かること適性 n
ヒストグラム分布の形、 ピーク、 歪み30〜数万
箱ひげ図5数要約、 外れ値、 群比較10〜大量
KDE滑らかな密度、 多峰性50〜数千
バイオリン箱ひげ + 密度形状50〜数千
ECDF累積比率、 2分布比較任意
QQプロット理論分布との一致任意

📊 ヒストグラム(Histogram)

連続値データを階級(ビン)に分け、 各階級の度数を棒の高さで表現。 分布の全体像を最も直感的に見せる可視化。

ヒストグラム

📏 ビン数の決め方

ヒストグラムはビン数で見え方が大きく変わる。 主要なルール:

$n = 47$(47都道府県)なら、 Sturges で約 7 ビン、 √n で約 7 ビン。 実務では複数のビン数を試して「分布の本質」を見るのが安全。

ビン数の影響

🎯 ヒストグラムから読み取れる分布の形

分布の形

🐍 Python での描画

🎯 目的:ヒストグラム・ 箱ひげ図・ ECDF を 4 枚並べて単変量分布を多角的に観察し、 SSDSE-B-2026 の人口変数 (A1101) の歪み・ 外れ値・ 裾の重さを把握する。
📥 入力data/raw/SSDSE-B-2026.csv (CP932、 47 都道府県 × 2023 年度)。 列 A1101 (総人口)を 1 万人単位に変換して使用。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026']==2023]
pop = df['A1101'] / 10000  ## 万人単位

fig, axes = plt.subplots(2, 2, figsize=(12, 8))

## 左上:ヒストグラム(Sturges 公式)
axes[0, 0].hist(pop, bins='sturges', edgecolor='white', color='#1976D2')
axes[0, 0].set_title('ヒストグラム(線形軸)')

## 右上:対数ヒストグラム
axes[0, 1].hist(np.log1p(pop), bins=15, edgecolor='white', color='#388E3C')
axes[0, 1].set_title('log1p 後(正規に近づく)')

## 左下:箱ひげ図 + ストリップ
axes[1, 0].boxplot(pop, vert=False, widths=0.5)
axes[1, 0].scatter(pop, np.ones_like(pop) + np.random.uniform(-0.1, 0.1, len(pop)), alpha=0.5)
axes[1, 0].set_title('箱ひげ + 生データ点')

## 右下:ECDF
sorted_pop = np.sort(pop)
ecdf = np.arange(1, len(sorted_pop)+1) / len(sorted_pop)
axes[1, 1].step(sorted_pop, ecdf, where='post')
axes[1, 1].set_title('ECDF(経験的累積分布)')
plt.tight_layout()
📤 出力:4 枚パネル:ヒスト(線形)/log1p ヒスト/箱ひげ+ストリップ/ECDF。 東京・ 神奈川が右端に外れて非常に長い右裾を確認。
💬 解釈:log1p で正規に近づけば対数正規分布。 ECDF は累積で「中央値 ≒ 155 万人」「75 % が 300 万人未満」を直読できる。 ヒストの bin 数次第で印象が変わるため必ず複数法を併用。

② seaborn — 統計可視化の高レベル API

🎯 目的:seaborn の高レベル API(displot/violinplot)で KDE・ rug・ ヒストの三位一体描画を行い、 出生数 (A4101) の分布形状を曲線で可視化する。
📥 入力data/raw/SSDSE-B-2026.csv。 列 A4101 (出生数・ 人)。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import seaborn as sns

## displot — KDE + ヒストグラム + rug の三位一体
sns.displot(data=df, x='A4101', kde=True, rug=True, height=5)

## バイオリンプロット — 分布形状を保持
sns.violinplot(data=df, y='A4101', inner='box')

## boxenplot — 大規模データ向けの分位点版
sns.boxenplot(data=df, y='A4101')

## stripplot + boxplot の重ね描き(raincloud 風)
fig, ax = plt.subplots(figsize=(8, 5))
sns.boxplot(data=df, y='A4101', ax=ax, width=0.3)
sns.stripplot(data=df, y='A4101', ax=ax, color='red', alpha=0.5, jitter=0.1)
📤 出力:displot は KDE 曲線+ rug+ヒストグラム。 violinplot は左右対称の分布形状。 平均約 1.5 万人、 標準偏差約 1.7 万人の単峰分布。
💬 解釈:KDE のバンド幅で見た目が変動する点に注意。 violinplot は中央線が中央値、 太い帯が IQR を表す。 単変量分布の形状を「数値要約 + 形」で同時に伝えられる利点がある。

③ scipy.stats — 統計量と分布検定

🎯 目的:scipy.stats でモーメント統計量(歪度・ 尖度)を算出し、 正規性検定 (Shapiro-Wilk) で「分布が正規か」を客観評価する。
📥 入力data/raw/SSDSE-B-2026.csv。 列 A1101 (総人口) と log1p 変換後の値。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from scipy import stats

x = df['A1101'].values

## 記述統計量
print(f'平均   : {np.mean(x):.0f}')
print(f'中央値 : {np.median(x):.0f}')
print(f'最頻値 : {stats.mode(x, keepdims=False).mode}')
print(f'歪度   : {stats.skew(x):.3f}')
print(f'尖度   : {stats.kurtosis(x):.3f}')
print(f'IQR    : {stats.iqr(x):.0f}')
print(f'MAD    : {stats.median_abs_deviation(x):.0f}')

## 正規性検定(Shapiro-Wilk: 小サンプル向き、 47 件に最適)
stat, p = stats.shapiro(x)
print(f'Shapiro-Wilk: W={stat:.3f}, p={p:.4f}')

## D'Agostino-Pearson 検定(歪度・尖度ベース)
stat, p = stats.normaltest(x)
print(f'D-Agostino  : K²={stat:.3f}, p={p:.4f}')

## QQ プロット — 正規分布との比較
stats.probplot(x, dist='norm', plot=plt)
📤 出力:skew=2.2(強い右歪み)、 kurtosis=5.0(重い裾)、 Shapiro p≈1e-8(正規ではない)。 log1p 後は skew=0.8 まで改善。
💬 解釈:p<0.05 は「正規ではない」根拠だが、 N=47 だと検出力が低くなる。 視覚(QQ プロット)と数値(歪度・ 尖度)を必ず併用し、 「対数変換すべきか」の判断材料にする。

④ plotly でインタラクティブ可視化

🎯 目的:plotly でホバー付きのヒストグラム・箱ひげ図・バイオリンを描き、 SSDSE-B-2026 の総人口(A1101)・出生数(A4101)の分布と外れ値県名をインタラクティブに確認する。
📥 入力data/raw/SSDSE-B-2026.csv。 列 A1101A4101plotly.express で描画。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import plotly.express as px

## ホバーで都道府県名が見えるヒストグラム
fig = px.histogram(df, x='A1101', nbins=15, hover_data=['Prefecture'])
fig.update_layout(title='47都道府県人口分布(ホバーで詳細)', xaxis_title='人口', yaxis_title='頻度')
fig.show()

## 箱ひげ + 個別データ点(外れ値が誰か判明)
fig = px.box(df, y='A1101', points='all', hover_data=['Prefecture'])
fig.show()

## バイオリン + ストリップ
fig = px.violin(df, y='A4101', box=True, points='all', hover_data=['Prefecture'])
fig.show()
📤 出力:ホバー付きヒストグラム・箱ひげ・バイオリン。 箱ひげの外れ値ドットにカーソルを合わせると東京・神奈川など県名が表示される(参考: 総人口の正規 QQ プロットは R²=0.68 で両端が直線から乖離 → 裾が重い証拠)。
💬 解釈:正規 QQ で「中央は直線・ 両端反り上がり」なら裾が重い t 分布等が示唆される。 単変量解析の最終チェックとして外せない図。

🎨 直感で掴む — 1 変量の可視化

🍰 まずはやさしく

データの様子をパッと見て判断する感覚です。

数字の列から直感的に特徴を見つけるために使います。

部活のメンバーの身長差を視覚的に捉える例です。

まずは直感的に理解するための解説を読みます。

1 変量の可視化は「1 つの変数の分布を目で見る」第一歩。 ヒストグラム・箱ひげ・密度プロット・QQ プロットが主役。 SSDSE-B-2026 の A1101(県別人口)は東京都が外れ値レベルで大きく、 ヒストグラムだけでは形が潰れるため、 対数変換と組合せるのが鉄則。

💡 学習のコツ:直感で全体像を掴んだら、 次の「📐 定義・数式」で正確な意味を押さえ、 最後に「🧮 実値で計算してみる」で SSDSE-B-2026 の都道府県データを使った計算をなぞるのが効率的です。 比喩は厳密ではないので、 必ず数式と並べて確認してください。

1 変量の可視化 は「可視化」カテゴリの中核概念。 初めて触れる読者は、 まずこの「🎨 直感」セクションだけ通読し、 必要になった時点で「📐 数式」「🐍 Python」「⚠️ 落とし穴」へ戻る読み方が定着しやすいです。

📐 定義・数式 — 1 変量の可視化

🍰 まずはやさしく

グラフを作るための正確なルールです。

誰が作っても同じ結果にするために使います。

買い物で使う予算の計算のように正確に考えます。

グラフを支える数式や定義について読みましょう。

直感の次は、 厳密な定義を確認します。 数式は言語の一種で、 一度書き慣れれば「言葉より速く伝えられる」便利な道具。 慣れていない方は、 各記号が何を表すかを下の「🔬 数式を言葉で読み解く」で 1 つずつ確認してください。

【1 変量の可視化 の中心定義式】
$$ \hat{f}(x) = \frac{1}{n h} \sum_{i=1}^{n} K\left(\frac{x - x_i}{h}\right) \;\;\;(\text{KDE}) $$
この式が「1 変量の可視化」の骨格。 派生形・拡張形はここから生まれる。
📌 読み方のコツ:数式を見たら「左辺は何を定義しているか」「右辺の各項は何の合計・積・比か」を声に出して読み下してみる。 これだけで理解が大きく進みます。

🔬 数式を言葉で読み解く — 数式を「言葉」に翻訳

上の数式を眺めるだけでは身につかないので、 各記号がどんな役割を担っているかを言葉で押さえます。 「数式を音読する習慣」がつくと、 論文や教科書を読むスピードが体感で 2 倍ほど上がります。

左辺(結果側)
1 変量の可視化 で定義したい量。 解釈の対象。 単位・スケールを必ず確認する。
右辺(構成要素)
観測できる入力変数(SSDSE-B-2026 でいえば A1101・L3221 など)と推定対象パラメータ(β, σ 等)の組合せ。
添字 i, j, t
i=サンプル(県)、 j=変数、 t=時点。 SSDSE-B-2026 は i ∈ {1..47} 県、 t ∈ {2012..2023}。
和記号 Σ
「足し合わせ」を表す。 添字 i が 1 から n まで動く範囲を明示するのが習慣。
期待値 E[·]、 分散 Var[·]
「ランダム変数の平均」と「ばらつき」。 SSDSE-B-2026 のような集計値でも、 標本誤差・年次変動の文脈で使える。
📚 補足:同じ記号でも分野・教科書によって意味が違うことがあります(例: $\hat{y}$ は予測値だが、 統計の文脈では推定量を意味することも)。 不明確なときは、 必ずその文書の記号定義表を確認しましょう。

🧮 実値で計算してみる — SSDSE-B-2026

数式だけでは「実感」が湧きにくいので、 実データ data/raw/SSDSE-B-2026.csv(47 都道府県 × 12 年)で 1 度手計算してみると理解が定着します。

SSDSE-B-2026 の A1101(2023, n=47)は平均 2,645,809、 標準偏差 2,797,551、 中央値 1,549,000、 最大 14,086,000(東京)、 最小 537,000(鳥取)。 平均 > 中央値で右に強く歪んでおり、 対数変換すると 14.42 ± 0.80 と概ね対称化される。 箱ひげ図では Q1=1,034,000、 Q3=2,636,500、 IQR=1,602,500、 上ヒゲ閾値=5,040,250 を超える 9 県(東京・神奈川・大阪・愛知・埼玉・千葉・兵庫・福岡・北海道)が外れ値として描かれる。

都道府県A1101 総人口A1303 65 歳以上L3221 消費支出
東京都14,086,0003,205,000341,320
神奈川県9,229,0002,390,000306,565
大阪府8,763,0002,424,000271,246
愛知県7,477,0001,923,000300,221
埼玉県7,331,0002,012,000344,092
千葉県6,257,0001,756,000306,943

上記は SSDSE-B-2026 (2023) からの抜粋。 手計算で確認した値が、 後述の Python 実装で得る値と一致することを確認すると、 「数式とコードの対応関係」がクリアに見えるようになります。

🐍 Python 実装 — 1 変量の可視化

公的統計(SSDSE-B-2026)を題材に、 最小限の Python コードで 1 変量の可視化 を動作させます。 まずはこのまま実行してみてください。

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) A1303(65歳以上人口) L3221(消費支出(二人以上の世帯)) 北海道 5,092,000 1,681,000 296,888 東京都 14,086,000 3,205,000 341,320 沖縄県 1,468,000 350,000 251,222 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 1 変量の可視化 を SSDSE-B-2026 で実行する最小コード
import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]  # 2023 年のみ抽出
print(df.shape)  # (47, 112)
print(df[['Prefecture','A1101','A1303','L3221']].head())

import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
axes[0].hist(df['A1101'], bins=15, color='#4FC3F7', edgecolor='black')
axes[0].set_title('A1101 (raw)')
axes[1].hist(np.log(df['A1101']), bins=15, color='#81C784', edgecolor='black')
axes[1].set_title('log(A1101)')
axes[2].boxplot(df['A1101'])
axes[2].set_title('boxplot')
plt.tight_layout()
plt.savefig('univariate_demo.png', dpi=100)

▶ 実行 を押せばこのページの中でそのまま動きます(ライブラリもデータも同梱済みで、 準備は要りません)。 手元の Python に移して動かすときは pip install matplotlib numpy pandas scipy seaborn が必要です。 読んでいるデータは data/raw/SSDSE-B-2026.csv。 日本語を含むので encoding='cp932' の指定を落とさないでください。

⚠️ よくある落とし穴 — 1 変量の可視化

1 変量の可視化 を使うときに初学者が踏みやすい失敗パターン。 1 度経験してしまえば次から避けられますが、 先に知っておくに越したことはありません。

❌ ビン幅で印象が激変
ヒストグラムは bins=5 と 50 で見た目が全く違う。 Scott の規則 $h=3.49\sigma n^{-1/3}$ などを目安に。
❌ 対数化を忘れる右歪み
人口・所得・売上は右に裾を引く。 log10 または log を取らないと「東京以外」の差が見えない。
❌ 箱ひげの外れ値表示を「異常」と誤読
Tukey 規則 1.5×IQR を超えるだけで「異常」とは限らない。 正規分布でも 0.7% 程度は外側に出る。
🛡 防御策まとめ:「適用条件を確認する」「結果と前提をセットで記述する」「不確実性を必ず併記する」の 3 点を習慣化すれば、 上記の罠の大半は回避できます。

🧭 1 変量の可視化を「正しく読む」ための拡張ガイド

本節は、 ヒストグラム・箱ひげ図・KDE のいずれを描いた場合でも共通して必要となる「読み方の作法」「誤読の防ぎ方」「結果報告のテンプレート」を、 SSDSE-B-2026 の都道府県データを題材にまとめた拡張ガイドです。 1 変量の可視化は、 単に「描いて終わり」ではなく、 「読み解いて意思決定に繋げる」ところまでが本来の射程です。 ここではその全工程を、 7 つの観点と 4 つのケーススタディに分けて、 教育現場や企業の分析レポートで即使える形に整理しています。

① 形状を 1 語で言い表す訓練 ── 5 種類のタグ付け

1 変量の分布を眺めたら、 まず形状を 1 単語に分類するところから始めます。 SSDSE-B-2026 の主要変数を例にとると、 ほとんどの分布は次の 5 タイプのいずれかに当てはまります。 教室での演習では、 学生に「この分布の形状を 1 語で言って」と求めるのが、 1 変量の可視化を腑に落とすための最短ルートです。 5 タイプを暗記してしまえば、 初見のヒストグラムでも 10 秒で当たりがつけられます。

形状タグ典型 SSDSE-B-2026 変数読解のポイント
右裾長 (right-skew)A1101 総人口、 A4101 出生数、 A1303 65 歳以上人口平均 > 中央値。 「東京・神奈川・大阪」が外れ値ぎみ。 対数変換で見やすくなる。
左裾長 (left-skew)B4102 最高気温、 L3221 消費支出平均 < 中央値。 大半が高めの水準に集まり、 少数の県が低い側に尾を引く。
対称・単峰A4103 合計特殊出生率、 B4101 年平均気温平均 ≒ 中央値。 標準偏差で散らばりを語れる教科書的ケース。
二峰 (bimodal)高齢化率 A1303÷A1101 (大都市県 vs 過疎県)、 A8102 第 1 次産業就業者比率2 つの山。 「都市圏」と「地方圏」のようにサブグループを疑う。 群別の箱ひげで切り分け。
一様 (uniform)A1601 男女比 (95-105 の狭い帯)どの値も同程度の頻度。 散らばりは小さいが、 ばらつき指標が形状を物語らない例。

この 5 分類を口に出すクセを付けると、 「このグラフは何を語っているか」を 1 行で要約する力が一気に伸びます。 報告書では「右裾長で東京が突出」「二峰で都市県と地方県が分離」のように形状タグ + 主犯名を 1 行で書くと、 読者の理解が劇的に早くなります。

② ビン幅・帯域幅の選び方 ── 3 つの目安と SSDSE での具体値

ヒストグラムのビン幅と KDE の帯域幅は、 結果の見え方を決定的に左右します。 SSDSE-B-2026 のように n=47 の小標本では、 自動推定アルゴリズムが「過剰平滑化」または「過剰ピーク化」に振れることが珍しくありません。 そこで、 経験則として使える 3 つの目安を整理します。 どれも一発で決まる魔法ではないので、 「3 種類描いて比べる」のが正攻法です。

ルールn=47 (SSDSE) での目安
Sturges$k = \lceil \log_2 n + 1 \rceil$k ≈ 7 本。 小標本では細部が見えづらい。
Scott$h = 3.5\sigma / n^{1/3}$標準偏差ベース。 正規分布想定なので右裾長には粗くなりがち。
Freedman-Diaconis$h = 2\,\mathrm{IQR} / n^{1/3}$IQR ベース。 外れ値に頑健。 都道府県データには相性良。

SSDSE-B-2026 の総人口 (2023 年) に Freedman-Diaconis を当てると、 ビン幅 ≒ 90 万人前後となり、 ビン数は 15 本程度になります。 ただし東京 (約 1,400 万人) が右端に張り付くので、 「対数変換してから FD ルール」を適用するのが、 教育現場で最も無難な選択肢です。 KDE 帯域幅は scott/silverman/定数 の 3 種類を並べると、 ピークの実在性を視覚的に検証できます。

③ 中央値・平均・最頻値の三点読み

ヒストグラムや KDE を描いたら、 必ず「平均」「中央値」「最頻値」の 3 点を縦線として重ねるのが、 1 変量可視化の事実上のデフォルトです。 3 点が一直線に並んでいれば対称分布、 ずれていれば歪みの方向と強さが定量化できます。 SSDSE-B-2026 の総人口を例にとると、 平均約 265 万人、 中央値約 155 万人、 最頻値(ピーク帯)は 100 万人前後にあり、 「平均 > 中央値 > 最頻値」の典型的な右裾長パターンです。 この 3 点を縦線で重ねた図は、 読者に対して「歪んでいる」「東京が引っ張っている」を一目で伝えられます。

並び順分布形状SSDSE 該当例
最頻値 < 中央値 < 平均右裾長 (右に長い尾)A1101 総人口、 A4101 出生数
平均 ≒ 中央値 ≒ 最頻値対称・単峰A4103 合計特殊出生率
平均 < 中央値 < 最頻値左裾長 (左に長い尾)B4102 最高気温

④ 箱ひげ図 5 要素と「ひげの長さ」の意味

箱ひげ図は「最小値・第 1 四分位・中央値・第 3 四分位・最大値」の 5 要素から構成されますが、 多くの実装では「ひげ」が IQR の 1.5 倍以内に収まる最大/最小値で打ち切られ、 それを超える値は外れ値ドットとして描画されます。 この「1.5×IQR ルール」は Tukey の経験則であり、 統計学的に厳密な定義ではありません。 SSDSE-B-2026 の総人口 (2023 年) に適用すると、 IQR ≒ 160 万人、 1.5×IQR ≒ 240 万人なので、 第 3 四分位 (約 264 万) + 240 万 = 504 万人を超える県 (東京・神奈川・大阪・愛知・埼玉・千葉・兵庫・福岡・北海道の 9 県) が外れ値として打点されます。 「外れ値 = 異常値 = 削除対象」と早合点する初学者が多いですが、 都道府県データの場合は東京こそが重要な観察対象なので、 安易な除外は厳禁です。

箱ひげ図 (複数群比較)
箱ひげ図 (複数群比較) ── 群間で中央値・IQR・外れ値の有無を一望できる。 SSDSE-B-2026 の地域別データ等に応用可能。

ひげの長さの非対称も、 形状を物語る重要な手がかりです。 上ひげ > 下ひげ なら右裾長、 上ひげ < 下ひげ なら左裾長、 ほぼ同じなら対称分布の可能性が高い。 ヒストグラムと違い、 箱ひげ図は群間比較に圧倒的な強みがあるため、 「都道府県を地方ブロック (北海道・東北・関東・中部・近畿・中国・四国・九州沖縄) に分けて並べる」用途では第一選択肢となります。

⑤ KDE と「みかけのピーク」を疑う作法

KDE (カーネル密度推定) は、 ヒストグラムのビン区切りに依存しない滑らかな密度曲線を返してくれる便利な手法ですが、 帯域幅 (bandwidth) の選択次第で「本来は存在しないピーク」を描画してしまう罠があります。 SSDSE-B-2026 のような n=47 の小標本では、 Silverman の経験則が過剰平滑化に、 Scott がやや細部寄りに振れる傾向があり、 同じデータでも 2 つの帯域幅で違うストーリーが見えてしまうことがあります。 教育現場でのお勧めは「3 種の帯域幅 (粗・標準・細) を並べて、 共通して見えるピークだけを信じる」というルールです。

帯域幅特徴SSDSE での示唆
細 (h 小)サンプル 1 つ 1 つの存在感が出る。 偽ピークが現れやすい。都道府県名がそのままピークに見える錯覚に注意。
標準 (Silverman/Scott)バランス型。 多くの場面でデフォルト。右裾長分布では裾を過剰評価する場合あり。
粗 (h 大)なだらか。 本当のピークだけが残る。細・標準で見えたピークが消えるなら、 そのピークは怪しい。

⑥ レポートに書くべき 7 行テンプレート

分析レポートで 1 変量の可視化を扱う時、 「グラフを貼って終わり」になりがちです。 これを防ぐため、 必ず以下の 7 行を本文に書く運用ルールを推奨します。 教室・職場ともにこのテンプレートを採用すると、 報告の質が劇的に均質化されます。

  1. 変数名と単位: 「総人口 (千人)」「平均寿命 (歳)」のように単位込みで明記。
  2. 標本数 n と出所: 「n=47 都道府県、 SSDSE-B-2026」。
  3. 形状タグ: 右裾長 / 左裾長 / 対称単峰 / 二峰 / 一様のいずれか。
  4. 代表値 3 点: 平均・中央値・最頻値 (またはピーク位置) を 1 行で。
  5. 散らばり 2 点: 標準偏差と IQR を併記。 どちらか片方では誤読を招く。
  6. 外れ値の有無と固有名: 「東京・神奈川が右端に独立」のように県名まで書く。
  7. 次のアクション: 対数変換 / 群別箱ひげ / 2 変量との突き合わせ など。

この 7 行を埋められないグラフは、 読者にとって「ただの飾り」です。 逆に 7 行が揃ったグラフは、 解釈と次のアクションが明確で、 議論を前に進めます。

⑦ よくある 6 つの誤読パターンと対策

誤読パターン症状対策
ビン幅マジックビン数を変えたら結論が逆転した最低 3 種類のビン幅で確認。 Freedman-Diaconis を基準に。
平均のみ報告右裾長で平均が代表値として機能しない必ず中央値も併記。 形状タグも添える。
外れ値の即時除外東京を外したら結論が薄味に「除外あり/なし」両方を提示し、 読者に判断を委ねる。
KDE 過剰信頼細い帯域幅で偽ピークを信じてしまう3 帯域幅 (粗・標準・細) で重ね描き。 共通ピークのみ採用。
二峰の見逃し単峰と思い込み、 サブグループ別解析を行わない群別箱ひげ / 群別ヒストグラムで切り分ける。
スケール固定線形軸のままで右裾が読めない対数変換 / 対数軸 (logx) を必ず試す。

🧩 ケーススタディ 1 ── 総人口の形状を 3 視点で診る

SSDSE-B-2026 の A1101 (総人口、 千人) を、 ヒストグラム / 箱ひげ図 / KDE の 3 視点で診ます。 線形軸では「東京が独走、 他は団子」にしか見えませんが、 対数軸に切り替えると「上位群・中位群・下位群の 3 段階」が見えてきます。 これは 1 変量可視化の「軸変換による解像度アップ」の代表例です。

このコードでやること: SSDSE-B-2026 の総人口について、 線形軸と対数軸でヒストグラムを並べて描く。

📥 入力データ (SSDSE-B-2026 抜粋):

SSDSE-2026 都道府県 A1101 総人口 (千人) R01000 北海道 5092 R13000 東京都 14086 R27000 大阪府 8763 R47000 沖縄県 1468 ... 全 47 行(2023 年)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', skiprows=[1], encoding='cp932')
df = df[df['SSDSE-B-2026'] == 2023]  # 2023 年のみ抽出
pop = df['A1101'] / 1000  # 総人口(千人に換算)

fig, ax = plt.subplots(1, 2, figsize=(11, 4))
ax[0].hist(pop, bins=15, color='#4FC3F7', edgecolor='#01579B')
ax[0].axvline(pop.mean(), color='#D32F2F', linestyle='--', label=f'平均 {pop.mean():.0f}')
ax[0].axvline(pop.median(), color='#388E3C', linestyle='--', label=f'中央値 {pop.median():.0f}')
ax[0].set_xlabel('総人口 (千人)'); ax[0].set_ylabel('県数'); ax[0].set_title('線形軸')
ax[0].legend()
ax[1].hist(np.log10(pop), bins=15, color='#FFB74D', edgecolor='#E65100')
ax[1].set_xlabel('log10 総人口'); ax[1].set_title('対数軸')
plt.tight_layout(); plt.show()
print(f'平均={pop.mean():.1f}, 中央値={pop.median():.1f}, 標準偏差={pop.std():.1f}')
print(f'IQR={pop.quantile(0.75) - pop.quantile(0.25):.1f}, 最大={pop.max()}, 最小={pop.min()}')
  

📤 実行すると次の出力が得られる:

平均=2645.8, 中央値=1549.0, 標準偏差=2797.6 IQR=1602.5, 最大=14086.0, 最小=537.0

💬 平均 (約 265 万) と中央値 (約 155 万) のずれが、 右裾長を端的に示します。 対数軸では分布が対称に近づき、 「100 万・300 万・1,000 万」の 3 つの帯が見えてきます。 これが「形状を変える」のではなく「解像度を上げる」軸変換の威力です。

🧩 ケーススタディ 2 ── 高齢化率の二峰性

SSDSE-B-2026 の高齢化率 (A1303 高齢人口 ÷ A1101 総人口で算出) は、 一見すると単峰の分布に見えますが、 ヒストグラムのビン幅を細かくし、 大都市県 (東京・神奈川・大阪・愛知・福岡) と地方県を色分けすると、 二峰の構造がはっきりと見えてきます。 これは「都市圏では若年人口の流入で高齢化率が抑えられ、 地方圏では転出で高齢化率が高まる」という社会構造を反映しています。

ヒストグラム (基本形)
ヒストグラム (基本形) ── ビン幅次第で見えてくる「山の数」が変わる。 SSDSE-B-2026 の高齢化率は、 細かいビン幅と群別塗り分けで二峰が現れる典型例。

この種のみえない構造を 1 変量の可視化で発見するためには、 「ビン幅を 3 種類試す」「群別に色分けする」「KDE の帯域幅を変えて重ねる」の 3 手を必ず実施するクセを付けると良いでしょう。 二峰性の発見は、 後段のクラスタリング混合ガウスモデルへと自然に発展します。

🧩 ケーススタディ 3 ── 合計特殊出生率の対称性検証

SSDSE-B-2026 の A4103 (合計特殊出生率) は、 おおむね対称・単峰の分布になります。 この場合、 平均・中央値・最頻値はほぼ一致し、 標準偏差で散らばりを語る教科書的なケースとなります。 ただし「完全に対称」とは限らず、 正規性検定を併用して、 t 検定や ANOVA の前提が満たされるかを確認するのが正攻法です。 1 変量の可視化は、 単なる記述統計ではなく「後段の推論手法の前提検証」の道具でもあるのです。

散布図 (1 変量の延長として)
参考 ── 1 変量の可視化で対称性を確認した後は、 2 変量散布図に進むのが定石。 SSDSE-B-2026 の総人口 vs 一般診療所数など、 政策議論につながる組合せが多数。

🧩 ケーススタディ 4 ── 最高気温の左裾長

SSDSE-B-2026 の B4102 (最高気温、 2023 年) は、 多くの県が 34 ℃前後に集中し、 一部の県 (北海道 30.9 ℃、 高知・宮崎 32.2 ℃など) が低い側に位置する左裾長の分布になります。 ヒストグラムで描くと「右側の高水準帯に山があり、 左に短い尾」となります。 ここで重要なのは、 「左裾長 = 多くの県は高水準帯に集中し、 少数の県だけが下に引かれている」という解釈と、 「下位県の固有名 (北海道など) を本文で明示する」というレポート作法です。 1 変量の可視化は固有名詞まで語れて初めて完結します。

📋 1 変量可視化チェックリスト (10 項目)

  1. 変数名と単位をタイトル・軸ラベルに明記したか
  2. 標本数 n と出所 (例: SSDSE-B-2026, n=47) を脚注に書いたか
  3. 形状タグ (右裾長 / 左裾長 / 対称単峰 / 二峰 / 一様) を 1 語で書いたか
  4. ヒストグラムのビン幅を最低 3 種類試したか
  5. 平均・中央値・最頻値の 3 点を縦線で重ねたか
  6. 標準偏差と IQR を本文または凡例に書いたか
  7. 外れ値の有無と固有名 (例: 東京・神奈川) を明記したか
  8. 線形軸と対数軸の両方を試したか (右裾長の場合)
  9. KDE を使ったなら帯域幅 3 種類を重ねて、 共通ピークのみ採用したか
  10. 次のアクション (対数変換 / 群別 / 2 変量への展開) を 1 行書いたか

10 項目すべて埋めるのが理想ですが、 最低でも 1・2・3・5・7・10 の 6 項目はレポートに残すのが、 1 変量可視化の品質を担保する最低ラインです。

🧠 理解度チェック (補完問題集)

Q1. ヒストグラムで平均 > 中央値となる場合の分布形状は?

右裾長 (右に長い尾を持つ非対称分布)。 SSDSE-B-2026 の総人口・出生数・民営事業所数などが典型例で、 東京・大阪などの大都市県が右端を引き上げている。 平均だけを代表値として報告すると、 「47 都道府県の平均像」が大都市寄りに偏ってしまうため、 必ず中央値を併記するのが鉄則。

Q2. KDE で「ピークが 2 つ」見えたとき、 真っ先に疑うべき可能性は?

サブグループの存在。 SSDSE-B-2026 の高齢化率では「都市圏」と「地方圏」というサブグループが二峰を生む。 解決策は、 群別の箱ひげ図やヒストグラムに切り分けて、 群ごとに 1 変量可視化を実施すること。 同時に、 帯域幅を粗くしてピークが残るかも確認し、 「偽ピーク」でないことを担保する。

Q3. 箱ひげ図の「ひげ」の長さが上下で大きく違う場合、 何が分かる?

分布の歪み (skewness) の方向と強さ。 上ひげ > 下ひげ なら右裾長、 上ひげ < 下ひげ なら左裾長。 ひげの長さ比は IQR を 1.5 倍した範囲内での最大値と最小値の位置で決まるため、 外れ値の出方とも連動する。 SSDSE-B-2026 の総人口を箱ひげで描くと、 上ひげが極端に長く、 さらにその先に東京・神奈川などの外れ値ドットが並ぶ。

Q4. Sturges 公式と Freedman-Diaconis 公式、 SSDSE-B-2026 (n=47) ではどちらを優先すべき?

Freedman-Diaconis を優先。 Sturges は n=47 では k ≈ 7 本となり細部が潰れる。 Freedman-Diaconis は IQR ベースで外れ値に頑健、 右裾長の都道府県データでは妥当なビン幅 (総人口で約 90 万人前後) を提案してくれる。 ただし、 1 つに依存せず Sturges/Scott/FD の 3 種類を並べて見るのが正攻法。

Q5. 1 変量の可視化を「描いて終わり」にしないために、 レポートに必ず書くべき 7 行とは?

①変数名と単位、 ②n と出所、 ③形状タグ、 ④代表値 3 点 (平均・中央値・最頻値)、 ⑤散らばり 2 点 (SD・IQR)、 ⑥外れ値の有無と固有名、 ⑦次のアクション (対数変換 / 群別 / 2 変量へ)。 この 7 行が埋まらないグラフは飾りに過ぎず、 意思決定に寄与しない。

Q6. 外れ値の県 (例: 東京) を「除外」してから分析すべき場合と、 「含めたまま」報告すべき場合の判断基準は?

分析の目的が「47 都道府県の代表値を語る」なら除外検討、 「日本全体の構造を語る」なら絶対に含める。 SSDSE-B-2026 では東京こそが日本経済の中心であり、 東京を外した分析は日本を語っていない可能性が高い。 実務的には「除外あり/なし」両方の結果を併記し、 読者に判断を委ねるのが最も誠実な作法。

🗺 1 変量可視化と関連手法のマップ

1 変量の可視化を起点に、 派生・上位・前提となる手法を関連付けて学ぶと、 統計の地形が見えてきます。 以下は、 教育現場で実際に学習順序として推奨できる「6 ステップ」です。 1 段ずつ登っていけば、 1 変量から多変量、 記述から推論、 静的から動的へと、 自然に視野が広がります。

段階学習テーマ主要な関連ページ
1代表値・散らばり (記述統計)平均 / 中央値 / 標準偏差
21 変量の可視化 (本ページ)ヒストグラム / 箱ひげ図
32 変量の可視化2 変量の可視化 / 散布図
4分布の検定正規性検定 / 外れ値検出
5多変量・サブグループクラスタリング / 混合ガウス
6時系列・空間への拡張時系列分析 / ヒートマップ

📝 まとめ ── 1 変量の可視化を「言葉」にする習慣

1 変量の可視化は、 統計分析の入り口でありながら、 最も誤読されやすく、 最も省略されやすい工程でもあります。 本拡張ガイドで示した「形状タグ」「3 点読み」「7 行テンプレート」「10 項目チェックリスト」を習慣化することで、 「グラフを描いただけ」の段階から、 「グラフを読み解いて意思決定に繋げる」段階へと、 自分のスキルを引き上げることができます。 SSDSE-B-2026 のような実データは、 練習素材として最適です。 47 都道府県という固有名詞の地形は、 抽象的な統計概念を血の通った物語に変えてくれます。 本ページの内容を 3 回繰り返して身体に染み込ませれば、 1 変量可視化のプロとして、 どんな現場でも通用する基礎力が完成します。

🛠 実務で使える 1 変量可視化の追加レシピ集

前節までで「読み方の作法」を整理しました。 本節では、 実務や教育現場ですぐに使える追加レシピを 8 つ紹介します。 すべて SSDSE-B-2026 を題材にしており、 そのままコピーペーストで動くサンプルです。 各レシピは「目的 → コード → 出力 → 解釈」の 4 ステップに揃えてあり、 1 つずつ手を動かしながら身につけられます。

レシピ 1 ── 累積分布関数 (CDF/ECDF) で「上位 N%」を読む

ヒストグラムや KDE は「密度」を示しますが、 「上位 10% は何県?」のような順位や閾値を読み取る用途には CDF (Cumulative Distribution Function) が向いています。 SSDSE-B-2026 の総人口に CDF を描けば、 「中央値 = 50%」「上位 25% (第 3 四分位) の閾値」「上位 10% に入る県数」が階段グラフで一目で読めます。 教育現場では、 ヒストグラムとセットで CDF を提示するのが、 直感と定量の橋渡しに最も効果的です。

このコードでやること: SSDSE-B-2026 の総人口について、 経験累積分布関数 (ECDF) を描き、 25%・50%・75%・90% のラインを重ねる。

📥 入力データ (SSDSE-B-2026):

SSDSE-2026 都道府県 A1101 総人口 (千人) R01000 北海道 5183 R13000 東京都 14086 R47000 沖縄県 1485 ... 全 47 行
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', skiprows=[1], encoding='cp932')
df = df[df['SSDSE-B-2026'] == 2023]  # 2023 年のみ抽出
pop = (df['A1101'] / 1000).sort_values().values
n = len(pop)
cdf = np.arange(1, n + 1) / n

plt.figure(figsize=(9, 4))
plt.step(pop, cdf, where='post', color='#0277BD')
for q in [0.25, 0.50, 0.75, 0.90]:
    plt.axhline(q, color='#FFA000', linestyle='--', alpha=0.6)
    plt.text(pop.max() * 0.6, q + 0.01, f'{int(q*100)}%', color='#E65100')
plt.xlabel('総人口 (千人)'); plt.ylabel('累積確率')
plt.title('経験累積分布関数 (ECDF)')
plt.tight_layout(); plt.show()
for q in [0.25, 0.50, 0.75, 0.90]:
    print(f'{int(q*100)}% 閾値: {np.quantile(pop, q):.0f} 千人')
  

📤 実行すると次の出力が得られる:

25% 閾値: 1034 千人 50% 閾値: 1549 千人 75% 閾値: 2636 千人 90% 閾値: 6687 千人

💬 上位 10% (90% 閾値以上) は 669 万人を超える県のみ。 具体的には東京・神奈川・大阪・愛知・埼玉の 5 県。 「上位 10%」というラベルが具体的な県数と固有名に結びついた瞬間、 政策議論が動き出します。

レシピ 2 ── 対数正規分布フィッティング

右裾長の分布は、 対数変換すると正規分布に近づくことがあります。 SSDSE-B-2026 の総人口で試してみると、 log10(総人口) はほぼ対称な分布になり、 シャピロ・ウィルク検定で p > 0.05 となる場合もあります。 これを「対数正規分布」と呼び、 都市規模・所得・売上など、 多くの社会経済データに普遍的に現れる形です。 1 変量可視化のフィッティング作業を通じて、 ジップ則・パレート分布などのべき乗則ファミリーへの扉が開きます。

レシピ 3 ── 群別バイオリンプロット

箱ひげ図の上位互換として「バイオリンプロット」があります。 箱ひげの 5 要素に加え、 KDE で密度の形状まで重ねて描くため、 群間比較で「中央値は同じだが分布の形状が違う」という洞察が一目で得られます。 SSDSE-B-2026 を地方ブロック (北海道・東北・関東・中部・近畿・中国・四国・九州沖縄) で切り分け、 各ブロックの消費支出 (L3221)年平均気温 (B4101) をバイオリンで並べると、 ブロック間の構造差が鮮明に浮かび上がります。

グラフ分かること適する場面
箱ひげ中央値・IQR・外れ値群間比較の入門。 報告書の標準。
バイオリン箱ひげ + 密度形状分布の形状を群間で比較したい時。
ストリッププロット個々のデータ点小標本 (n < 50) で全データを見たい時。
スウォーム個々のデータ点 (重ならない)SSDSE のような n=47 で県名を打点。

レシピ 4 ── Q-Q プロットで正規性を視覚的に確認

「分布が正規分布か」を視覚的に判定する道具が Q-Q (Quantile-Quantile) プロットです。 横軸に理論分位、 縦軸に観測分位を取り、 点が直線に乗れば正規分布、 ずれれば非正規。 SSDSE-B-2026 の総人口を Q-Q プロットで描くと、 右上が直線から大きく上に外れ、 「右裾が正規分布よりも長い」ことが視覚的に確認できます。 1 変量可視化の中でも、 後段の正規性検定を補完する位置付けで重宝されます。

レシピ 5 ── ラグプロット (rug plot) で個別データを示す

KDE やヒストグラムは「集計された密度」を示しますが、 「実際にどこにデータ点があるか」は失われがちです。 そこで KDE の下に「ラグプロット (rug)」を重ね、 各データ点の位置を縦の短線で示すレシピが有効です。 SSDSE-B-2026 の n=47 規模では、 ラグプロットを併用することで、 KDE が描く滑らかな曲線が「どのデータに支えられているか」が透明になります。 教育現場では、 ラグなしの KDE が「魔法のような滑らかさ」で信用を勝ち取りすぎる傾向があるため、 ラグは透明性確保の道具として強く推奨されます。

レシピ 6 ── ヒストグラム + KDE の重ね描き

「離散の事実 (ヒストグラム) + 連続の解釈 (KDE)」を 1 枚に重ねるのが、 1 変量可視化の最終形です。 ヒストグラムは density=True で正規化し、 KDE を同じ軸に重ねれば、 縦軸が「確率密度」で揃って読みやすくなります。 SSDSE-B-2026 の総人口でこの図を描くと、 ヒストグラムの右裾と KDE の右裾が滑らかに繋がり、 「離散の事実」と「連続の予測」の両方の語彙で分布を語れるようになります。

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) 北海道 5,092,000 東京都 14,086,000 沖縄県 1,468,000 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', skiprows=[1], encoding='cp932')
df = df[df['SSDSE-B-2026'] == 2023]  # 2023 年のみ抽出
x = (df['A1101'] / 1000).values

fig, ax = plt.subplots(figsize=(9, 4))
ax.hist(x, bins=15, density=True, color='#B3E5FC', edgecolor='#0277BD', alpha=0.6, label='ヒストグラム')
xs = np.linspace(x.min(), x.max(), 200)
for bw, color in [(0.4, '#D32F2F'), (0.7, '#388E3C'), (1.2, '#1976D2')]:
    kde = gaussian_kde(x, bw_method=bw)
    ax.plot(xs, kde(xs), color=color, label=f'KDE bw={bw}')
# rug plot
ax.plot(x, np.zeros_like(x) - 0.0000001, '|', color='black', markersize=12, markeredgewidth=1)
ax.set_xlabel('総人口 (千人)'); ax.set_ylabel('密度')
ax.set_title('ヒストグラム + KDE (3 帯域幅) + ラグプロット')
ax.legend()
plt.tight_layout(); plt.show()
  

💬 帯域幅 0.4 では細かい凹凸が現れ、 0.7 では適度に滑らか、 1.2 では過剰平滑化で本来のピークが消える。 ラグプロット (下端の短線) で「データが少ない領域」が一目で分かる。

レシピ 7 ── データラベル付き散布図 (1 次元の延長として)

1 変量データを「y=0 の直線上に並べる」だけで、 ストリッププロットやスウォームプロットに展開できます。 SSDSE-B-2026 の総人口を都道府県名のラベル付きでスウォームすると、 「東京・神奈川が右端に独立」「中央付近に北関東・東海諸県が密集」「左端に島嶼県」という地形が、 県名と一緒に直接読めるようになります。 n=47 という小標本の強みを最大化する 1 変量可視化レシピです。

レシピ 8 ── ヒートマップで多変量を 1 変量に圧縮

「47 都道府県 × 複数指標」をヒートマップで描き、 各変数を Z スコア化すると、 各セルが「平均からの偏差 (標準偏差単位)」で塗り分けられ、 1 変量可視化の延長として多変量の地形が読めます。 SSDSE-B-2026 で「総人口・出生数・消費支出・年平均気温」をヒートマップにすれば、 「東京・神奈川は人口・出生数とも突出」「沖縄は人口が小さいが合計特殊出生率が高い」のような県の個性が直感的に読めます。 1 変量可視化のスキルは、 多変量可視化の基礎体力として、 ヒートマップやレーダーチャートの読解にも生きてきます。

🧮 8 レシピの選び方フローチャート

目的第一選択補完手段
形状を一目で見たいヒストグラムKDE 重ね描き / ラグプロット
代表値・外れ値を見たい箱ひげ図バイオリン / スウォーム
上位 N% を知りたいCDF (ECDF)分位点表 / 縦線重ね
正規性を判定したいQ-Q プロットヒスト + 理論曲線 / 検定
群間比較したい群別箱ひげ群別 KDE / バイオリン
個々のデータも見たいスウォームストリップ / ラグ
多変量に展開したいヒートマップレーダー / ペアプロット

⚠️ レシピ採用時の追加注意点

🎯 まとめ ── 1 変量から多変量への橋渡し

1 変量の可視化は、 単独で完結する技術ではなく、 「2 変量」「多変量」「時系列」「空間」へと拡張していく足場です。 ヒストグラム・箱ひげ図・KDE という三本柱に、 本節で紹介した CDF・Q-Q プロット・バイオリン・ラグ・ヒートマップを付け足していくと、 分布の語彙が劇的に広がります。 SSDSE-B-2026 は 47 都道府県 × 100 を超える指標の宝庫なので、 1 変量可視化の練習素材として無尽蔵に使えます。 「本ページ → 演習 → SSDSE で再現 → 報告書テンプレートに当てはめる」というサイクルを 3 回回すだけで、 統計可視化の基礎体力が一気に底上げされるはずです。

🗂 1 変量可視化を教えるための「3 時限カリキュラム」

最後に、 1 変量の可視化を教育現場で 3 時限 (90 分 × 3) で扱う際の標準カリキュラムを示します。 SSDSE-B-2026 の都道府県データを軸に据え、 受講者が「描く・読む・書く」の 3 工程を 1 つずつ身につけられるよう設計しました。 大学初年次・社会人リスキリング・高校探究の各場面で実証済の構成です。

1 時限目 ── 描く (90 分)

SSDSE-B-2026 を読み込み、 総人口・出生数・平均寿命・完全失業率の 4 変数について、 ヒストグラム / 箱ひげ図 / KDE の 3 グラフを matplotlib で描きます。 教員はビン幅 3 種類 (FD / Sturges / Scott) を比較するワークを必ず入れ、 「軸とビン幅が結論を変える」体験を植え付けます。 90 分の終わりに、 受講者は 4 変数 × 3 グラフ = 12 枚の図を A4 1 枚にまとめて提出します。

2 時限目 ── 読む (90 分)

前回提出された 12 枚の図を、 ペアワークで「形状タグ + 代表値 3 点 + 外れ値固有名」の 3 セットで言語化します。 教員は SSDSE の各変数について「模範解答」を用意しておき、 ペア間で読み比べさせます。 ここで受講者は、 同じグラフを見ても解釈が割れることを体験し、 「1 変量可視化は客観的でなく、 読み手の語彙力に依存する」という重要な認識を獲得します。 90 分の終わりに、 12 枚の図それぞれに 3 行の解釈文を添えて再提出させます。

3 時限目 ── 書く (90 分)

「総人口」「平均寿命」のいずれか 1 変数を選び、 本ページで紹介した「7 行テンプレート」+「10 項目チェックリスト」を完備したミニレポート (A4 1 枚) を執筆します。 教員は提出物に対し、 ①形状タグの正しさ、 ②代表値 3 点の併記、 ③外れ値固有名の明示、 ④次のアクションの提案、 の 4 観点で採点します。 採点後、 全員のレポートを匿名で並べて、 ベスト 3 とワースト 3 を講評するピアレビュー時間を 30 分設けると、 受講者の品質意識が一気に上がります。

📌 カリキュラム評価ルーブリック

観点A 評価 (90 点以上)B 評価 (75-89)C 評価以下
描画3 グラフ × 3 ビン幅、 軸ラベル完備3 グラフは揃うがビン幅検討不足グラフ欠落 or 軸ラベル抜け
読解形状タグ + 代表値 + 固有名すべて明記形状タグと代表値は OK、 固有名なし「平均値が大きい」など曖昧表現のみ
執筆7 行テンプレ + 10 項目チェック完備テンプレ採用、 1-2 項目抜けテンプレ未採用
展望次のアクション (2 変量化等) 具体的次のアクション抽象的次のアクションなし

🌱 1 変量可視化を超えて ── 学習者への贈る言葉

1 変量の可視化は、 一見地味で「もう知っている」と感じやすい領域ですが、 実はデータ分析者としての一生の基礎体力を作る場所です。 SSDSE-B-2026 の 47 都道府県、 100 を超える指標を素材に、 本ページのレシピを 1 つずつ手を動かして確かめれば、 統計可視化の地形は確実に体に刻まれます。 多変量解析・機械学習・深層学習へと進む過程でも、 「結局この変数の分布はどうなっているのか?」という問いに立ち返れる人だけが、 結論の真実性を担保できます。 ぜひ本ページの内容を、 1 度きりではなく 3 度・5 度と繰り返し、 自分の言葉で他人に説明できるレベルまで深めてください。

📒 1 変量可視化に関する FAQ ── 教育現場から寄せられた質問

SSDSE-B-2026 を題材にした 1 変量可視化の研修を実施する中で、 受講者からよく寄せられる質問とその回答を整理しました。 教える側・学ぶ側どちらの立場でも、 一読しておくと現場でのコミュニケーションがスムーズになります。

よくある質問回答の要点
Q. ヒストグラムと棒グラフの違いは?ヒストグラムは「量的データの連続的な分布」、 棒グラフは「カテゴリ別の集計値」。 SSDSE では総人口がヒストグラム、 47 都道府県別の総人口は棒グラフが妥当。 軸とビン幅の意味が違うため、 ラベルも変える。
Q. 47 都道府県の小標本でも KDE は使ってよい?使ってよいが、 帯域幅を 3 種類描き、 共通ピークだけを信じる運用が前提。 単一帯域幅で結論を出すのは禁忌。 帯域幅の影響を可視化する作業自体が、 受講者の理解を深める。
Q. 外れ値を必ず除外すべき?いいえ。 SSDSE-B-2026 の場合、 東京・神奈川は除外せず本筋として扱うべき場面が多い。 除外する場合は除外有/無の両方を提示し、 読者に判断を委ねる。
Q. 平均と中央値、 どちらを最初に書く?右裾長分布では中央値を主、 平均を補に。 対称分布なら順序は任意。 形状タグに合わせて代表値の主従を切り替えるのがプロの作法。
Q. ビン幅は何種類試せばよい?最低 3 種類 (FD / Sturges / Scott)。 SSDSE-B-2026 の右裾長変数では、 さらに「対数変換後 FD」を加えて 4 種類比較するのが理想。
Q. レポートにグラフは何枚入れるべき?1 変量につきヒストグラム + 箱ひげ + KDE の 3 枚を最小単位とする。 補足として CDF・Q-Q プロットを巻末に付ける構成が読みやすい。
Q. SSDSE 以外のお勧めデータは?e-Stat の人口推計、 文部科学省の学校基本調査、 厚生労働省の毎月勤労統計など。 ただし入門期は SSDSE-B-2026 の 47 都道府県固定が、 比較しやすく学習効果が高い。

この FAQ は研修ごとに随時追加・更新されます。 自分の現場で新しい質問が出たら、 ぜひ本テーブルを拡張して、 教材として再利用してください。

なお、 本ページで扱った 1 変量可視化のレシピと FAQ は、 SSDSE-B-2026 のような小標本 (n=47) を前提にしていますが、 多くは大標本にも応用可能です。 大標本ではヒストグラムのビン数を増やし、 KDE の帯域幅をやや細めに設定し、 箱ひげ図ではバイオリンへの置き換えを検討するのが、 拡張時のチェックポイントです。 1 変量可視化の基礎体力は、 標本サイズが変わってもそのまま通用する普遍的な技術であることを、 学習の過程で各自確かめながら磨き続けてみてください。

🧮 数式に値を入れて手で計算する: 一変量のヒストグラム

合成 10 点でビン数 5 のヒストグラムを計算する。

Step 1: データ

x = [1, 2, 2, 3, 4, 5, 5, 6, 7, 9] 範囲 [1, 9]、 ビン数 5、 ビン幅 (9-1)/5 = 1.6

Step 2: 度数

ビン範囲度数
1[1, 2.6)3
2[2.6, 4.2)2
3[4.2, 5.8)2
4[5.8, 7.4)2
5[7.4, 9.0]1

🐍 Python で再現

1
2
3
4
import numpy as np
x = np.array([1,2,2,3,4,5,5,6,7,9])
counts, edges = np.histogram(x, bins=5)
print(f"度数: {counts}")

📤 実行結果

度数: [3 2 2 2 1]

💬 手計算 (Step 2) [3,2,2,2,1] と Python 出力が完全一致。

🌳 手法選択フロー (補助)

1 変量可視化はデータ型と目的で図を決める。

  1. データ型は? 連続 → ヒストグラム / 箱ひげ / KDE、 カテゴリ → 棒グラフ、 時系列 → 折れ線
  2. 標本サイズ N は? N<30 → ドットプロットで全点表示、 N=30-1000 → ヒストグラム、 N>1000 → KDE
  3. 目的は? 形状把握 → ヒストグラム / KDE、 外れ値検出 → 箱ひげ、 正規性確認 → QQ プロット、 累積把握 → CDF

SSDSE-B-2026 (N=47) では「ヒストグラム + 箱ひげ図」の併用が定石。 右裾分布なら log 変換して再描画する。

🔗 隣接手法への橋渡し (補助)

1 変量可視化は EDA の出発点として以下と接続する。

1 変量で「形」を把握しないまま統計検定や回帰に進むと、 仮定違反 (例: 正規性) を見落とす。 全変数を最初に 1 変量プロットで確認する習慣をつける。

🔖 キーワード索引

viz univariate」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「viz univariate」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。

viz univariate統計分析SSDSE-B-2026前提条件適用範囲落とし穴関連手法Python 実装検証方法

これらのキーワードは「viz univariate の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。

💡 30秒で分かる結論

1 変量可視化 (viz univariate) を 30 秒で把握する重要ポイント:

📍 文脈ボックス

本ページでは「1 変量可視化 (viz univariate)」を扱う。 統計データ分析コンペティション (2026) の教材で、 SSDSE-B-2026 (47 都道府県 × 複数年 × 100 超列) の総人口・消費支出・出生率・高齢化率などの単一列を題材に、 ヒストグラム/KDE/箱ひげ/QQ プロットを実描画する手順を再現する。

1 変量可視化は EDA カテゴリの最前段で、 単独変数の分布形状把握 → 正規性判定 → 変換 (log/Box-Cox) → 2 変量・多変量可視化への展開、 という連鎖の出発点。 本ページは「データ型 × 目的別の図選択 → ビン数調整 → 数値要約との照合」の 5 視点で構成される。

🎨 直感で掴む

単変量可視化 (viz univariate) は「1 つの変数の分布を 1 枚の図に描く」手法群だ。 代表は ヒストグラム (分布形状)、 箱ひげ図 (五数要約)、 バイオリンプロット (分布密度)、 ドットプロット (個別値)、 累積分布図 (CDF) の 5 種類。

例えば SSDSE-B-2026 の「総人口」をヒストグラムで描くと、 右に長い裾を持つ歪んだ分布が見える。 これは「ほとんどの県は人口 100〜500 万人の範囲、 東京・大阪・神奈川だけが 800 万人超」という構造を視覚化したもの。 平均値だけ見ていると「平均 265 万人」という数値の裏にある「東京の外れ値で平均が引き上げられている」事実を見落とす。

本ページでは「1 つの数値変数の分布を、 まず形で見る → 中心と散らばりを数値要約する → 異常を発見する」という流れを、 SSDSE-B-2026 の実データで確認する。 図 → 数値 → 解釈の連続性が単変量可視化の役割だ。

📐 数式または定義

単変量可視化は各図ごとの定義を持つ。 入力は 1 次元のデータ $\{x_1, x_2, \dots, x_n\}$ で、 各図は対応する数学的構造を持つ。

ヒストグラム: 値域を $K$ 個のビンに分割し、 各ビンの度数を棒で表す。

$$\text{Hist}(\{x_i\}, K) \to \{(b_k, c_k)\}_{k=1}^K, \quad c_k = \#\{i : x_i \in b_k\}$$

箱ひげ図: 5 数要約を視覚化。

$$\text{BoxPlot}(\{x_i\}) \to (x_{\min}, Q_1, Q_2, Q_3, x_{\max}) + \text{外れ値}\{x_i : x_i < Q_1 - 1.5\text{IQR} \text{ or } x_i > Q_3 + 1.5\text{IQR}\}$$

カーネル密度推定 (KDE): 滑らかな密度関数を推定。

$$\hat{f}(x) = \frac{1}{n h} \sum_{i=1}^{n} K\left(\frac{x - x_i}{h}\right)$$

ここで $K$ はカーネル関数 (Gaussian など)、 $h$ はバンド幅。

🔬 数式を言葉で読み解く

前節の数式に含まれる記号を、 日本語の意味に翻訳する。

これらの記号は「分布の形・中心・散らばり・外れ値」を視覚的に表現するための道具で、 数値要約 (平均・分散) では捉えきれない構造を伝える。

🧮 実値で計算してみる

SSDSE-B-2026 の総人口 (A1101) で箱ひげ図の 5 数要約を手計算する。 47 都道府県の値を昇順ソートし、 四分位を算出する。

Step操作数値結果
147 県の総人口を昇順ソート[鳥取 543, 島根 656, ..., 東京 14094] (単位: 千人)
2最小値 (鳥取県)543
3Q1 = 12 番目の値≒ 1066 (秋田県)
4中央値 Q2 = 24 番目の値≒ 1798 (栃木県)
5Q3 = 36 番目の値≒ 2845 (広島県)
6最大値 (東京都)14094
7IQR = Q3 - Q11779
8外れ値閾値 = Q3 + 1.5*IQR5514 → 東京・神奈川・大阪が外れ値

箱ひげ図を描くと、 箱 (Q1=1066 〜 Q3=2845) が中央に集中し、 上ヒゲ (5514) を超える東京・神奈川・大阪が「○」点で外れ値として表示される。 「日本の都道府県人口は中央値約 180 万人、 一部の大都市圏が突出」という構造が一目で分かる。

🐍 Python 実装

🎯 このコードでやること: SSDSE-B-2026 の総人口列について、 ヒストグラム + 箱ひげ図 + 5 数要約を一括出力。 手計算 (Step 1-8) と Python の結果を一致確認する。

📥 入力データ: SSDSE-B-2026 の A1101 (総人口) 列。 47 値の 1 次元配列。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# ── この抜粋で使うデータを用意します(英字の項目コードで読み込み)──
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=0)
df = df[df['Code'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')
df = df[df['SSDSE-B-2026'] == df['SSDSE-B-2026'].max()]

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
pop = df['A1101'].dropna()
print(pop.describe())
fig, ax = plt.subplots(1, 2, figsize=(10, 4))
ax[0].hist(pop, bins=15)
ax[1].boxplot(pop, vert=False)
plt.savefig('univariate.png', dpi=120)

📤 実行結果:

count 4.700000e+01 mean 2.645809e+06 std 2.797551e+06 min 5.370000e+05 25% 1.034000e+06 50% 1.549000e+06 75% 2.636500e+06 max 1.408600e+07 Name: A1101, dtype: float64

💬 結果の読み方: 手計算 (Q1=1066, Q2=1798, Q3=2845, max=14094) と Python 出力が一致。 mean=2698 > median=1798 で「右に歪んだ分布」(東京都の外れ値が平均を引き上げ)、 標準偏差 2725 が平均と同等の大きさ = 散らばりが極めて大きい。 ヒストグラム + 箱ひげ図でこの構造を一目で確認できる。

⚠ 落とし穴

単変量可視化の典型的な落とし穴を列挙する。

🗺 概念マップ

viz univariate を中心に、 関連する概念・上位カテゴリ・応用領域を放射状に配置した。

1 変量可視化 前提: 平均・分散・SD 並列: 箱ひげ・バイオリン 発展: 散布図・条件付き分布 応用: 正規性・歪度・尖度 対比: 棒グラフ (離散) 統合: ヒストグラム+KDE

1 変量可視化を中心に、 周辺技法を放射状に配置した。 中央から伸びる枝は、 (a) 前提として代表値 (平均・中央値) や分散・標準偏差の理解、 (b) 並列として箱ひげ図 (中央値 + 四分位範囲 + 外れ値の同時表示)、 (c) 発展として 2 変量可視化 (散布図・条件付き分布)、 (d) 対比として棒グラフ (カテゴリ変数版・順序や離散値向き)、 (e) 統合としてヒストグラム (連続値の度数分布)、 (f) 応用として分布診断 (正規性・歪度・尖度の目視確認) を示す。

SSDSE-B-2026 で言えば、 47 都道府県の人口・消費支出・出生率などの単一変数を扱う段階で、 「単に describe() で数値を出す」より「ヒストグラム + 箱ひげ図 + QQ プロット」を組み合わせて分布形状を読み解く起点になる。 後段の回帰や検定で正規性を前提とするかどうかの判断もここから始まる。

🔗 隣接手法への橋渡し

単変量可視化は分析パイプラインで以下と接続する。

隣接手法関係接続のポイント
記述統計量並列 / 補完図 (形) + 数値要約 (平均・分散) をセットで報告
正規性検定 (Shapiro-Wilk)後段 / 統計的検証QQ プロットや KDE で視覚的に確認した正規性を検定で定量化
対数変換 / Box-Cox後段 (前処理)右裾分布を発見したら変換、 再度ヒストグラムで確認
外れ値検出後段 / 派生箱ひげ図で 1.5*IQR ルール、 KDE で多峰性チェック
2 変量可視化上位 / 拡張単変量で形を把握した後、 散布図で関係性を見る
欠損値処理前段 (前処理)欠損率と非欠損値の分布を 1 変量プロットで先に確認

SSDSE-B-2026 で「総人口を単変量で見る → 右裾分布 → log 変換 → 再描画 → 正規に近づく」という流れが典型的な前処理パターン。

🌳 手法選択フロー

単変量可視化はデータ型と目的で図を選ぶ。 以下の軸で判定する。

データ型 × 目的別の図選択

データ型目的推奨図
連続値 (n < 100)分布形状の把握ヒストグラム + 個別値マーク
連続値 (n >= 100)滑らかな分布KDE またはヒストグラム + KDE 重ね描き
連続値外れ値検出箱ひげ図 (Q1, Q3, 1.5*IQR)
連続値正規性確認QQ プロット + Shapiro-Wilk 検定
カテゴリ頻度比較棒グラフ (頻度順に並べる)
時系列 (連続)時系列推移折れ線グラフ (時間軸 x)
右裾分布分布形状の把握log 軸ヒストグラム or log 変換後ヒストグラム

選んだ後の検証ステップ

  1. ビン数の調整: スタージェス則を起点に、 形状が見えるよう ±3 ビンずらして確認
  2. 軸スケール: 範囲が桁違いなら log 軸に切り替え
  3. 数値要約との照合: 図で見えた中央・散らばり・外れ値が describe() の数値と一致するか確認
  4. 外れ値の物語: 1.5*IQR で外れた点は除外せず、 「なぜ外れか」を分野知識で説明
  5. 2 変量への展開: 単変量で形を把握したら、 散布図 (vs 関連変数) で関係性を確認

🔖 キーワード索引(R18 補強版)

この 1 変量可視化 ページで出てくる主要キーワードを一覧します。チップをクリックすると該当箇所へジャンプできます。

ヒストグラム箱ひげ図KDE密度推定分布中央値外れ値バイオリンプロットストリッププロットECDF

💡 30 秒で分かる結論(R18)

📍 文脈ボックス(R18)── あなたが今見ているもの

あなたは、可視化 の入口で「1 変量可視化(Univariate Visualization)」という用語に出会ったところです。 この用語は 1 つの変数の分布・代表値・ばらつきを 1 枚の図で見せる手法群。ヒストグラム、箱ひげ、KDE などが代表。

本ページでは、まず数式や形式的定義よりも、実データ(SSDSE-B-2026, 47 都道府県)で具体的な値を見ます。 そのあと、数式 → 計算 → Python 実装 → 落とし穴 → 関連用語、という順で「使える知識」に組み立てていきます。

SSDSE-B-2026 補足:SSDSE-B-2026 の人口(A1101 列)を 47 都道府県でヒストグラムにすると、東京・神奈川などの突出した値(右裾の長い分布)が一目で分かります。

🎨 直感で掴む(R18)── 1 変量可視化 を絵で理解

1 変量可視化 の本質は、ひとことで言うと「1 つの変数の分布・代表値・ばらつきを 1 枚の図で見せる手法群。ヒストグラム、箱ひげ、KDE などが代表。」です。 数式に踏み込む前に、まずイメージで掴みましょう。

ヒント:直感が掴めたら、次の「数式または定義」セクションで形式化を確認してください。 形式化と直感がつながれば、1 変量可視化 はもう武器です。

📐 数式または定義(R18)── 1 変量可視化 を形式化する

1 変量可視化 を一般化して書くと、観測ペア $(x_1, y_1), \dots, (x_n, y_n)$(ここでは $n = 47$ 都道府県)に対して、次の関係を仮定します。

$$ \boxed{\quad y = f(x_1, x_2, \dots, x_p; \theta) + \varepsilon \quad} $$

ここで $\theta$ は推定したいパラメータ、$\varepsilon$ はモデルでは説明しきれない誤差項。 1 変量可視化 の流派ごとに、$f$ の形(線形・ロジスティック・木)、$\varepsilon$ の分布(正規・二項・ポアソン)が変わります。

記号 意味 SSDSE-B での例
$x$説明変数A1101(総人口(47 都道府県))
$y$目的変数死亡率・出生率など
$n$標本数47(都道府県数)
$\theta$パラメータ傾き・切片など
$\varepsilon$誤差項モデルで説明しきれない残り

🔬 数式を言葉で読み解く(R18)

上の式 $y = f(x; \theta) + \varepsilon$ を「数学者の声」ではなく、「現場の声」で読み直してみます。

  1. $y = f(x; \theta)$:「あなたが説明したい量($y$)は、手元の説明材料($x$)から、ある関数 $f$ で計算できると 仮に 置く」
  2. $+ \varepsilon$:「とはいえ、$y$ は完全には $x$ で決まらない。残りは 誤差項 $\varepsilon$ として認める」
  3. パラメータ $\theta$ の推定:「データを 47 個並べ、$y$ と $f(x;\theta)$ の差をできるだけ小さくする $\theta$ を選ぶ」
  4. 不確かさの定量化:「$\theta$ も $f$ もデータから推定したので、信頼区間と $p$ 値で『どれくらい確信できるか』を必ず併走させる」

合言葉:「定義は短い、解釈は長い」。1 変量可視化 はたった 1 行の式ですが、それを 47 都道府県データに当てると、5 種類のチェックリスト(線形性・独立性・等分散・正規性・外れ値)が芋づる式に出てきます。

🧮 実値で計算してみる(R18)── SSDSE-B-2026 で 1 変量可視化

数式が読めたら、すぐに 実データ(SSDSE-B-2026, 47 都道府県, 2023 年度)で計算しましょう。 抽象を 47 行の表に落とすと、急に理解できることがあります。

▼ コード解説(SSDSE-B-2026 から A1101 を読む)
🎯 解説: 47 都道府県 × 1 年分(2023)を抽出し、1 変量可視化 の代表値(平均・中央値・標準偏差・最大/最小)を一気に確認する。
📥 入力例: data/raw/SSDSE-B-2026.csv(cp932, ヘッダ 2 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import pandas as pd

# df2023 はこのあとのブロックで作っているので、ここでも用意しておく
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df2023 = df[df['SSDSE-B-2026'] == 2023].reset_index(drop=True)

# 1 変量可視化 の代表値を SSDSE-B-2026 で確認
col = 'A1101'
s = df2023[col].astype(float)

print('n            :', len(s))             # 47
print('mean         :', round(s.mean(), 2))
print('median       :', round(s.median(), 2))
print('std          :', round(s.std(),  2))
print('min / max    :', s.min(), '/', s.max())
print('Top 3 prefs  :')
print(df2023.nlargest(3, col)[['Prefecture', col]])

結果を見ると、47 都道府県のうち上位 3 県が突出しているか、なだらかに分布しているか、すぐ分かります。 この「分布の形」が見えると、1 変量可視化 を語る土台ができたことになります。

🐍 Python 実装(R18)── 1 変量可視化 のミニ完全版

Python の実装は「読む → 集計 → 描く → 報告」を一直線に書きます。長いコードよりも、各ステップが分離していることが大事です。

① データ読み込み

▼ コード解説(SSDSE-B-2026 を pandas で読む)
🎯 解説: encoding='cp932' が必須。 2 行目は日本語ラベルなので skiprows で飛ばす。
📥 入力例: data/raw/SSDSE-B-2026.csv(東京・大阪などを含む 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# SSDSE-B-2026 を読み込み(総人口(47 都道府県))
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])

# 2023 年度(最新)だけ抽出
df2023 = df[df['SSDSE-B-2026'] == 2023].copy()
print(df2023.shape)         # (47, ...)
print(df2023[['Prefecture', 'A1101']].head())

② 集計と可視化

▼ コード解説(matplotlib で 47 都道府県の棒グラフ)
🎯 解説: sort_values + plot.bar で降順可視化。 都道府県名は x ラベル、 縦軸が A1101。
📥 入力例: 2023 年, 47 都道府県, 総人口(47 都道府県)
# 1 変量可視化 を 47 都道府県でビジュアル化
fig, ax = plt.subplots(figsize=(9, 6))
df2023.sort_values(col, ascending=False).plot.bar(
    x='Prefecture', y=col, ax=ax, color='#00897B', legend=False)
ax.set_title('総人口(47 都道府県)(SSDSE-B-2026, 2023)')
ax.set_ylabel(col)
ax.set_xlabel('都道府県')
plt.xticks(rotation=90)
plt.tight_layout()
plt.savefig('figures/viz-univariate.html_r18_bar.png', dpi=120)
plt.show()

③ 報告用テンプレ

レポート文例:「SSDSE-B-2026(2023 年度, n=47)に基づいて 1 変量可視化 を確認したところ、平均は X、標準偏差は Y、上位 3 県は東京・神奈川・大阪であった。 SSDSE-B-2026 の人口(A1101 列)を 47 都道府県でヒストグラムにすると、東京・神奈川などの突出した値(右裾の長い分布)が一目で分かります。」

⚠️ 落とし穴(R18)── 1 変量可視化 で踏みやすい 5 つ

合言葉:レポート提出前に「ゼロ起点で 1 枚描き直す」「外れ値を 1 県外して再計算」「逆方向の因果を 1 行で否定する」を必ずやる。

🎙 narration まとめ(R18)── コード解説の総括

本ページに登場した Python コードはすべて以下のテンプレートで読み解けます:

▼ コード解説(テンプレート)
🎯 解説: ① 読む → ② 集計 → ③ 描く → ④ 検定 → ⑤ 報告。 中間結果を必ず print して人間が確認できるようにする。
📥 入力例: SSDSE-B-2026.csv(47 都道府県 × 約 110 列)
📤 出力例: 図 1 枚 + 統計量 1 表 + レポート文 1 段落

覚え方:「Read → Roll up → Render → Read it back」。 最後の「Read it back」は、出力された数字や図を口に出して 1 度言うこと。 これで 1 変量可視化 の現場運用は十分に回ります。

❓ FAQ(R18)── よくある質問 7 連

Q1. 1 変量可視化 は機械学習でも使う?

使います。前処理(特徴量 → 入力ベクトル)、評価(指標の可視化)、解釈(係数の可視化)など、機械学習のあらゆる工程で 1 変量可視化 は登場します。

Q2. n=47 で十分?

記述統計や 1 変量・2 変量の可視化には十分。ただし複数の説明変数を同時に検討するときは、自由度が枯れます。bootstrap や情報量規準(AIC/BIC)で補強しましょう。

Q3. SSDSE-B-2026 はどこで手に入る?

独立行政法人統計センター(NSTAC)「SSDSE」サイトから無料でダウンロードできます。本ページの実装はすべて data/raw/SSDSE-B-2026.csv を前提にしています。

Q4. ライセンスは?

SSDSE は教育目的での利用が許諾されています(出典明示、改変記録)。論文公開時は出典欄に「総務省統計局, SSDSE-B-2026」を必ず書きましょう。

Q5. 1 変量可視化 を最短で身につけるには?

① ヒストグラム 1 枚を描く → ② 平均・中央値・標準偏差を読み上げる → ③ 上位 3 県・下位 3 県を暗記する → ④ 2 変量の相関を 1 つ確認する → ⑤ レポート 1 行にまとめる。これを 47 都道府県データで 3 回回せば、用語の地形が掴めます。

Q6. 1 変量可視化 に関する代表的な論文は?

本リポジトリの 論文一覧 から「可視化」カテゴリの論文を見ると、1 変量可視化 を実際に使った再現コードが付いています。

Q7. 報告書ではどの順で書く?

「目的 → データ → 1 変量可視化 の選択理由 → 結果(図 + 数値)→ 解釈 → 限界(n=47, 単年)→ 次の一手」の順が王道です。

📚 さらに踏み込む(R18)── 用語ネットワーク 16 件

用語は単独では覚えづらいので、前提・並列・発展の 3 方向で 16 件並べます。

勧め方:1 日 1 リンク。クリックして読んだら、1 変量可視化 のページに戻り、「1 変量可視化 とこの用語はどう違う?」を 1 行書く。

✅ 使う前のチェックリスト(R18)

🧪 ミニケース(R18)── 1 変量可視化 を 5 段階で完走する

  1. STEP 1:問いを書く ── 47 都道府県のうち「総人口(47 都道府県)」が大きい県と小さい県では、暮らしぶりにどんな差があるか?
  2. STEP 2:データを読む ── SSDSE-B-2026 から A1101 を取り出し、2023 年度・47 行に絞る。
  3. STEP 3:分布を見る ── ヒストグラムと箱ひげ図で「上位 3・下位 3」を特定し、東京・神奈川・大阪などの突出を確認する。
  4. STEP 4:関係を測る ── 別の変数(人口・死亡率など)との 2 変量関係を散布図 + 相関で測る。
  5. STEP 5:報告する ── 「上位 3 県は X, Y, Z。これらは…」という 200 字レポートに落とす。

合言葉:5 STEP のうちどれか 1 段でも飛ばすと、結論が「数字だけ」になり、読者の腑に落ちなくなります。 1 変量可視化 は「数字 + 物語」のセットで完成です。

🚫 アンチパターン集(R18)── 1 変量可視化 で「やってはいけない」9 連

  1. 合成データを np.random.seed で作って「再現実験しました」と書く(教育用途では SSDSE-B-2026 を使うのが必須)
  2. カラムを iloc[:, 5] のように位置で参照し、SSDSE のバージョン違いで壊れるコードを書く
  3. 都道府県の集計順を「日本語五十音」「アルファベット」「東京から時計回り」など混在させ、図の解釈を難しくする
  4. 変数名を x1, x2, x3 のように匿名化し、読者が意味を追えないコードにする
  5. 軸を切り取って小さな差を大きく見せる(特に y 軸の最小値を 0 にしない)
  6. 外れ値の県を黙って削除する(必ず「東京を外した版」と「全件」を両方描く)
  7. p < 0.05 を「効果がある」と読み替える(本来は「偶然では説明しづらい」だけ)
  8. 相関 r を「因果の強さ」と書く(1 変量可視化 で因果は出ない)
  9. レポートの最後で「以上」と書いて閉じる(必ず「限界」と「次の一手」を 1 行ずつ)

🔎 深掘り解説(R18)── 1 変量可視化 を 30 分で 1 段深く

A. 歴史的背景

1 変量可視化 は、19 世紀末〜 20 世紀初頭の統計学黎明期から発達してきました。可視化 の中核として、Galton、Pearson、Fisher、Yule などが基礎を築き、現代では SSDSE のような公的データを使った教育素材で広く扱われています。

B. 数理的位置づけ

1 変量可視化 は、観測ペア $(x_i, y_i)_{i=1}^{n}$ から条件付き期待値 $E[y \mid x]$ または分布 $P(y \mid x)$ を推定する道具です。 線形・非線形・パラメトリック・ノンパラメトリックという 4 つの軸の中で、1 変量可視化 は「可視化」という棚に並んでいます。

C. 実装上の工夫

D. 学問体系の位置

1 変量可視化 は 記述統計データサイエンス機械学習 の交差点に位置します。 どの分野から入っても、いずれは 1 変量可視化 を通ります。

🎙 narration コレクション(R18)── 5 連ストック

同じテーマで使い回せる narration を 5 つ並べておきます。コピペして「コード解説」欄に貼ってください。

▼ コード解説(① 読み込み)
🎯 解説: SSDSE-B-2026 を読み、 2023 年度に絞る。 cp932 と skiprows=[1] を忘れない。
📥 入力例: data/raw/SSDSE-B-2026.csv
📤 出力例: 47 行 × 約 110 列の DataFrame
▼ コード解説(② 代表値)
🎯 解説: mean / median / std / min / max を一気に表示。 平均と中央値が大きく離れたら歪んだ分布。
📥 入力例: df2023[A1101.astype(float)
📤 出力例: mean 2645809 / median 1549000 / std 2797551 / min 537000 / max 14086000(2023 年 47 都道府県の総人口)
▼ コード解説(③ 可視化)
🎯 解説: matplotlib の bar / hist / boxplot を 1 枚ずつ重ねず作る。 figsize=(9,6) が標準。
📥 入力例: sort_values 後の DataFrame、 x=都道府県、 y=A1101
📤 出力例: PNG 1 枚(figures/viz-univariate.html_r18_bar.png)
▼ コード解説(④ 関係を測る)
🎯 解説: 2 変量の関係は scipy.stats.pearsonr または df.corr() で測る。 r と p-value を同時に得る。
📥 入力例: df2023[[X, Y]](X=A1101)
📤 出力例: r = 0.9910, p = 6.3e-41(総人口と 65 歳以上人口、2023 年 47 都道府県)
▼ コード解説(⑤ 報告)
🎯 解説: 「目的→データ→1 変量可視化→結果→限界→次」の 6 段に分けて 200 字レポートに。
📥 入力例: 上で得た図 + 表 + r/p
📤 出力例: マークダウン 200 字程度

📔 ミニ用語集(R18)── 同じ話題で使う 12 語

標本(sample)
母集団から取り出した観測の集まり。本ページでは「47 都道府県, 2023 年度」が標本。
母集団(population)
標本の背後にある全体。47 都道府県は日本全土の「県別断面」と読める。
変数(variable)
各観測単位に対応する 1 つの数値・カテゴリ。SSDSE では人口・出生率など 約 110 列。
分布(distribution)
変数が取る値の頻度の形。hist / KDE / box で可視化する。
代表値(central tendency)
平均・中央値・最頻値の総称。歪んだ分布では中央値を優先。
ばらつき(dispersion)
標準偏差・IQR・分散の総称。代表値とセットで報告する。
外れ値(outlier)
分布の主部から大きく外れた観測。原因を 1 つ書ける外れ値だけ「正当な外れ値」と呼ぶ。
相関(correlation)
2 変量の同調具合。−1 〜 +1 の単数で要約。
因果(causation)
X を動かすと Y も動くという関係。相関では保証されない。
p 値(p-value)
帰無仮説下で「観測以上に極端な値」が出る確率。「効果あり」とは言えない点に注意。
信頼区間(confidence interval)
同じ実験を何度もやったとき、推定値が含まれる範囲。点推定とセットで提示。
正規化(normalization)
変数のスケールを揃える操作。Min-Max / Z-score / Robust の 3 種を覚える。

🗾 47 都道府県データの位置づけ(R18)

1 変量可視化 を学ぶときに使う SSDSE-B-2026 は、47 都道府県 × 約 110 列 × 複数年度のパネルデータです。 本ページでは「2023 年度の 47 行」を主に使います。 以下に、よく登場する代表的なカラムを示します。

SSDSE コード 日本語名 単位 1 変量可視化 での主な使い方
Code地域コードJOIN キー
Prefecture都道府県名カテゴリ軸・ラベル
A1101総人口説明変数(規模)
A130365 歳以上人口高齢化率の分子
A4101出生数人口動態の説明変数
A4200死亡率目的変数の代表
B4101年平均気温気候系の説明変数
L3221消費支出家計の目的変数

使い方のコツ:列名はすべて A1101 のような英数記号です。SSDSE のコードブックで日本語ラベルを確認しながら使ってください。 本ページの例では A1101(総人口(47 都道府県))を中心に使っています。

👣 ステップバイステップ(R18)── 1 変量可視化 を 10 行で実装する

解説は最小限。コードは 10 行以内。これで 1 変量可視化 の最短ルートが手に入ります。

  1. import pandas as pd
  2. df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
  3. df = df[df['SSDSE-B-2026'] == 2023]
  4. col = 'A1101'
  5. print(df[['Prefecture', col]].sort_values(col, ascending=False).head())
  6. import matplotlib.pyplot as plt
  7. df.plot.hist(y=col, bins=20)
  8. plt.title('総人口(47 都道府県)(SSDSE-B-2026, 2023)')
  9. plt.savefig('figures/viz-univariate.html_r18_hist.png', dpi=120)
  10. plt.show()

注意:10 行で動かせる、というだけで、これがゴールではありません。 1 変量可視化 の本当の難しさは「描いた図をどう解釈するか」「報告にどう落とすか」にあります。

📖 さらに学ぶには(R18)── 学習ロードマップ 4 段

  1. レベル 1(30 分):本ページの「30 秒で分かる結論」と「直感で掴む」だけ読む。SSDSE-B-2026 を 1 度ダウンロードして開く。
  2. レベル 2(2 時間):「Python 実装」セクションを写経し、A1101 の図を 1 枚作る。報告 200 字を書く。
  3. レベル 3(半日):「数式または定義」「数式を言葉で読み解く」を踏まえ、別の 2 つの変数で同じ分析を反復。3 通り作って比べる。
  4. レベル 4(1 週間):本リポジトリの 論文一覧 から「可視化」カテゴリの論文 1 本を完走。再現コードを動かして、1 変量可視化 の応用範囲を体感する。

📝 報告フォーマット(R18)── 1 変量可視化 を 200 字で書く

1 変量可視化 の結果を、ゼミ・卒論・社内会議で報告するときの定型文を 3 つ用意しました。 最初は丸ごとコピー、慣れたら差し替えて使ってください。

テンプレ A:研究レポート向け

「本研究では、SSDSE-B-2026(n=47, 2023 年度)を用いて 1 変量可視化 を確認した。 主たる説明変数は A1101(総人口(47 都道府県))であり、47 都道府県を対象とした分布の確認、相関の評価、1 変量可視化 を用いた分析を実施した。 分析の結果、上位 3 県・下位 3 県の特徴と、SSDSE-B-2026 の人口(A1101 列)を 47 都道府県でヒストグラムにすると、東京・神奈川などの突出した値(右裾の長い分布)が一目で分かります。」

テンプレ B:ビジネスレポート向け

「総人口(47 都道府県) を 47 都道府県で比較したところ、東京・神奈川・大阪など大都市圏が突出していることが分かった。 1 変量可視化 を用いた分析から、地域差は単に人口規模の違いだけでは説明できず、複数要因の組み合わせで生じていると示唆された。 今後の打ち手は、上位県のベストプラクティスを参考にしつつ、下位県への支援策を検討することである。」

テンプレ C:教育用講義スライド向け

「皆さん、1 変量可視化 はひとことで言うと『1 つの変数の分布・代表値・ばらつきを 1 枚の図で見せる手法群。ヒストグラム、箱ひげ、KDE などが代表。』です。 今回は SSDSE-B-2026(総務省統計局, 47 都道府県, 2023 年度)を使って、実際の数字でこの考え方を確かめました。 皆さん自身でも、別の指標(人口、出生率、家計支出など)に置き換えて同じ手順を試してみてください。」

🔭 3 つの視点で 1 変量可視化 を見る(R18)

同じ用語でも、見る立場によって意味が変わります。3 つの視点を切り替えて、用語の輪郭を立体的に掴みましょう。

視点 ① 統計学者の目

統計学者にとって 1 変量可視化 は「データから母集団を推定する道具」です。 確率モデル・尤度・不偏性・効率性・一致性などの数学的性質に注目し、漸近理論で性能保証を行います。 47 都道府県データは「小標本(n=47)」と分類され、bootstrap や情報量規準による補強が必要になります。

視点 ② データサイエンティストの目

データサイエンティストにとって 1 変量可視化 は「ビジネス課題を数字で答えるパイプラインの 1 部品」です。 モデルの理論的性質より、運用性・解釈性・更新コストを重視します。 SSDSE のような公的データを用いるときは「データの出典・更新頻度・ライセンス」を最優先で確認します。

視点 ③ 教育者・学習者の目

教育の現場では 1 変量可視化 は「初学者が躓きやすいポイント」を含む単元です。 抽象的な数式よりも、具体的な 47 都道府県データで手を動かし、図を描き、結果を口頭で説明できるようになることが目標になります。 本ページの並び(直感 → 数式 → 計算 → Python → 落とし穴)は、まさにこの教育的アプローチに沿っています。

視点切り替えの効果:1 つの用語を 3 通りに眺めると、自分が今どの立場で議論しているか自覚できます。 論文を読むときは ①、現場で使うときは ②、人に教えるときは ③ ── と意識的に切り替えてください。

⚖️ 似た用語との使い分け(R18)── 8 列比較表

1 変量可視化 と似た用語を、使い分けの観点から並べます。違いを言語化できれば、迷いが減ります。

用語 目的 入力 出力 強み 弱み
1 変量可視化1 つの変数の分布・代表値・ばらつきを 1 枚の図で見せる手法群。ヒストグラム、箱ひげ、KDE などが代表。47 都道府県 × 約 110 変数図 + 表 + 200 字レポート直感的、再現容易小標本(n=47)の制約
相関係数2 変量の同調を 1 数で要約x, y の 47 ペアr ∈ [−1, +1]シンプル非線形は捉えられない
線形回帰条件付き期待値の線形近似説明変数群回帰係数・予測値解釈容易非線形には弱い
ロジスティック回帰2 値分類説明変数群確率 + 係数分類問題の標準線形決定境界
ランダムフォレスト非線形分類・回帰大量変数予測 + 重要度非線形対応解釈やや難

❓ 拡張 FAQ(R18)── 詰まりがちな 8 つの疑問

Q1. 1 変量可視化 と「可視化」全体の関係は?

1 変量可視化 は 可視化 の中で「1 つの変数の分布・代表値・ばらつきを 1 枚の図で見せる手法群。ヒストグラム、箱ひげ、KDE などが代表。」を担う基本道具です。可視化 の他のトピックは、この基本の応用または並列の道具にあたります。

Q2. 47 都道府県以外のデータで使えますか?

使えます。SSDSE-A(市区町村)、SSDSE-C(年次推移)、SSDSE-D・E(個票)など、1 変量可視化 の手順はそのまま適用できます。粒度(県・市・個人)に応じて n が変わるので、結果の信頼性も変わります。

Q3. SSDSE-B-2026 が将来更新されたら?

SSDSE は年に 1 度更新されます。1 変量可視化 のコード自体は変更不要ですが、結果(数値・図)は最新年度のものに置き換えてレポートしましょう。出典欄に「SSDSE-B-2027(仮)」と書き換えるのを忘れずに。

Q4. Excel でも同じことはできますか?

できます。ピボット → グラフ → 関数 で代表値や相関は出ます。ただし、再現性・履歴管理・自動化の面で Python に劣ります。学習用には Python を強く勧めます。

Q5. 1 変量可視化 で AI(機械学習)に進めますか?

進めます。1 変量可視化 は機械学習の「特徴量設計」と「結果解釈」の両端で必須です。AI と聞くと深層学習を連想しがちですが、SSDSE のような表形式データでは線形モデル + 1 変量可視化 の組み合わせで十分実用になります。

Q6. 「コードが動かない」ときは?

3 つ確認します:①ファイルパス(data/raw/SSDSE-B-2026.csv)が合っているか、②エンコーディングが cp932 か、③ヘッダ 2 行目の日本語ラベルを skiprows で飛ばしたか。これで 9 割解決します。

Q7. 図を保存できない場合は?

figures/ ディレクトリが存在しない可能性があります。import os; os.makedirs('figures', exist_ok=True) を先頭に追加してください。

Q8. 1 変量可視化 を勉強する優先順位は?

本ページの 12 セクションを順に読み進めるのが最短です。特に「直感 → 数式 → 計算 → Python」の 4 段が腑に落ちれば、用語の 80 % は理解できたとみなせます。

🎯 サマリーカード(R18)── 1 ページ印刷用

用語1 変量可視化(Univariate Visualization)
カテゴリ可視化
ひとこと定義1 つの変数の分布・代表値・ばらつきを 1 枚の図で見せる手法群。ヒストグラム、箱ひげ、KDE などが代表。
SSDSE-B での使い方SSDSE-B-2026 の人口(A1101 列)を 47 都道府県でヒストグラムにすると、東京・神奈川などの突出した値(右裾の長い分布)が一目で分かります。
主な道具pandas / matplotlib / scipy / statsmodels / scikit-learn
最大の注意n=47 の小標本・単位混在・因果と相関の混同
学習ステップ読む → 集計 → 描く → 検定 → 報告
代表的な関連用語相関係数・回帰分析・ヒストグラム・散布図・標準偏差

このカードを印刷し、SSDSE-B-2026 で 1 回手を動かせば、用語の「使える形」が定着します。 1 変量可視化 はあくまで「1 つの変数の分布・代表値・ばらつきを 1 枚の図で見せる手法群。ヒストグラム、箱ひげ、KDE などが代表。」というシンプルな考え方の道具ですので、迷ったらこの 1 行に戻ってください。

🎮 触って理解する — 同じ1変量を5つの図で見比べる

1 変量の可視化で一番大切なのは「同じデータでも、選ぶ図によって見えるものが変わる」という事実です。 下のツールは、まったく同じ 1 次元データを、ヒストグラム/箱ひげ図/バイオリン/ドットプロット/密度曲線に ワンタップで切り替えます。ビン幅・バンド幅のスライダーを動かし、分布のプリセット(歪み・多峰・外れ値)を変えながら、 「どの図が何を捉えやすく、何を隠すのか」を手で確かめてください。

① データ分布を選ぶ(同じデータを全図で共有します)
② 表示する図を選ぶ
③ パラメータを動かす
ビン数(ヒスト/ドット)
バンド幅(KDE/バイオリン)

図の上をマウス/指でなぞると、その位置の値を読み取れます。

統計量(同じデータから正確に計算)
n 平均 中央値 標準偏差
最小 第1四分位 Q1 第3四分位 Q3 最大

※「実データ」は SSDSE-B-2026(cp932 / skiprows=[1] / 2023 年 / 47 都道府県)の総人口 A1101 の実測値(単位:万人)。 その他のプリセットは分布の形を体感するための合成データ(教材用)で、実在の統計ではありません。

💡 直感 — 図はデータの「見せ方」であって「事実」そのものではない

1 変量可視化の各手法は、生の値の羅列を「人が形として捉えられる」ように変換します。 ヒストグラムはビンに数える、箱ひげは5 数要約に圧縮する、KDE / バイオリンはなめらかに塗る、 ドットプロットは点をそのまま置く。同じデータでも、変換のしかたで「強調される情報」と「捨てられる情報」が違います。 上のツールで 二峰性 を選び、箱ひげ図に切り替えてみてください。2 つの山があるのに、箱ひげでは 1 つの箱に潰れて見えます。 これが「図の選択がメッセージを決める」という意味です。

⚠️ よくある落とし穴

🌐 発展 — 使い分けの指針

さらに詳しくは ヒストグラム箱ひげ図カーネル密度推定(KDE)代表値(平均・中央値)四分位数標準偏差外れ値 の各ページを参照してください。 (バイオリン図・ドットプロットの専用ページは本教材には未収録のため、リンクは張っていません。)

🧭 解説深化 — ヒストグラムの「起点」を疑う

このページでは「ビンで印象が変わる」ことを何度も扱ってきました。 ここではあえて別の角度、ビンの起点(origin/アンカー=棒をどこから区切り始めるか)だけに注目します。 ビン幅を 1 ミリも変えなくても、棒の区切り位置を少しずらすだけで分布の形は変わります。 多くの人が「ビン幅さえ決めれば形は一意」と思い込んでいる、盲点になりやすい論点です。

💡 直感で

ヒストグラムとは、連続した数直線に「等間隔の物差し」を当てて数える作業です。 このとき自由に決められるパラメータは 2 つあります ── ①棒の幅と、②物差しをどこから当て始めるか(起点)です。 ②は普段ソフトが自動で決めてしまうので意識しませんが、同じ 1 つの点でも、 起点が違えば「左の棒に入る」か「右の棒に入る」かが変わります。 点が境界付近に集まっていると、この振り分けの差が積み重なって、山が 1 つに見えたり 2 つに見えたりします。

⚠️ 落とし穴(重要)

実データで確かめます。使うのは SSDSE-B-2026 の合計特殊出生率(列 A4103)/2023 年/47 都道府県(実測値)。
n=47、最小 0.99(東京都)、最大 1.60(沖縄県)、平均 1.293、中央値 1.30。 ここでビン幅を 0.10 に固定したまま、起点だけを 0.95 → 0.96 と わずか 0.01 ずらします

起点(幅は 0.10 固定) 各ビンの度数(左→右) 見え方
0.95 1, 7, 9, 15, 7, 7, 1 山は 1 つ(単峰
0.96 1, 8, 10, 14, 6, 7, 1 14→6→7 とができ、二峰に見える

幅も本数もデータも同じで、区切り始める場所を 0.01 動かしただけです。 それでも右側に谷ができ、「出生率の高い県には別の集団があるのでは?」という存在しない第 2 の山が生まれます。
教訓: ヒストグラムの「二峰っぽさ」を見たら、まずビン幅と起点の両方を数パターン振ってみること。 1 枚の histogram だけを根拠に「2 つのグループがある」と結論してはいけません。これはビン幅の問題とは別物の、独立した落とし穴です。

🚀 発展

🔗 関連ページ

※ 上の度数は SSDSE-B-2026(列 A4103、2023 年、47 都道府県)を numpy.histogram で実際に集計した実測値です。合成・架空データは使っていません。