シリーズ: 常識をデータでひっくり返す / 制度・地域行動編 【Part 2:構造編】
データ: e-Stat(衛生行政報告例・国民医療費・国勢調査・社会人口統計体系)+ 国土地理院 面積調
分析スタイル: Python(e-Stat API)自動取得 + AI(Claude)との壁打ち
前編: Part 1:「大阪は接骨院が多い」は本当か──残差分析で見えた“説明できない地域差”
前回までのあらすじ
Part 1では、接骨院の地域差を人口密度・高齢化・所得で説明しようとして、8割が説明できないことが分かった。
- 大阪は人口1.6倍の東京を接骨院の絶対数で上回る
- だが残差(説明できない分)の1位は大阪ではなく和歌山で、外れるのは関西+北陸に偏る
- そして「外れる県」は業種で入れ替わり、接骨院・鍼灸の $R^2$ は0.17〜0.19なのに歯科は0.39
この差は人口ではなく、別の構造に支配されているらしい。 その正体を、ここから8制度を横断して炙り出す。
クイックサマリー(Part 2)
3行で読む:
- 「説明できなさ(=1−R²)」を制度の曖昧さと定義し、解釈の余地が違う8制度に同じ残差モデルを当てた
- すると曖昧な制度ほど大阪が外れる($r=+0.66$)。療養費系(接骨・鍼灸)は曖昧さ80%超で大阪+2.4σ、年金・介護は硬く(10〜18%)大阪は平均的
- しかもこの曖昧さの順位はモデルを変えても壊れない(順位不変ρ=1.00/変数ロバストρ≧0.83/クラスタ安定)。地域差ではなく、制度の“硬さの序列”を抽出する構造指標になっていた
§1 「曖昧さ」をどう測るか:1 − R²
Part 1で見た「$R^2$ が業種で違う」という現象を、ここで武器に変える。
📐 R²(決定係数)って何? ── 軽く復習
R² は、モデルがデータの変動をどれだけ説明できたかを 0〜1 で表す。R²=0.17 なら「人口密度・高齢化・所得で説明できるのは17%だけ、残り83%は説明できない」。
そこで「制度の曖昧さ」を、こう定義する。
$$
\text{制度の曖昧さ} = 1 - R^2
$$
R²が低い(客観要因で説明できない)ほど、現場の解釈・運用・商慣行が入り込む余地が大きい=曖昧、という読み方だ。
⚠️ 定義の距離感(重要):これは「制度の本質的な曖昧さ」そのものではなく、あくまで**「人口密度・高齢化・所得の3変数で説明できない地域差の割合(=残差構造)」**である。以下「曖昧さ」と呼ぶのは、この残差構造の大きさのこと。
§2 制度横断:大阪現象は「接骨院だけ」か?
解釈の余地が異なる8つの制度に、まったく同じ残差モデル(人口密度・高齢化・所得)を当てた。

図14: 8制度の曖昧さ(1−R²)ランキング。各バーに大阪の残差σを併記。 読者に見てほしいこと: 療養費系(接骨院83%・鍼灸81%・訪問看護88%)は極めて曖昧、年金10%・介護18%は数式で決まる「硬い制度」。
| 制度 | 曖昧さ(1−R²) | 大阪σ | 大阪順位 |
|---|---|---|---|
| 訪問看護医療費 | 88% | +1.64σ | 3位 |
| 接骨院(療養費) | 83% | +2.41σ | 2位 |
| 鍼灸院(療養費) | 81% | +2.40σ | 3位 |
| 生活保護率 | 76% | +1.52σ | 4位 |
| 歯科医院 | 61% | +0.35σ | 16位 |
| 国民医療費(1人当たり) | 52% | +0.54σ | 14位 |
| 介護給付費(1人当たり) | 18% | +1.28σ | 4位 |
| 国民年金受給率 | 10% | +0.30σ | 16位 |
そして、この記事の核心がこれだ。

図13: 横軸=制度の曖昧さ(1−R²)、縦軸=大阪の標準化残差σ。 読者に見てほしいこと: 右上がりの関係($r=+0.66$)。曖昧な制度ほど大阪が外れる。 硬い制度(年金・歯科)では大阪はど真ん中=平均的。

