~前回の結論をひっくり返して、データ分析の新境地へ~
はじめに:前回からの方針転換宣言 😅
前回投稿:e-statの魔境にAIと挑んだら、データ準備の『だるさ』をpipeline・並列処理でねじ伏せられた話
前回の投稿で私はこう言いました。
「意味のある組合せでデータ分析しましょう!」
今回、真逆のアプローチをとります。
なぜか?
AIはデータの組合せを試すのが大得意で、材料科学の世界では新素材がボコボコ発見されているらしい。
ならば、
自治体ビジネスのネタとしても「新素材」を探せるのでは? と考えたからです。
結論から言うと、大発見がありました。
Part 0:挫折編 ~ 東京と沖縄を比べても仕方がない
最初の失敗
e-Statから1,911自治体のデータを取得し、意気揚々とクラスタリングを実行。
# KMeansでクラスタリング
kmeans = KMeans(n\_clusters=5, random\_state=42)
clusters = kmeans.fit\_predict(X)
結果を見て愕然としました。
クラスタ2: 東京都特別区(課税対象所得 286億円)
クラスタ0: 沖縄県の離島(課税対象所得 3億円)
「東京都と沖縄で差がつくのは当たり前じゃん😅」
これは比較として意味がない。
人口差、立地差、産業構造の差が大きすぎて、何の示唆も得られない。
データ分析あるある:条件が違いすぎるものを比較してしまう問題。
気づき:「同じ条件で成果が違う」を見つけるべき
考え直しました。
本当に知りたいのは、**「同じような条件なのに、なぜか成果が違う」**ケース。
例えば:
- 同じ「人口1万人未満の中部地方の村」なのに
- 片方は課税対象所得275億円、片方は3億円
- この83倍の差は何が原因?
これなら「人口が多いから」「東京だから」では説明できない。
施策・工夫・努力の差が見えてくるはず。
ほとんどの自治体が「人口相応」のラインに並ぶ中、忍野村や苅田町だけがグラフの突き抜けた場所に点在している。
この「外れ値(アウトライヤー)」こそが、今回の主役です。
Part 1:再設計編 ~ 地域×人口規模でグルーピング
アプローチの転換
# 地域ブロックを定義
REGION\_BLOCKS = {
1: '北海道',
2: '東北', 3: '東北', 4: '東北', ...
15: '中部', 16: '中部', ...
}
# 人口規模区分
POPULATION\_BINS = \[0, 10000, 30000, 50000, 100000, 200000, float('inf')]
POPULATION\_LABELS = \['1万人未満', '1-3万人', '3-5万人', ...]
同じ地域ブロック × 同じ人口規模 = 同格グループ
この中で比較すれば、「地理的ハンデ」を排除した純粋な成果比較ができる。
結果:衝撃の格差発見
中部地方 × 人口1万人未満のグループ(84自治体)を分析。
| 順位 | 自治体 | 人口 | 課税対象所得 |
|---|---|---|---|
| 1位 | 忍野村(山梨) | 9,237人 | 275億円 |
| ... | ... | ... | ... |
| 84位 | 粟島浦村(新潟) | 353人 | 3.3億円 |
格差:83倍
同じ「中部地方の1万人未満の村」なのに、なぜ?
Part 2:発見編 ~ 成功自治体の共通パターン
忍野村の秘密:ファナックという「金の卵」
調べて驚きました。
忍野村 = ファナック本社所在地
- 1972年に誘致、1984年に東京から本社移転
- 世界シェアNo.1のNC装置・産業用ロボットメーカー
- 従業員の平均年収:1,364万円
- 敷地面積180万㎡、通称「ファナックの森」
人口9,000人の村に、世界的企業の本社がある。
住民税収入が桁違いになるわけです。
他の地域でも同様のパターンを発見
| 地域 | 格差 | 上位の秘密 |
|---|---|---|
| 九州 | 44.8倍 | 苅田町(日産)、菊陽町(TSMC) |
| 東北 | 29.5倍 | 双葉町・大熊町(原発※特殊) |
| 四国 | 22.7倍 | 直島町(ベネッセアート) |
| 北海道 | 19.5倍 | 別海町(生乳日本一) |
成功パターンが見えてきた!
「1,911自治体 × 500以上の指標を人間が総当たりするのは無理だが、AIなら数秒で『ここ、おかしくない?』と指摘してくれる」
成功パターン分類
パターンA:大企業誘致型
- 忍野村(ファナック)
- 苅田町(日産)
- 菊陽町(TSMC)
パターンB:ブランド産品型
- 別海町(生乳日本一)
- 馬路村(ゆず→年商30億円)
- 上勝町(葉っぱビジネス→年商2.6億円)
パターンC:観光・文化型
- 直島町(ベネッセアート)
- 白川村(世界遺産)
Part 3:逆転の発想編 ~ 下位自治体にこそビジネスチャンス
ここで発想を転換しました。
「成功事例より、てこ入れが必要な自治体の方が提案が刺さるのでは?」
成功している自治体は「現状維持」で満足している。
一方、下位自治体はワラにもすがりたい状態(のハズ😅)
下位自治体の分析
人口1万人未満 × 課税対象所得 下位20% = 107自治体を特定。
| 分類 | 自治体数 | 特徴 |
|---|---|---|
| 離島 | 18 | 物流コスト高(提案難易度:高) |
| 山間過疎 | 52 | 森林資源あり(提案難易度:中) |
| 平野部過疎 | 35 | アクセス良(提案難易度:低) |
優先ターゲット:本土過疎地域 87自治体
驚きの発見:同じ高知県に成功モデルがある
下位自治体の多い高知県。
しかし同じ県内に馬路村と上勝町(徳島) という大成功事例がある。
馬路村モデル
人口800人 → ゆず年商30億円
林業衰退(昭和30年代)
↓
ゆず栽培開始(昭和38年)
↓
「ごっくん馬路村」発売(1988年)
↓
「村ごと売る」ブランディング
↓
年商30億円、商品70種類
上勝町モデル
人口1,500人 → 葉っぱ年商2.6億円
ミカン全滅(1981年寒波)
↓
「葉っぱを売ろう!」発想転換
↓
ICTで受発注システム導入(1999年)
↓
つまもの市場シェア80%
年収1,000万円のおばあちゃん誕生
これ、横展開できるじゃん!
Part 4:ビジネス提案編 ~ 再現性のデザイン
データ分析は「再現性のデザイン」である
今回の分析で確信したこと。
**成功は偶然ではない。パターンがある。**
**パターンがあるなら、再現できる。**
これこそがデータ分析の本質的価値。
提案サービス案
| サービス | 内容 | 想定料金 |
|---|---|---|
| 地域資源棚卸し診断 | 埋もれた資源の発掘 | 50-100万円 |
| 成功パターン適用診断 | 類似事例とのマッチング | 30-50万円 |
| 6次産業化支援 | 商品開発〜販路開拓 | 200-500万円/年 |
優先ターゲット自治体(TOP5)
| 順位 | 自治体 | 潜在資源 | 適用パターン |
|---|---|---|---|
| 1 | 王滝村(長野) | 木曽ヒノキ・御嶽山 | 馬路村モデル |
| 2 | 川上村(奈良) | 吉野杉・世界遺産 | ブランド産品型 |
| 3 | 野迫川村(奈良) | 雲海・高野山 | 観光ブランド化 |
| 4 | 売木村(長野) | 星空・清流 | ワーケーション誘致 |
| 5 | 南山城村(京都) | 京都唯一の村 | 「京都の秘境」ブランド |
Part 5:振り返り ~ AI駆動開発で何が変わったか
Before:データ準備が8割
前回の投稿で書いたように、従来のデータ分析は「準備が8割」。
データ収集 → クレンジング → 整形 → 分析 → 考察
↑\_\_\_この部分が地獄\_\_\_↑
地獄からGo Go Heaven!👼
After:考えることに時間を使える
今回はパイプラインを自動化したことで、状況が一変。
# e-Stat APIからデータ自動取得
def fetch\_all\_categories(self):
categories = \['A\_人口世帯', 'C\_経済基盤', 'D\_行政基盤', ...]
for cat in categories:
self.fetch\_category(cat) # API自動呼び出し
「データ準備8割」の時間が削減され、「考える」ことに時間を使えた。
真逆のアプローチが可能になった理由
前回:「意味のある組合せでデータ分析しましょう」
今回:「まず全部取って、組合せを試す」
この方針転換ができたのは、AIがデータ処理を高速化してくれたから。
人間が1つ1つ仮説を立てて検証するのではなく、
AIが大量の組合せを試して、異常値を見つけてくれる。
まさに「新素材発見」のアプローチ。
おわりに:今日もどこかで、データ分析の闘いは続く(プロジェクトX風味)
忍野村にファナックを誘致した人がいた。
馬路村でゆずを加工品にしようと言い出した人がいた。
上勝町で「葉っぱを売ろう」と閃いた人がいた。
彼らはデータを見て決断したわけではない。
現場の課題と向き合い、泥臭く解決策を探した。
でも今、私たちにはAIという「相棒」がいる。
1,911自治体の背後に隠れたパターンを、AIは一瞬で炙り出してくれる。
かつての開拓者が「勘と熱意」で切り拓いた道を、これからは「データとAI」で再現可能な地図にする。
「過疎だから仕方ない」ではなく、「過疎でも成功している事例がある」
このデータが、次の馬路村を、次の上勝町を生むかもしれない。
今日もどこかで、
地方創生のための闘いが続いている。
データ分析で、その闘いを支援できるなら——
これほど嬉しいことはない。
次回
今日の金字塔 明日には蟹気楼 土足で踏み込む前人未踏
感動の大団円!!
次回:AIに「お役所の課長の悩み」を理解させたら、提案書が3時間で完成した。人間が3ヶ月かかる仕事を100倍速にする方法
技術的補足:再現手順
1. e-Stat APIでデータ取得
import requests
APP\_ID = "your\_app\_id"
BASE\_URL = "https://api.e-stat.go.jp/rest/3.0/app/json/getStatsData"
params = {
"appId": APP\_ID,
"statsDataId": "0000010101", # 統計でみる市区町村のすがた
"metaGetFlg": "Y",
"sectionHeaderFlg": "1",
}
response = requests.get(BASE\_URL, params=params)
2. 地域ブロック×人口規模でグルーピング
# 地域ブロックマッピング
df\['region'] = df\['pref\_code'].map(REGION\_BLOCKS)
# 人口規模区分
df\['pop\_category'] = pd.cut(
df\['population'],
bins=POPULATION\_BINS,
labels=POPULATION\_LABELS
)
3. グループ内での成果比較
# 変動係数(CV)でバラツキを測定
cv = group\['課税対象所得'].std() / group\['課税対象所得'].mean()
# CVが高いグループ = 同条件なのに成果に差があるグループ
参考リンク
いいね👍とストックをお願いします!