この教材は、原論文が使ったデータそのものを使えていません。そこで代わりのデータで同じ問いを追いかけ、結論の向き(増える/減る、強い/弱い)が原論文と一致するかを確かめます。「同じ数値が出る」ことは目標にしていません。
| 原論文が使ったデータ | 宍粟市の人口推移及び人口増減率 1920 年~2015 年(大正 9 年~平成 27 年)・年度別人口統計・異動状況・行政区別年齢(5 歳階級)別人口・地方公共団体の主要財政指標一覧・SSDSE-A-2022・総務省 情報通信白書 インターネットの利用状況 分析単位:市区町村 中核手法:相関分析 |
|---|---|
| この教材が使うデータ |
|
| 原論文(PDF) | 過疎化と地域おこし 審査員奨励賞/阪口 一ノ佑、髙島 壮、田中 初芽、寺田 哲了、廣岡 遥羽(兵庫県立姫路西高等学校) |
原論文と同じ粒度のデータは、この教材にも同梱しています。これを読み込めば、原論文と同じ細かさで分析をやり直せます(下の「🐍 ブラウザで動かす」でコードを書き換えて試せます)。ただし原論文が使った項目がすべて収録されているとは限りません。足りない項目は、上の「できないこと」に書いた出典から取ってくる必要があります。
▶ ここに書いてある分析は、ページ下部の「🐍 ブラウザで動かす」でそのまま実行できます(インストール不要)。動かしているのは code/2022_H5_5_shorei.py(254 行)そのものです。
このページで実再現できるのは図1(高齢化率の推移)と図2(高齢化率×社会増減率)です。コードの編集は不要です。(原論文の中心である財政力指数・インターネット利用率・産業就業者数・宍粟市の値は SSDSE-B に無いため、図3・図4は原論文の報告値を可視化します。)
data/raw/ フォルダに入れます。html/figures/ に自動保存されます。財政力指数など SSDSE-B 収録外の指標はスクリプト内に原論文の報告値を転記して可視化します。
著者たちは兵庫県立姫路西高校の生徒である。自分たちの住む西播磨地域では小学校の統廃合が進むなど自治体の維持が難しくなる過疎化が進行している。そこで、同じ西播磨の兵庫県宍粟市(人口35,639人・令和4年4月時点、財政力指数0.3433333)を例に、市を活性化して財政力を上げる手段を探ることにした。
最初に立てた仮説は「財政力指数と産業には直接的な関わりがある」。財政力指数の計算に事業税など産業由来の地方税が含まれるからだ。さらに先行研究(ICT活用が地域の生産性を高める)から「情報化の遅れが財政力を下げている」という第2の仮説を立て、インターネット利用率と財政力の関係も調べる、という二段構えの発想である。
高校生の部 SSDSE-A+総務省財政指標・情報通信白書・宍粟市 相関分析 無相関検定 潜在変数(交絡)の考察
本研究は複数の出典を組み合わせている。財政力指数は総務省「地方公共団体の主要財政指標一覧」(2018〜2020)、産業就業者数は SSDSE-A-2022(市区町村)、インターネット利用率は総務省「情報通信白書」(2021)、宍粟市の総人口・65歳以上人口・若年者人口は宍粟市の統計から取っている。いずれも市区町村粒度、または宍粟市単独のデータである。
| 役割 | データ | 出典(年度) | 本ページでの扱い |
|---|---|---|---|
| 目的量 | 市区町村別 財政力指数 | 総務省 地方公共団体の主要財政指標一覧(2018〜2020) | 報告値の可視化 |
| 産業 | 第一次・第二次・第三次産業就業者数 | SSDSE-A-2022(市区町村) | 報告値の可視化 |
| 情報化 | 市区町村別 インターネット利用率 | 総務省 情報通信白書(2021) | 報告値の可視化 |
| 人口 | 宍粟市の総人口・65歳以上人口 | 宍粟市「年度別人口統計・異動状況」ほか(2006〜2022) | 報告値の可視化 |
| 地域おこし | Twitter発信数(内部/外部向け) | 各自治体公式アカウントを著者が独自収集(2022.1〜2022.7) | 報告値の可視化 |
| 高齢化 | 高齢化率(65歳以上人口/総人口) | SSDSE-B(都道府県・2012〜2023) | 実再現 |
| 過疎化 | 社会増減率(転入−転出/総人口) | SSDSE-B(都道府県・2023) | 実再現 |
A1303 65歳以上人口 / A1101 総人口 から兵庫県・全国の高齢化率の推移を実再現する(図1)。さらに、原論文の主張「高齢化が地域の活力を下げる」を、A5101 転入・A5102 転出 による社会増減率と高齢化率の相関として実データから検証する(図2)。財政力指数の計算に産業由来の地方税が含まれることから、「産業就業者数が多いほど財政力が高い」と予想。第一次・第二次・第三次産業それぞれと相関をとる(原論文 表5)。
ICT活用が地域を潤すという先行研究から、情報化の遅れが財政力を下げると予想。市区町村のネット利用率と財政力の相関をとる(原論文 図7)。
ネット利用率と財政力に相関が出ても、それが直接の因果とは限らない。両方を左右する共通要因として高齢化を疑い、高齢化と両者の相関を確かめる(原論文 表6)。
地域おこしに成功した自治体のTwitter発信を「内部向け/外部向け」に分けて比較し、宍粟市への提言につなげる(原論文 表7・図8)。
研究の背骨である「高齢化の進行」と「高齢化と人口流出(過疎化)の結びつき」を、SSDSE-Bの都道府県データから実再現する。財政力の相関そのものはSSDSE-Bでは再現できないため報告値を用いる。
研究の背骨は「高齢化の進行」である。原論文 図2 が示した宍粟市の高齢化率上昇を、SSDSE-Bで兵庫県・全国について実再現する。ここは都道府県データから計算できる実再現部分である。
skiprows=[1] で読み込み、A1101 総人口・A1303 65歳以上人口・A5101 転入・A5102 転出 を数値化する。そこから 高齢化率(65歳以上/総人口)と 社会増減率((転入−転出)/総人口・‰)という、原論文の核心「高齢化」「過疎化」に対応する指標を作る。60 61 62 63 64 65 66 67 68 | df = pd.read_csv(DATA_B, encoding='cp932', skiprows=[1]) for c in ['A1101', 'A1303', 'A5101', 'A5102']: df[c] = pd.to_numeric(df[c], errors='coerce') df['年度'] = df['SSDSE-B-2026'].astype(int) # 指標づくり(SSDSE-B に実在する列だけを使用) df['高齢化率'] = df['A1303'] / df['A1101'] * 100 # 65歳以上人口 / 総人口 df['社会増減'] = df['A5101'] - df['A5102'] # 転入 - 転出 df['社会増減率'] = df['社会増減'] / df['A1101'] * 1000 # 人口千人あたり(‰) |
76 77 78 79 80 81 82 83 84 85 86 87 88 89 | hyogo = df[df['Prefecture'] == '兵庫県'].sort_values('年度') # 全国の高齢化率=各年の 65歳以上人口合計 / 総人口合計 nat = (df.groupby('年度') .apply(lambda g: g['A1303'].sum() / g['A1101'].sum() * 100) .rename('全国高齢化率') .reset_index()) years = hyogo['年度'].values print(f"対象年度: {years.min()}〜{years.max()}({len(years)}か年)") print(f"兵庫県の高齢化率: {hyogo['高齢化率'].iloc[0]:.2f}% ({years.min()}年)" f" → {hyogo['高齢化率'].iloc[-1]:.2f}% ({years.max()}年)") print(f"全国の高齢化率 : {nat['全国高齢化率'].iloc[0]:.2f}% ({years.min()}年)" f" → {nat['全国高齢化率'].iloc[-1]:.2f}% ({years.max()}年)") print(f"兵庫県の上昇幅 : +{hyogo['高齢化率'].iloc[-1] - hyogo['高齢化率'].iloc[0]:.2f} ポイント") |
=== [1] 高齢化率の推移(兵庫県・全国, 実再現) === 対象年度: 2012〜2023(12か年) 兵庫県の高齢化率: 24.30% (2012年) → 29.96% (2023年) 全国の高齢化率 : 24.13% (2012年) → 29.13% (2023年) 兵庫県の上昇幅 : +5.66 ポイント
原論文の核心「高齢化が地域を弱らせる」を、SSDSE-Bで実データ検証する。財政力指数は収録されていないので、過疎化=人口流出(社会増減率)と高齢化の関係で確かめる。
scipy.stats.pearsonr で求め、無相関検定のp値も出す。原論文の主張「高齢化が地域の活力を下げる」を実データで検証する。115 116 117 118 119 120 121 122 123 124 125 | d23 = df[df['SSDSE-B-2026'] == 2023].copy() x = d23['高齢化率'].values y = d23['社会増減率'].values r, p = stats.pearsonr(x, y) print(f"標本数 N = {len(d23)} 都道府県(2023年)") print(f"高齢化率 × 社会増減率(‰)の相関係数 r = {r:.4f}") print(f"無相関検定 p 値 = {p:.6f}(有意水準5%で有意)") top_aged = d23.sort_values('高齢化率', ascending=False)['Prefecture'].head(3).tolist() inflow = d23.sort_values('社会増減率', ascending=False)['Prefecture'].head(3).tolist() print(f"高齢化率が高い上位: {'、'.join(top_aged)}(いずれも社会減)") print(f"社会増(転入超過)上位: {'、'.join(inflow)}(いずれも高齢化率が低い)") |
=== [2] 高齢化率 × 社会増減率(2023年・47都道府県, 実再現) === 標本数 N = 47 都道府県(2023年) 高齢化率 × 社会増減率(‰)の相関係数 r = -0.7953 無相関検定 p 値 = 0.000000(有意水準5%で有意) 高齢化率が高い上位: 秋田県、高知県、徳島県(いずれも社会減) 社会増(転入超過)上位: 東京都、千葉県、埼玉県(いずれも高齢化率が低い)
ここからが原論文の中心である。財政力指数・産業就業者数・インターネット利用率・高齢化の相関係数を見る。これらはSSDSE-Bに無い変数・市区町村粒度のため、原論文の報告値を転記して可視化する(再計算ではない)。
=== [3] 原論文の報告値:相関係数(表5・図7・表6) === 項目 相関係数 出所 相関関係 財政力指数 × 第一次産業就業者数 0.120 表5・図3 ほとんど無し 財政力指数 × 第二次産業就業者数 0.390 表5・図4 弱い正の相関 財政力指数 × 第三次産業就業者数 0.310 表5・図5 弱い正の相関 財政力指数 × 全産業就業者数(合計) 0.220 表5・図6 弱い正の相関 財政力指数 × インターネット利用率 0.725 図7 正の相関 高齢化 × インターネット利用率 -0.940 表6 強い負の相関 高齢化 × 財政力指数 -0.710 表6 強い負の相関 ※いずれも原論文の報告値(SSDSE-B に無い変数のため再計算不可)
高齢化が根本原因だと分かった著者は、地域おこしの具体策を探る。地域おこしに成功した自治体のTwitter発信を「内部向け(住民向け)」「外部向け(観光情報など)」に分けて比較した。これは著者が独自に収集したデータで、再計算できないため報告値を可視化する。
=== [4] 原論文の報告値:Twitter発信数の内訳(表7・図8, 2022.1〜2022.7) === 市区町村 内部向け 外部向け 豊田市 169 56 浦安市 508 55 宍粟市 345 50 丹波山村 278 702 軽井沢町 9 352 ※原論文の報告値(独自収集データのため再計算不可)
産業では財政力を説明できず、情報化の相関の裏には高齢化という潜在変数があった。著者はここから、高齢化を逆手にとった地域再生策を提案する。
高齢化が進むとインターネット利用率が下がり(−0.94)、若者が減って財政力も落ちる(−0.71)。つまり高齢化が「情報化の遅れ」と「財政力の低さ」を同時に引き起こす共通要因だと著者は結論づけた。ネット利用率と財政力の0.725の相関は、この高齢化を介した見かけの相関と解釈できる。
そこで著者が提案するのは高齢者による SNS の活用である。理由は3つ——(1)高齢者がSNSを使うのは新規性があり話題を呼ぶ、(2)地域を支える若者の負担を増やさない、(3)長く住む高齢者ほど地域の歴史や伝統を詳しく知り説得力あるPRができる。地域の若者が高齢者向けにSNS講座を開き、高齢者が宍粟市の観光資源(森林セラピー・スキー場など)を外部に発信する。これにより観光客増加 → 財政力向上 → 移住者増加のサイクルと、内部コミュニティの活性化を同時に狙う(図9)。
宍粟市の各戸に設置された無線通信「しーたん通信」で講座を宣伝し、各町のコミュニティセンターでSNS講座を開催。地域の高校生が授業の一環で指導者として参加し、高齢者の移動にはコミュニティバスを使う。発信する情報は森林セラピーやスキー場など宍粟市特有の観光資源とする、という現実的な設計まで踏み込んでいる。
原論文は市区町村データで過疎化と地域おこしを論じました。都道府県平均では見えない市区町村の人口減少・高齢化の分布を、同じ粒度で確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | a = pd.read_csv('data/raw/SSDSE-A-2025.csv', encoding='cp932', header=2) a = a[a['地域コード'].str.match(r'^R\d+', na=False)].copy() a = a[pd.to_numeric(a['総人口'], errors='coerce') > 0] num = lambda c: pd.to_numeric(a[c], errors='coerce') d2 = pd.DataFrame({'市区町村': (a['都道府県'] + a['市区町村']).values}) d2['人口増減率'] = (((num('出生数') - num('死亡数')) + (num('転入者数(日本人移動者)') - num('転出者数(日本人移動者)'))) / num('総人口') * 100).values d2['高齢化率'] = (num('65歳以上人口') / num('総人口') * 100).values d2 = d2.dropna() gen = (d2['人口増減率'] < -1.5) & (d2['高齢化率'] > 40) print(f'市区町村数: {len(d2)} / うち「人口減 1.5%/年超 × 高齢化率 40%超」の消滅リスク自治体: {gen.sum()}') r, p = stats.pearsonr(d2['高齢化率'], d2['人口増減率']) print(f'高齢化率 × 人口増減率: r = {r:+.3f} (p<0.001)') print('人口減少率 上位5:', '、'.join(d2.nsmallest(5, '人口増減率')['市区町村'])) |
(条件A) & (条件B)。カッコを忘れると優先順位で誤動作します。本研究は、過疎地域・宍粟市の財政力をどう上げるかという問いに、市区町村データの相関分析で挑んだ。産業就業者数とはほぼ無相関(0.12〜0.39・報告値)、インターネット利用率とは正の相関(0.725・報告値)が出たが、著者はこれを直接の因果とせず、共通要因の高齢化を突き止めた(高齢化×ネット利用率 −0.94、高齢化×財政力 −0.71・報告値)。そこから高齢者によるSNS活用で観光PRを外部に広げ、観光客増→財政力向上→移住者増のサイクルを回す策を提言した。本ページでは、高齢化の進行(図1)と高齢化と人口流出の結びつき(図2)をSSDSE-Bで実再現し、財政力の相関そのものは報告値として切り分けた。高校生が「相関の裏にある潜在変数」まで踏み込んだ探究の姿勢が見どころである。
このページの実再現の図(図1・図2)は、以下から再現できます。
🐍 再現コード(.py) 📊 SSDSE-B-2026.csv
※ 図1(高齢化率の推移)・図2(高齢化率×社会増減率)はSSDSE-Bの A1101/A1303/A5101/A5102 から算出した実再現です。図3(相関係数の一覧)と図4(Twitter発信数の内訳)は、財政力指数・インターネット利用率・独自収集データが出典でSSDSE-B外・市区町村粒度のため、原論文の報告値を可視化したものです(新たな数値の捏造はしていません)。
この研究を読むとき・まねするときに陥りやすい誤解を整理する。
A1303 65歳以上人口 を A1101 総人口 で割って自分で作る。既製の指標に頼らず、実在する列から指標を組み立てるのがデータ加工の基本。クリックすると各用語の詳しい解説ページに移動できます。
この研究で使われている手法を、手を動かす順に説明する。
この研究の「高齢化が過疎化・財政力低下の根にある」という結論は、次の研究の出発点になる。
再現コードを少し変えるだけで試せる課題を、易しい順に用意した。
df['Prefecture'] == '兵庫県' で兵庫県を選んでいる。ここを「秋田県」や「東京都」に変えて、高齢化の進み方の違いを見てみよう。df[df['SSDSE-B-2026']==2023])の高齢化率を降順に並べ、上位・下位5県を表示してみよう。過疎が進む県が上位に来るはず。「相関を出したら潜在変数を疑い、根の要因に手を打つ」発想は、行政や企業で広く使われている。
この研究を読んで浮かびやすい疑問に答える。
この論文を理解できたか、クリックで確認しましょう。間違えても解説が出ます。
このページの分析は、この画面の中でそのまま実行できます。
Python をインストールする必要も、CSV をダウンロードする必要もありません。
下のセルの 「▶ ブラウザで実行」 を上から順に押すか、
「▶ 最初から全部実行」 で一気に流してください。
表示されるのは、本文の図表とまったく同じ計算の結果です
(動かしているのは再現スクリプト code/2022_H5_5_shorei.py そのもの)。
コードは書き換えられます。「✏️ 書き換える」で数字や変数を変えて ▶ を押すと、 結果がどう変わるかをその場で確かめられます(元に戻すボタンつき)。 ページを開いた時点で裏で実行環境の準備が始まっているので、待ち時間はほとんどありません。 初回だけ実行環境の取得にインターネット接続が必要です。