図12: 左=曖昧さランキング、右=大阪σ。 読者に見てほしいこと: 大阪が2σを超えて外れるのは「曖昧さ80%超」の療養費系だけ。
ここから3つのことが言える。
- 大阪現象は接骨院だけではない。でも“どこでも”でもない。 大阪が2σ超で外れるのは療養費系(接骨院・鍼灸)だけ。基準が明確な歯科(+0.35σ)・年金(+0.30σ)では完全に平均的。
- 「大阪=生活保護」のイメージは、半分カラクリ。 生活保護率で最も外れるのは大阪ではなく北海道(+3.4σ)。大阪の生活保護は高齢化・所得でかなり説明され、残差は+1.5σ(4位)。説明を超えて外れるのは療養費系だ。
- 介護は実は「硬い制度」だった。 当初「中くらいの曖昧さ」と予想したが、介護給付費の曖昧さは18%($R^2=0.82$)。給付が要介護高齢者数にほぼ比例し、数式的に決まるからだ。
§3 クラスタリング:地域は「外れ方」で分かれる
47都道府県を8制度の残差プロファイル(残差の指紋)で階層的クラスタリング(Ward法)にかけた。すると、データが自動的に6タイプに分けた。

図15: 都道府県×制度の標準化残差ヒートマップ(赤=過剰、青=過少、左帯=クラスタ)。 読者に見てほしいこと: 京都・大阪・和歌山(紫帯)の左側=療養費だけが真っ赤。東京(緑帯)は右側=硬い制度で赤。「赤くなる場所」がクラスタごとに違う。

図16: 各クラスタの制度別 平均残差σ。 読者に見てほしいこと: 「どの制度で外れる県の集まりか」=地域タイプの正体。
| クラスタ | 主な県 | 突出する制度 |
|---|---|---|
| 関西型(療養費突出) | 京都・大阪・和歌山 | 鍼灸+2.5 / 接骨+2.3 / 訪問看護+1.6 |
| 北海道・西日本型 | 北海道・兵庫・高知・徳島・福岡・大分・宮崎・広島 | 生活保護+1.2 / 国民医療費+1.1 / 歯科+1.0 |
| 大都市型(硬い制度で外れる) | 東京・鹿児島・沖縄 | 年金+1.5 / 介護+1.4 / 医療費+1.2 |
| 北陸・近畿周縁型 | 富山・石川・福井・岐阜・滋賀・奈良・香川 | 接骨+0.8 / 訪問看護+0.7 |
| 首都圏近郊型 | 茨城・埼玉・千葉 | 全制度でマイナス(介護−1.9) |
| 地方標準型 | 東北・甲信・中国など23県 | ほぼ平均(年金+0.4) |
「関西=治療院」が、文化論ではなくデータ駆動で独立クラスタとして出現した。一方、四国(高知・徳島)は接骨院ではなく国民医療費・生活保護で外れる別タイプ。地域は「多い/少ない」ではなく「どの制度で外れるか」で分かれていた。
§4 土台はブレないか──そして、これは「尺度」ではなく「構造抽出器」だった
「制度の曖昧さ=1−R²」が分析全体の土台だ。これがブレると全部ブレる。そこで2つの検証をした。
検証1:自由度調整(adjusted R²)でも順位は変わるか
n=47・説明変数3つの小標本では R² がやや過大評価になりうる。adjusted R² で計算し直しても、曖昧さランキングの順位は完全一致(Spearman ρ=1.00) だった。
検証2:説明変数を入れ替えても順位は崩れるか
説明変数のセットを5通り(基準/+人口規模/所得を除く/密度を除く/高齢化を除く)に変えて再計算した。
| 変数セット | 基準との順位相関 ρ |
|---|---|
| +人口規模(4変数) | +0.98 |
| 密度を除く | +0.98 |
| 高齢化を除く | +0.98 |
| 所得を除く | +0.83 |

