この教材は原論文と同じデータを読み込み、同じ手順で計算し直しています。画面に出る数値と図は、あなたのブラウザがその場で計算した結果です。
| 原論文が使ったデータ | ふるさと納税ガイド・国土交通省国土地理院全国都道府県市区町村別面積調・住民基本台帳に基づく人口・総務省平成 29 年度地方財政統計年報の都道府県歳入決算・SSDSE-2020A・SSDSE-2020B 分析単位:市区町村 中核手法:相関分析 |
|---|---|
| この教材が使うデータ | CSV は読み込まない(原論文が報告した数値をそのまま図表化して読み解く) |
| 原論文(PDF) | 自治体ごとのふるさと納税の必要性を定義する 統計活用奨励賞/岡本涼夏(慶應義塾湘南藤沢高等部) |
▶ ここに書いてある分析は、ページ下部の「🐍 ブラウザで動かす」でそのまま実行できます(インストール不要)。動かしているのは code/2020_H4_katsuyo.py(215 行)そのものです。
このページの図は、原論文(PDF)に印字された報告値をそのまま可視化したものです。原論文の中核データ(ふるさと納税受け入れ金額・面積・市区町村別歳入)は教育用標準データセット SSDSE には収録されていないため、新たに数値を計算していません。そのため、この再現コードは外部データファイルを必要とせず、そのまま実行できます。
html/figures/ に自動保存されます(外部データ不要)。
data/raw/SSDSE-B-2026.csv)で確認できます。ただし人口密度に必要な面積や、ふるさと納税額・市区町村別歳入は SSDSE 未収録のため、原論文の完全再現には国土地理院・ふるさと納税ガイド・地方財政統計年報の各データが別途必要です。
⬇ SSDSEダウンロードページを開く
ふるさと納税は、納税者が任意の都道府県・市区町村へ寄付できる制度として2008年に始まった。その目的は地方創生である。地方で生まれ行政サービスを受けて育った人が都会へ出て都会の自治体に納税する——この構造を少しでも是正し、納税者が税制を通じて「ふるさと」へ貢献できるようにするために生まれた制度だ、と原論文は整理している。
総務省はふるさと納税に3つの意義があるとする。(1)納税者が寄付先と使い道を考えるきっかけになること、(2)お世話になった地域・応援したい地域の力になれること、(3)自治体が取り組みをアピールし地域のあり方を考え直すきっかけになること。
一方で、お礼品(返礼品)が制度の目的を逸脱する過度な返礼品競争を招き、問題視されている。実際に泉佐野市はふるさと納税をめぐって国と裁判になった。そこで原論文は、「地域ごとのふるさと納税の必要性」という観点から、返礼品競争の是正を考察する。
相関分析 散布図 外れ値処理 指標設計
| 使用変数 | 出典 |
|---|---|
| 都道府県別・市区町村別のふるさと納税の受け入れ金額 ×1000〔円〕 | ふるさと納税ガイド「ふるさと納税関連統計データ総まとめ」(2008〜2017年) |
| 都道府県別・市区町村別の面積〔km²〕 | 国土交通省 国土地理院 全国都道府県市区町村別面積調(2020年) |
| 市区町村別 総人口〔人〕 | 住民基本台帳に基づく人口(2017年) |
| 都道府県別の歳入額 ×100,000,000〔円〕 | 総務省 平成29年度 地方財政統計年報の都道府県歳入決算 |
| 指標 | 計算方法 |
|---|---|
| 都道府県別・市区町村別の人口密度〔人/km²〕 | 総人口〔人〕 ÷ 面積〔km²〕 |
| 都道府県別の転入者数と転出者数の差〔人〕 | SSDSE-2020A の 転入者数 − 転出者数 |
| 市区町村別の転入者数と転出者数の差〔人〕 | SSDSE-2020B の 2017年の 転入者数 − 転出者数 |
| 歳入割合〔%〕(都道府県別・市区町村別) | 2017年のふるさと納税受け入れ金額 ÷ 歳入金額 |
原論文は演算ソフト R を用いて分析している。中核となる変数(ふるさと納税額・面積・市区町村別歳入・市区町村別人口密度・歳入割合)は、教育用標準データセット SSDSE には収録されていない。特に市区町村レベルの人口密度・歳入割合は SSDSE 未収録である。したがって本教材は新たな数値を計算せず、原論文の報告値を可視化する。下表はどの変数が再現可能かを整理したものである。
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | # ============================================================ # 図4: 再現可能性トリアージ(この教材で扱えるデータの整理) # どの変数が SSDSE で再現でき、どれが原論文の報告値かを一覧表として図示。 # ============================================================ print("\n=== 図4: 再現可能性トリアージ ===") rows = [ ('ふるさと納税 受け入れ金額', 'ふるさと納税ガイド', '×', '報告値'), ('市区町村・都道府県の面積', '国土地理院 面積調2020', '×', '報告値'), ('市区町村別 総人口', '住民基本台帳 2017', '×', '報告値'), ('都道府県別 歳入額', '地方財政統計年報 H29', '×', '報告値'), ('転入者数 − 転出者数', 'SSDSE-2020A/B(現B)', '△', '都道府県は収録'), ('人口密度(=人口/面積)', '面積が SSDSE 未収録', '×', '報告値'), ('歳入割合(納税/歳入)', '市区町村レベル未収録', '×', '報告値'), ] print(f" {'変数':<22}{'SSDSE収録':<10}{'扱い'}") for name, src, ok, how in rows: print(f" {name:<22}{ok:<10}{how}({src})") fig, ax = plt.subplots(figsize=(9.5, 5)) ax.axis('off') col_x = [0.02, 0.46, 0.70, 0.86] headers = ['分析に用いた変数', '出典', 'SSDSE収録', 'この教材での扱い'] ax.text(0.5, 0.97, '再現可能性トリアージ:この論文の変数と SSDSE', ha='center', fontsize=13, fontweight='bold', transform=ax.transAxes) for cx, h in zip(col_x, headers): ax.text(cx, 0.88, h, fontsize=10.5, fontweight='bold', transform=ax.transAxes, color='#1565C0') ax.axhline(0.855, color='#1565C0', linewidth=1.2) for i, (name, src, ok, how) in enumerate(rows): yy = 0.80 - i * 0.105 face = '#E8F5E9' if ok != '×' else '#FFF5F5' ax.add_patch(plt.Rectangle((0.0, yy - 0.045), 1.0, 0.092, transform=ax.transAxes, facecolor=face, edgecolor='none', zorder=0)) ax.text(col_x[0], yy, name, fontsize=9.8, transform=ax.transAxes, va='center') ax.text(col_x[1], yy, src, fontsize=8.8, transform=ax.transAxes, va='center', color='#555') ok_color = '#2E7D32' if ok != '×' else '#C62828' ax.text(col_x[2] + 0.05, yy, ok, fontsize=12, transform=ax.transAxes, va='center', ha='center', color=ok_color, fontweight='bold') ax.text(col_x[3], yy, how, fontsize=9.2, transform=ax.transAxes, va='center') ax.text(0.99, -0.02, '×=SSDSE未収録のため原論文の報告値を可視化/△=一部(都道府県)のみ収録', transform=ax.transAxes, ha='right', fontsize=8, color='#B71C1C', style='italic') out4 = os.path.join(FIG_DIR, '2020_H4_fig4.png') plt.savefig(out4, dpi=150, bbox_inches='tight') plt.close() print(f" 保存: {out4}") |
=== 図4: 再現可能性トリアージ === 変数 SSDSE収録 扱い ふるさと納税 受け入れ金額 × 報告値(ふるさと納税ガイド) 市区町村・都道府県の面積 × 報告値(国土地理院 面積調2020) 市区町村別 総人口 × 報告値(住民基本台帳 2017) 都道府県別 歳入額 × 報告値(地方財政統計年報 H29) 転入者数 − 転出者数 △ 都道府県は収録(SSDSE-2020A/B(現B)) 人口密度(=人口/面積) × 報告値(面積が SSDSE 未収録) 歳入割合(納税/歳入) × 報告値(市区町村レベル未収録) 保存: html/figures/2020_H4_fig4.png
ふるさと納税は2008年に始まり、2008〜2014年は緩やかに成長したが、2015年以降に爆発的に増加した。原論文はその要因を、2015年の税制改正(住民税の控除上限が概ね1割から2割へ引き上げ)と各種の宣伝によるものとしている(折れ線グラフによる年次推移は原論文 図2 を参照。本教材では時系列の生データが手元にないため図は再現していない)。
まず原論文は、人口密度が必要性の指標として適切かを相関で検証した。都道府県の歳入額はその都道府県の人口・納税者数を反映するため、人口密度と相関するはずだ、という発想である。
次に市区町村別でも同じ相関を見た。散布図で歳入が5億円を超える都市、(転出者数−転入者数)が5000人を超える都市を見ると、いずれも政令指定都市だったため、これらを外れ値として除外して描き直した(原論文 図7・図8)。
1 2 3 4 5 6 7 8 9 10 11 12 13 | import os import numpy as np import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt from matplotlib.patches import Patch plt.rcParams['font.family'] = 'Hiragino Sans' plt.rcParams['axes.unicode_minus'] = False plt.rcParams['figure.dpi'] = 150 FIG_DIR = 'html/figures' os.makedirs(FIG_DIR, exist_ok=True) |
matplotlib.use('Agg') — 画面表示せず PNG に保存するための設定。Hiragino Sans — 図の日本語フォント(Windows は Yu Gothic 等)。15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # ============================================================ # 図1: 人口密度との相関係数(原論文の報告値) # 原論文 5.1「仮説の検証」より。すべて原論文に印字された報告値。 # ============================================================ print("=== 図1: 相関係数(原論文の報告値) ===") corr_labels = [ '都道府県別\n歳入 × 人口密度', '都道府県別\n(転入−転出) × 人口密度', '市区町村別*\n歳入 × 人口密度', '市区町村別*\n(転入−転出) × 人口密度', ] corr_values = [0.8468049, 0.8249227, 0.6286418, 0.5282505] # 原論文 図3/図4/図7/図8 corr_colors = ['#1565C0', '#1565C0', '#E65100', '#E65100'] for lab, v in zip([l.replace('\n', ' ') for l in corr_labels], corr_values): print(f" r = {v:.7f} | {lab}") fig, ax = plt.subplots(figsize=(9, 5)) ypos = np.arange(len(corr_values))[::-1] bars = ax.barh(ypos, corr_values, color=corr_colors, edgecolor='white', height=0.62) for y, v in zip(ypos, corr_values): ax.text(v + 0.01, y, f'{v:.4f}', va='center', ha='left', fontsize=12, fontweight='bold') ax.axvline(0.7, color='#888', linestyle='--', linewidth=1) ax.text(0.705, len(corr_values) - 0.5, '強い相関の目安 (0.7)', fontsize=9, color='#666') ax.set_yticks(ypos) ax.set_yticklabels(corr_labels, fontsize=10.5) ax.set_xlim(0, 1.0) ax.set_xlabel('Pearson 相関係数 r(原論文の報告値)', fontsize=11) ax.set_title('人口密度と各指標の相関(2017年・原論文の報告値)\n' '*市区町村別は政令指定都市を外れ値として除外', fontsize=12.5, fontweight='bold', pad=10) legend = [Patch(facecolor='#1565C0', label='都道府県別 (n=47)'), Patch(facecolor='#E65100', label='市区町村別(政令市除く)')] ax.legend(handles=legend, loc='lower right', fontsize=9.5) ax.grid(axis='x', linestyle='--', alpha=0.4) ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) ax.text(0.01, 0.02, '原論文の報告値の可視化(再計算ではない)', transform=ax.transAxes, ha='left', fontsize=8.5, color='#B71C1C', style='italic') plt.tight_layout() out1 = os.path.join(FIG_DIR, '2020_H4_fig1.png') plt.savefig(out1, dpi=150, bbox_inches='tight') plt.close() print(f" 保存: {out1}") |
=== 図1: 相関係数(原論文の報告値) === r = 0.8468049 | 都道府県別 歳入 × 人口密度 r = 0.8249227 | 都道府県別 (転入−転出) × 人口密度 r = 0.6286418 | 市区町村別* 歳入 × 人口密度 r = 0.5282505 | 市区町村別* (転入−転出) × 人口密度 保存: html/figures/2020_H4_fig1.png
corr_values の4つの数値はすべて原論文 5.1「仮説の検証」の報告値(図3・図4・図7・図8)。本コードは計算していません。ax.barh(...) で横棒グラフを描画し、各バーに ax.text で数値を添えています。次に原論文は、ふるさと納税収入がその自治体の財政に持つ意味を測る指標として歳入割合(ふるさと納税受け入れ金額 ÷ 歳入)を作り、ふるさと納税金額と歳入割合の散布図を描いた(原論文 図9)。この散布図は、原点付近に集中する多数の自治体と、そこから分散する一部の自治体に分かれ、分散している12自治体が抽出された。
ここで問題が生じた。湯浅町・上峰町・みやき町の3自治体は、黄丸領域に属しているのに人口密度が高く、人口密度という指標で説明がつかなかった。また泉佐野市は、図9上の他のどの自治体よりも人口密度が極端に高く、黄丸に属しているとはいえ人口密度では説明しきれなかった。
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | # ============================================================ # 図2: 人口密度で説明のつかない4自治体(原論文 図9の報告値) # 原論文 図9 の緑字(各自治体の人口密度[人/km^2])より。 # ============================================================ print("\n=== 図2: 過剰にふるさと納税を集めている4自治体(原論文の報告値) ===") outlier_names = ['上峰町', 'みやき町', '湯浅町', '泉佐野市'] outlier_density = [303.0, 490.3, 750.4, 1802.5] # 原論文 図9 緑字 # 参考:人口密度から必要性が高い(適正)とされた低密度自治体の例(原論文 図9 緑字) ref_names = ['北山村', '小谷村', '奈半利町', '都農町', '根室市'] ref_density = [9.4, 11.0, 16.1, 39.1, 51.0] for n, d in zip(outlier_names, outlier_density): print(f" 外れ値: {n:<6} 人口密度 = {d:>7.1f} 人/km^2") for n, d in zip(ref_names, ref_density): print(f" 適正例: {n:<6} 人口密度 = {d:>7.1f} 人/km^2") fig, ax = plt.subplots(figsize=(9, 5)) ypos = np.arange(len(outlier_names)) bars = ax.barh(ypos, outlier_density, color='#C62828', edgecolor='white', height=0.6) for y, (n, d) in enumerate(zip(outlier_names, outlier_density)): ax.text(d + 20, y, f'{d:,.1f}', va='center', ha='left', fontsize=12, fontweight='bold') ax.set_yticks(ypos) ax.set_yticklabels(outlier_names, fontsize=13) ax.set_xlim(0, 2100) ax.set_xlabel('人口密度(人/km²・原論文の報告値)', fontsize=11) ax.set_title('人口密度では説明できなかった4自治体\n(歳入割合が高いのに人口密度も高い=過剰収集の疑い)', fontsize=12.5, fontweight='bold', pad=10) ax.grid(axis='x', linestyle='--', alpha=0.4) ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) ref_txt = '参考(人口密度が低く必要性が高いとされた自治体):\n' + \ ' '.join(f'{n} {d}' for n, d in zip(ref_names, ref_density)) + ' 人/km²' ax.text(0.98, 0.06, ref_txt, transform=ax.transAxes, ha='right', va='bottom', fontsize=8.5, color='#333', bbox=dict(boxstyle='round,pad=0.4', facecolor='#FFF9C4', edgecolor='#F9A825')) ax.text(0.99, 0.02, '原論文 図9 の報告値(緑字)の可視化(再計算ではない)', transform=ax.transAxes, ha='right', fontsize=8, color='#B71C1C', style='italic') plt.tight_layout() out2 = os.path.join(FIG_DIR, '2020_H4_fig2.png') plt.savefig(out2, dpi=150, bbox_inches='tight') plt.close() print(f" 保存: {out2}") |
=== 図2: 過剰にふるさと納税を集めている4自治体(原論文の報告値) === 外れ値: 上峰町 人口密度 = 303.0 人/km^2 外れ値: みやき町 人口密度 = 490.3 人/km^2 外れ値: 湯浅町 人口密度 = 750.4 人/km^2 外れ値: 泉佐野市 人口密度 = 1802.5 人/km^2 適正例: 北山村 人口密度 = 9.4 人/km^2 適正例: 小谷村 人口密度 = 11.0 人/km^2 適正例: 奈半利町 人口密度 = 16.1 人/km^2 適正例: 都農町 人口密度 = 39.1 人/km^2 適正例: 根室市 人口密度 = 51.0 人/km^2 保存: html/figures/2020_H4_fig2.png
outlier_density は原論文 図9 の緑字(各自治体の人口密度)。上峰町303.0・みやき町490.3・湯浅町750.4・泉佐野市1802.5〔人/km²〕。さらに原論文は、市区町村別の人口密度と歳入割合の散布図を描いた(原論文 図10)。ふるさと納税の目的からすれば、人口密度と歳入割合は反比例の形をとるのが望ましい(密度が低い=必要性が高い=歳入割合が高い)。図10の青枠内(密度が低く歳入割合が高い自治体)を拡大したのが図11で、そこには反比例に近い「成功例の曲線」(赤線)が描ける。赤線上の自治体は、ふるさと納税を必要な財源としてうまく活用している成功例である。
そして、この曲線から外れているのが、分析②で抽出された湯浅町・上峰町・みやき町・泉佐野市の4自治体だった。特に泉佐野市は、都道府県の人口密度ランキング(原論文 図12)と比べると、東京都・大阪府・神奈川県に次ぐ人口密度に相当し、ふるさと納税による収入が必要だとは考えにくい。
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | # ============================================================ # 図3: 必要性モデルの概念図(原論文 図10・図11 の考え方の図解) # ※実データではない。原論文の主張(人口密度と歳入割合は反比例が望ましい)を図解。 # ============================================================ print("\n=== 図3: 必要性モデルの概念図(実データではない・考え方の図解) ===") fig, ax = plt.subplots(figsize=(9, 5.5)) x = np.linspace(20, 2000, 300) y_curve = 40.0 / x # 反比例の「成功曲線」を模した概念曲線(任意スケール) ax.plot(x, y_curve, color='#C62828', linewidth=2.4, label='必要性の目安(反比例=成功例の曲線)') # 曲線上(うまく活用=成功例)の概念点 ax.scatter([60, 120, 300], 40.0 / np.array([60, 120, 300]), s=70, color='#2E7D32', zorder=5, edgecolors='white', label='曲線上:制度をうまく活用(成功例)') # 曲線から外れた4自治体(概念的に上方=密度が高いのに歳入割合も高い) off_x = [303, 490, 750, 1802] off_y = [0.26, 0.30, 0.34, 0.40] off_lab = ['上峰町', 'みやき町', '湯浅町', '泉佐野市'] ax.scatter(off_x, off_y, s=90, color='#E65100', zorder=6, marker='D', edgecolors='white', label='曲線から外れる:過剰収集の疑い') for xx, yy, ll in zip(off_x, off_y, off_lab): ax.annotate(ll, (xx, yy), fontsize=10, xytext=(6, 4), textcoords='offset points') ax.set_xlabel('人口密度(人/km²)→ 大きいほど「必要性が低い」', fontsize=11) ax.set_ylabel('歳入割合(ふるさと納税 ÷ 歳入)', fontsize=11) ax.set_title('人口密度と歳入割合:ふるさと納税の「必要性」モデル(概念図)', fontsize=12.5, fontweight='bold', pad=10) ax.set_xlim(0, 2000) ax.set_ylim(0, 0.45) ax.legend(fontsize=9, loc='upper center') ax.grid(linestyle='--', alpha=0.35) ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) ax.text(0.99, 0.02, '概念図(実データではない)/グラフの実データは原論文 図9〜11参照', transform=ax.transAxes, ha='right', fontsize=8, color='#B71C1C', style='italic') plt.tight_layout() out3 = os.path.join(FIG_DIR, '2020_H4_fig3.png') plt.savefig(out3, dpi=150, bbox_inches='tight') plt.close() print(f" 保存: {out3}") |
=== 図3: 必要性モデルの概念図(実データではない・考え方の図解) === 保存: html/figures/2020_H4_fig3.png
y = 40 / x は原論文が理想とする反比例(成功例の曲線)を模した概念曲線で、実データではありません。原論文は、人口密度という必要性の指標に当てはまらなかった4自治体(湯浅町・上峰町・みやき町・泉佐野市)は、ふるさと納税の目的や意義から逸脱し、必要以上にふるさと納税を集めていると考えた。ふるさと納税で地域活性を目指す自治体の努力は奨励されるべきだが、過剰な収集はやめるべきである、というのが原論文の立場である。
下は、本教材で扱った数値がどこ由来かを最後に確認する出力である(すべて原論文の報告値)。
183 184 185 186 187 188 189 190 191 192 193 | # ── 要約 ───────────────────────────────────────────────── print("\n=== 要約(すべて原論文の報告値) ===") print("都道府県別 歳入×人口密度 r = 0.8468049(強い相関)") print("都道府県別 (転入−転出)×人口密度 r = 0.8249227(強い相関)") print("市区町村別 歳入×人口密度 r = 0.6286418(政令市除く)") print("市区町村別 (転入−転出)×人口密度 r = 0.5282505(政令市除く)") print("人口密度で説明できない4自治体:湯浅町(750.4) 上峰町(303.0) みやき町(490.3) 泉佐野市(1802.5) 人/km²") print("\n=== 全図生成完了 ===") for f in [out1, out2, out3, out4]: print(f" {'OK' if os.path.exists(f) else 'NG'}: {os.path.basename(f)}") |
=== 要約(すべて原論文の報告値) === 都道府県別 歳入×人口密度 r = 0.8468049(強い相関) 都道府県別 (転入−転出)×人口密度 r = 0.8249227(強い相関) 市区町村別 歳入×人口密度 r = 0.6286418(政令市除く) 市区町村別 (転入−転出)×人口密度 r = 0.5282505(政令市除く) 人口密度で説明できない4自治体:湯浅町(750.4) 上峰町(303.0) みやき町(490.3) 泉佐野市(1802.5) 人/km² === 全図生成完了 === OK: 2020_H4_fig1.png OK: 2020_H4_fig2.png OK: 2020_H4_fig3.png OK: 2020_H4_fig4.png
本研究(原論文)は、ふるさと納税の制度上の意義と目的から「必要性」の指標を予想して仮説を立て、演算ソフト R でデータ分析し検証した。主な知見は以下の通りである(数値はすべて原論文の報告値)。
原論文: 岡本涼夏「自治体ごとのふるさと納税の必要性を定義する」2020年度 統計データ分析コンペティション 統計活用奨励賞[高校生の部](慶應義塾湘南藤沢高等部)
数値の扱い: 本ページの相関係数・人口密度はすべて原論文の報告値。図は報告値の可視化または概念図であり、この教材による再計算ではない。
使用ツール(本教材の作図): Python 3(numpy, matplotlib)
統計分析の解釈で初心者がやりがちな勘違いをまとめます。特に「相関と因果の混同」「p値の過信」は研究現場でもよく起きる落とし穴です。本文を読む前にも、読んだ後にも、目を通してみてください。
統計の基本用語を初心者向けに解説します。本文中で見慣れない言葉が出てきたら、ここに戻って確認してください。
統計手法について「何のためか」「結果をどう読むか」を初心者向けに解説します。
この研究をさらに発展させるための3つの方向性を示します。「今回わかったこと(X)」から「次に検証すべき仮説(Y)」を立て、「具体的に何をするか(Z)」まで考えてみましょう。
学んだだけでは身につきません。実際に手を動かすのが最強の学習方法です。本論文のスクリプトをベースに、以下のチャレンジに挑戦してみてください。難易度別に5つ用意しました。
本論文で学んだ手法は、研究の世界だけでなく、行政・企業・NPO の現場でも様々に活用されています。具体的なシーンを紹介します。
この論文を読んで初心者が抱きやすい疑問に、教育的観点から答えます。
この論文を理解できたか、クリックで確認しましょう。間違えても解説が出ます。
このページの分析は、この画面の中でそのまま実行できます。
Python をインストールする必要も、CSV をダウンロードする必要もありません。
下のセルの 「▶ ブラウザで実行」 を上から順に押すか、
「▶ 最初から全部実行」 で一気に流してください。
表示されるのは、本文の図表とまったく同じ計算の結果です
(動かしているのは再現スクリプト code/2020_H4_katsuyo.py そのもの)。
コードは書き換えられます。「✏️ 書き換える」で数字や変数を変えて ▶ を押すと、 結果がどう変わるかをその場で確かめられます(元に戻すボタンつき)。 ページを開いた時点で裏で実行環境の準備が始まっているので、待ち時間はほとんどありません。 初回だけ実行環境の取得にインターネット接続が必要です。