図17: 説明変数セットを変えたときの曖昧さ。横帯が短いほど定義がブレない。 読者に見てほしいこと: 帯が動いても、接骨院・鍼灸(上=曖昧大)と介護・年金(下=曖昧小)の二極は決して入れ替わらない。
この頑健性が意味すること:尺度ではなく「構造抽出器」
ここが、この分析の一番深い発見だ。検証で分かったのは、単に「指標が壊れない」ということではない。
| 何が | どうなったか |
|---|---|
| 曖昧さの実値(例:接骨院=0.83) | モデル・変数依存で揺れる |
| 曖昧さの順位(硬さの序列) | 3つの意味で安定 |
「順位が安定」と言えるのは、次の3つが揃っているからだ(“言い換えただけ”ではない、と言える根拠)。
- 順位の不変性:adjusted R²(自由度調整)でも曖昧さランキングは完全一致(ρ=1.00)。
- 変数ロバスト性:説明変数を5通りに入れ替えても順位相関 ρ≧0.83。
- クラスタ安定性:§3の残差プロファイルでも、療養費系(接骨・鍼灸)は常に同じ「柔らかい側」のクラスタに落ちる。
この3点が同時に成り立つので、「曖昧さ」は分析者が選んだパラメータ(=現象)ではなく、**このモデルが安定して抽出する“制度の残差構造”**だと言える。つまりこの指標は「値を測る尺度」というより、制度の“柔らかさの序列”を抽出する構造抽出器として機能している。
「どのモデルを使っても、接骨院は必ず“曖昧側”にいる」
硬い制度 ── 国民年金・介護 (給付が数式で決まる)
↑
中間 ── 歯科・国民医療費 (医学的客観性が効く)
↓
柔らかい制度 ── 接骨院・鍼灸・訪問看護(判断の余地が大きい)
物質の硬度のように制度にも「相対的な柔らかさの序列」がある──ただしこれは**“絶対的な物性”ではなく、この3変数モデルに対して安定な相対序列**である、という距離感が正確だ。
❌ これは「制度が行動に与える因果効果」の研究ではない。⭕ 「説明変数で吸収できない地域差の分布構造」の抽出だ。
※本稿が扱うのは“制度が行動に影響する強さ”ではなく、“説明不能な地域差の分布構造”である。残差は共変動の分離であって因果ではない。
反例にこそ構造が出る:介護という「外れ構造」
この見方の強さは、例外がきれいに説明できる点にも表れる。介護給付費は曖昧さ18%(硬い制度)なのに、大阪σは+1.28と中程度に高い──一見、構造に反する。
だがこれは矛盾ではなく**「外れ構造」だ。介護給付の総量は要介護高齢者数で機械的に決まる(だから R² は高い=硬い)が、大阪は高齢単身世帯・生活保護世帯の集中という別の人口構造を抱える。つまり大阪の介護σは「制度の曖昧さ」由来ではなく、モデルに入れていない人口構造由来。「曖昧さが低い=大阪も平均的」になるはずが、別経路で押し上げられている**ことを、図13の回帰直線からの外れ(左上)が可視化している。反例が、かえって「曖昧さ軸」と「人口構造軸」が別物であることを示している。
§5 限界と次の一手
本分析で示せるのは 共変動の分離(残差の定量化) までで、厳密な因果ではない。残る伏兵を正直に書く。
| 優先 | 伏兵 | データ | 狙い |
|---|---|---|---|
| ★★★ | 供給構造(師院比・開業率) | 衛生行政報告例・就業柔整師数 | 残差が「1院あたり施術者数」でどこまで縮むか=事業者構造の寄与を分離 |
| ★★★ | 保険請求の実運用 | 柔整療養費の部位数別請求割合・1人あたり請求回数(地域別) | 申請行動の直接観測。大阪の「3部位請求率」はここ |
| ★★☆ | 監査・返戻率 | 地方厚生局の審査データ | 地域インセンティブの代理変数 |
| ★☆☆ | 自治体助成(こども医療費等) | 各県・市町村条例 | 接骨院窓口で使えるかの差。ただし対象限定的で寄与は小さい見込み |
特に、AIとの壁打ちで整理できたのが制度の3層構造だ。
全国共通ルール(同一・健康保険法/受領委任)
↓ 地方厚生局の運用差(小)
↓ 自治体助成(中・限定的)
↓ 現場の商慣行・文化(大)← 残差が示す支配的要因
= 結果:曖昧な制度ほど大阪・関西が外れる
接骨院の療養費は 「急性か慢性かグレー/部位数に裁量/医学的客観性が弱い」。つまり判断余地が大きい。だからこそ、厳格なルールではなく“運用のクセ”が効き、地域文化が入り込む。
おわりに:答えより、問いの分解
Part 1で「大阪は接骨院が多い」をデータで追い、人口でも高齢化でも所得でも説明できないことが分かった。Part 2では、その「説明できない差」を8制度に広げ、大阪が外れるのは“曖昧な制度”だけだと突き止めた。
最終的にたどり着いた問いの形はこうだ。
「制度の違い」ではなく「制度の曖昧さが許す“行動分布”の違い」
ルールは全国共通。でも、判断の余地がある制度では、その余地に地域の商慣行が流れ込む。地域差は文化の色ではなく、制度の設計が残した“すき間”の形だった。
そして、もう一段上の発見がある。曖昧さの実値はモデルで揺れても、硬さの順位は壊れなかった(順位不変・変数ロバスト・クラスタ安定の3点)。これは、この指標が「値を測る尺度」ではなく、**“このモデルが安定して抽出する制度の残差構造”**になっていたということだ。気づけば私たちは、地域差そのものではなく、説明変数で吸収できない“裁量の分布”の序列を測っていた。
最後に、この記事の到達点を1行に畳むとこうなる。
制度の地域差は「需要の差」ではなく、「説明変数で吸収できない裁量の分布」で決まる。
データ分析はムズい。だからこそ、
総数 → 人口密度補正 → 残差 →(制度横断の)曖昧さ → クラスタリング → 頑健性
という分解設計に、ストーリーが宿る。「大阪人だから」で止めず、引けるノイズを全部引いた先に、制度経済学的な構造が見えてくる。
分析環境・データ・再現
データソース(すべて2020年に統一、e-Stat)
| データ | 出典(統計表ID) |
|---|---|
| 理容・美容所数 | 衛生行政報告例 0004027011
|
| 接骨院・鍼灸院(施術所) | 衛生行政報告例 0004026951
|
| 歯科診療所数 | 医療施設調査 0002013847
|
| 人口 | 人口推計 0003448232
|
| 高齢化率(年齢3区分) | 国勢調査 0003448299
|
| 1人当たり県民所得 | 社会・人口統計体系 0000010103(C120101/2014年度) |
| 国民医療費・訪問看護 | 国民医療費 0003356095
|
| 生活保護・介護・年金 | 社会・人口統計体系 0000010110(J1105/J7102/J520201) |
| 都道府県面積 | 国土地理院 全国都道府県市区町村別面積調 |
データ鮮度の注記
| 系列 | 使用年 | 備考 |
|---|---|---|
| 店舗数・医療費・国勢調査 | 2020年 | 基準年 |
| 1人当たり県民所得 | 2014年度 | 社会人口統計体系の収録最新 |
| 国民年金受給権者 | 2006年度 | 同上。順位は構造的に安定 |
実行コマンド
python analysis/store_count/fetch_and_analyze.py # Part1 §1 相関・散布図
python analysis/store_count/deep_dive.py # 関西クラスタの深掘り
python analysis/store_count/residual_analysis.py # Part1 §2 残差ランキング
python analysis/store_count/residual_cross.py # Part2 §2 制度横断・曖昧さ
python analysis/store_count/residual_clusters.py # Part2 §3 クラスタリング
python analysis/store_count/residual_robustness.py # Part2 §4 頑健性
曖昧さの計算(コアスニペット)
import numpy as np
def ambiguity(y, X):
"""制度の曖昧さ = 1 - R²(切片付きOLS)"""
Xd = np.column_stack([np.ones(len(X)), X]) # X = [log人口密度, 高齢化率, 県民所得]
beta, *_ = np.linalg.lstsq(Xd, y, rcond=None)
pred = Xd @ beta
ss_res = ((y - pred) ** 2).sum()
ss_tot = ((y - y.mean()) ** 2).sum()
r2 = 1 - ss_res / ss_tot
return 1 - r2 # 接骨院=0.83, 国民年金=0.10
出力一覧
| 種別 | パス |
|---|---|
| データ | data/store_count/*.csv |
| 図 |
output/store_count/fig1〜fig17.png |
| 残差マトリクス | data/store_count/residual_matrix.csv |
| クラスタ割当 | data/store_count/prefecture_clusters.csv |
参考文献・脚注
- 総務省統計局 e-Stat: https://www.e-stat.go.jp/
- 接骨院数は「柔道整復の施術所数」(衛生行政報告例)。鍼灸院は「はり・きゅうの施術所数」。
- 本稿の「制度の曖昧さ=1−R²」は、人口密度・高齢化・所得という客観3要因での説明力の裏返しであり、制度設計そのものの規範的評価ではない。
- 残差・相関は共変動の分離であって因果の証明ではない。因果推定にはDID(露地 vs 制度変更前後)等の追加設計が必要(§5)。
シリーズ: 常識をデータでひっくり返す(Part 2:構造編)
前編: Part 1:説明できない地域差
次回(予定): 師院比・部位数別請求割合を取り込んだ「供給構造 vs 商慣行」の分離