この教材は原論文と同じデータを読み込み、同じ手順で計算し直しています。画面に出る数値と図は、あなたのブラウザがその場で計算した結果です。
⚠ ただし一部は再現していません:旅館とホテルの分離が SSDSE では行えないため、 図1 は合算値による参考再現です。 図2・図3(階級区分図)は地図データが無く再現していません。
| 原論文が使ったデータ | SSDSE-B・衛生行政報告例・宿泊旅行統計調査・湯原町旅館協同組合調べ 分析単位:都道府県 中核手法:相関分析 |
|---|---|
| この教材が使うデータ |
|
| 原論文(PDF) | 旅館及びホテルにおける日本人・外国人宿泊客の都道府県別増減から考える旅館の復活 ―岡山県湯原温泉の視点からインバウンド需要を旅館に取り込む方策― 特別賞/ |
▶ ここに書いてある分析は、ページ下部の「🐍 ブラウザで動かす」でそのまま実行できます(インストール不要)。動かしているのは code/2019_H5_1_shorei.py(252 行)そのものです。
このページの分析を自分で再現するには、以下の手順でデータを準備してください。コードの編集は不要です。
data/raw/ フォルダに入れます。html/figures/ に自動保存されます。
岡山県北部の湯原温泉には宿泊施設が15軒ある。宿泊者数はバブル期の1989年に220,832人だったが、2018年には128,274人まで減少した(湯原町旅館協同組合調べ・原論文の報告値)。著者は湯原温泉の旅館「米屋」の娘として温泉街で生まれ育ち、「日本全体でインバウンド消費が話題になっているのに、湯原温泉にその実感がない」という当事者の問題意識から本研究を出発させている。
まず「旅館」と「ホテル」という宿泊タイプの違いに注目して、都道府県別の宿泊客・客室数の増減を統計的に確かめることが有効だと考えられる。 その理由は「観光客が増えている/いない」という印象論では、どのタイプの宿にどの地域で需要が集まっているのかを見極められないからである。 原論文は公的統計とGIS・相関分析を組み合わせ、湯原温泉の旅館を生き返らせる「地方の旅館再生モデル」を導くことを目指した。
SSDSE-B-2026(実データ) 原論文の報告値(SSDSE-2019B・宿泊旅行統計調査) 相関分析 箱ひげ図 階級区分図(GIS)
| データ | 期間 | 出典 | 原論文での用途 |
|---|---|---|---|
| 旅館営業客室数・ホテル営業客室数 | 2007〜2016年 | SSDSE-2019B(厚生労働省「衛生行政報告例」) | 図1〜4:宿泊タイプ別の増減率・都道府県間格差 |
| 日本人・外国人の延べ宿泊者数、宿泊タイプ別稼働率 | 2007〜2018年 | 宿泊旅行統計調査(国土交通省観光庁) | 図5・6、表1・2:外国人需要と宿泊タイプの関係 |
| 湯原温泉の大人宿泊者数 | 1989〜2018年 | 湯原町旅館協同組合調べ(非公開) | 図7:湯原温泉の長期衰退の確認 |
| 原論文の図表 | 内容 | 本ページでの扱い |
|---|---|---|
| 図1(箱ひげ図) | 旅館・ホテル別客室数増減率のばらつき | 参考再現:SSDSE-B-2026の「ホテルを含む」合算値・2012→2023年で図1を作成(旅館・ホテルの分離は不可) |
| 図2・3(階級区分図) | 旅館・ホテル客室数増減率の地図 | 再現不可(データ・GIS環境なし)→ 集計結果を本文・表で提示、地図は原論文参照 |
| 図4(X-Yグラフ)・表1 | 旅館×ホテル増減率の相関(r=0.421)、稼働率との相関 | 原論文の報告値の可視化(図2):報告された相関係数を棒グラフ化(再計算ではない) |
| 図5(推移) | 日本人・外国人延べ宿泊者数 2007〜2018年 | 実データ再現(図3):SSDSE-B-2026・2012〜2023年で同指標を作図 |
| 表2(相関) | 外国人宿泊増減×宿泊タイプ別増減 | 原論文の報告値の可視化(図2右)+同趣旨の実データ計算(増減数/増減率の比較) |
| 図6(階級区分図) | 都道府県別外国人宿泊客増減 2008→2016年 | 実データ再現+再表現(図4):同一指標を2012→2019年のランキングとして作図 |
| 図7(推移) | 湯原温泉の宿泊者数 1989〜2018年 | 非公開データのため再現不可 → 本文記載の2時点の報告値のみ提示、グラフは原論文参照 |
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | import os import numpy as np import pandas as pd import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt from scipy import stats plt.rcParams['font.family'] = 'Hiragino Sans' plt.rcParams['axes.unicode_minus'] = False plt.rcParams['figure.dpi'] = 150 FIG_DIR = 'html/figures' DATA_B = 'data/raw/SSDSE-B-2026.csv' os.makedirs(FIG_DIR, exist_ok=True) df = pd.read_csv(DATA_B, encoding='cp932', header=1) df = df[df['地域コード'].str.match(r'^R\d{5}', na=False)].copy() df['年度'] = df['年度'].astype(int) cols = ['旅館営業施設数(ホテルを含む)', '旅館営業施設客室数(ホテルを含む)', '延べ宿泊者数', '外国人延べ宿泊者数'] print("収録年度:", df['年度'].min(), "〜", df['年度'].max()) print("2019年の都道府県数:", (df['年度'] == 2019).sum()) print("使用する列:", cols) |
収録年度: 2012 〜 2023 2019年の都道府県数: 47 使用する列: ['旅館営業施設数(ホテルを含む)', '旅館営業施設客室数(ホテルを含む)', '延べ宿泊者数', '外国人延べ宿泊者数']
pd.read_csv(..., encoding='cp932', header=1) — SSDSE-B は1行目が変数コード、2行目が日本語の列名なので header=1 で読み込みます。df['地域コード'].str.match(r'^R\d{5}', ...) — 「R+数字5桁」の行(47都道府県)だけを残します。df.columns で列名を確認しましょう。80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | piv_shisetsu = df.pivot(index='都道府県', columns='年度', values='旅館営業施設数(ホテルを含む)') piv_kyakushitsu = df.pivot(index='都道府県', columns='年度', values='旅館営業施設客室数(ホテルを含む)') chg_shisetsu = (piv_shisetsu[2023] - piv_shisetsu[2012]) / piv_shisetsu[2012] * 100 chg_kyakushitsu = (piv_kyakushitsu[2023] - piv_kyakushitsu[2012]) / piv_kyakushitsu[2012] * 100 print("=== 2012→2023年 増減率(ホテルを含む合算・%) ===") print(f"施設数が減少した都道府県: {(chg_shisetsu < 0).sum()} / 47") print(f"客室数が減少した都道府県: {(chg_kyakushitsu < 0).sum()} / 47") print(f"施設数増減率 中央値: {chg_shisetsu.median():+.1f}%") print(f"客室数増減率 中央値: {chg_kyakushitsu.median():+.1f}%") print(f"客室数増減率 最大: {chg_kyakushitsu.idxmax()} {chg_kyakushitsu.max():+.1f}% / " f"最小: {chg_kyakushitsu.idxmin()} {chg_kyakushitsu.min():+.1f}%") print(f"岡山県: 施設数 {chg_shisetsu['岡山県']:+.1f}% / 客室数 {chg_kyakushitsu['岡山県']:+.1f}%") |
=== 2012→2023年 増減率(ホテルを含む合算・%) === 施設数が減少した都道府県: 42 / 47 客室数が減少した都道府県: 20 / 47 施設数増減率 中央値: -18.2% 客室数増減率 中央値: +2.5% 客室数増減率 最大: 沖縄県 +72.1% / 最小: 高知県 -15.5% 岡山県: 施設数 -16.4% / 客室数 -4.0%
df.pivot(index='都道府県', columns='年度', values=...) — 縦持ちのパネルデータを「行=県、列=年」の表に変形。2時点の比較が1行で書けるようになります。原論文はまず、SSDSE-2019B の2007〜2016年データで「旅館営業客室数」と「ホテル営業客室数」の都道府県別増減率を箱ひげ図(図1)と階級区分図(図2・3)で比較した。
図1(参考再現・実データ):SSDSE-B-2026「旅館営業施設数/客室数(ホテルを含む)」の2012→2023年増減率(47都道府県)。現行SSDSEでは旅館とホテルを分離できないため、原論文の図1(旅館・ホテル別、2007→2016年)とは定義・期間が異なる。原論文の図1そのものは原論文を参照。
ここまでで「旅館は減り、ホテルは増える」という全国構造が見えた。では、旅館の増減とホテルの増減は無関係なのか、それとも連動しているのか——原論文は次に散布図と相関分析で確かめる。
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | fig, ax = plt.subplots(figsize=(8, 6)) bp = ax.boxplot([chg_shisetsu.values, chg_kyakushitsu.values], tick_labels=['施設数の増減率', '客室数の増減率'], patch_artist=True, widths=0.45, medianprops=dict(color='#C62828', linewidth=2)) for patch, c in zip(bp['boxes'], ['#90CAF9', '#1565C0']): patch.set_facecolor(c) patch.set_alpha(0.85) ax.axhline(0, color='#555', linewidth=1, linestyle='--') ax.set_ylabel('2012→2023年 増減率(%)') ax.set_title('図1(参考再現): 宿泊施設数・客室数の増減率のばらつき(47都道府県)\n' 'SSDSE-B-2026「旅館営業施設数/客室数(ホテルを含む)」\n' '※原論文(図1)は SSDSE-2019B で旅館とホテルを分離・2007→2016年', fontsize=11) ax.grid(axis='y', alpha=0.3) plt.tight_layout() plt.savefig(f'{FIG_DIR}/2019_H5_1_fig1.png', bbox_inches='tight') plt.close() print('図1 保存: 2019_H5_1_fig1.png') |
図1 保存: 2019_H5_1_fig1.png
ax.boxplot([...]) — 47都道府県の増減率の分布を箱ひげ図で比較します。箱の下端・上端が第1・第3四分位数、中の赤線が中央値です。ax.axhline(0, ...) で0%の基準線を引くと「増加か減少か」がひと目で判断できます。原論文は、X軸に旅館営業客室数の増減率、Y軸にホテル営業客室数の増減率をとった散布図(X-Yグラフ)を描き、相関係数 0.421(有意確率0.3%)の有意な正の関係を報告した(原論文の報告値)。さらに散布図上の位置から都道府県を3グループに分けて考察している。
| グループ | 該当する都道府県 | 原論文の解釈 |
|---|---|---|
| A(ホテルが特化的に増加) | 三重県・長崎県 | 2007年時点のホテル客室数が少なく(三重5,956室・長崎3,795室)、伊勢志摩サミット(2016年)や長崎港・佐世保港への外国クルーズ船寄港で需要が急増した |
| B(全国的な標準型) | 37道県 | 旅館客室数は減少し、ホテル客室数は増える——日本全体の標準的な構図 |
| C(旅館もホテルも増加) | 東京・大阪・福岡の都市圏の各都府県、沖縄県 | 都市型・海洋リゾートの観光資源と人口・空港などの交通インフラを持ち、宿泊需要が大きい |
※散布図の原データ(旅館・ホテル別の県別増減率)は現行SSDSEに未収録のため、X-Yグラフの再現図は作成していない。グラフは原論文の図4を参照。
原論文は、旅館営業施設客室数の増減(2007→2016年)と、2008年・2016年の宿泊タイプ別客室稼働率との相関を SPSS で計算した。旅館の稼働率とは有意な相関がない一方、リゾート・ビジネス・シティホテルの稼働率とはいずれも有意確率1%未満で有意な正の相関だった(下表・原論文の報告値)。
| 相関の相手(稼働率) | 2008年 | 2016年 |
|---|---|---|
| 旅館 | 0.320(有意でない) | 0.225(有意でない) |
| リゾートホテル | 0.530 ** | 0.662 ** |
| ビジネスホテル | 0.477 ** | 0.438 ** |
| シティホテル | 0.492 ** | 0.492 ** |
**:有意確率1%未満で有意。表の数値はすべて原論文(表1)の報告値であり、本ページで再計算したものではない。
図2(原論文の報告値の可視化・再計算ではない):原論文の表1(左)と表2(右)が報告した相関係数を棒グラフ化したもの。青=有意確率1%未満で有意、灰色=有意でない。
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 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 | # 以下の相関係数はすべて【原論文の報告値】であり、本スクリプトで再計算したものではない。 # 原データ: SSDSE-2019B(衛生行政報告例)・宿泊旅行統計調査(2008年・2016年) paper_t1 = { # 原論文 表1: 旅館営業施設客室数増減(2007→2016)× 宿泊タイプ別稼働率 '2008年 旅館稼働率': (0.320, False), '2008年 リゾートホテル稼働率': (0.530, True), '2008年 ビジネスホテル稼働率': (0.477, True), '2008年 シティホテル稼働率': (0.492, True), '2016年 旅館稼働率': (0.225, False), '2016年 リゾートホテル稼働率': (0.662, True), '2016年 ビジネスホテル稼働率': (0.438, True), '2016年 シティホテル稼働率': (0.492, True), } paper_t2 = { # 原論文 表2: 外国人延べ宿泊者数増減(2008→2016)× 宿泊タイプ別の増減 '旅館': (0.150, False), 'リゾートホテル': (0.325, False), 'ビジネスホテル': (0.620, True), 'シティホテル': (0.545, True), } fig, axes = plt.subplots(1, 2, figsize=(12.5, 5.5)) for ax, d, ttl in zip( axes, [paper_t1, paper_t2], ['表1: 旅館営業施設客室数増減と\n宿泊タイプ別稼働率の相関', '表2: 外国人延べ宿泊者数増減と\n宿泊タイプ別増減の相関']): labels = list(d.keys())[::-1] vals = [d[k][0] for k in labels] sig = [d[k][1] for k in labels] colors = ['#1565C0' if s else '#B0BEC5' for s in sig] bars = ax.barh(labels, vals, color=colors) for b, v, s in zip(bars, vals, sig): ax.text(v + 0.012, b.get_y() + b.get_height()/2, f'{v:.3f}' + ('**' if s else ''), va='center', fontsize=10) ax.set_xlim(0, 0.8) ax.set_xlabel('相関係数(原論文の報告値)') ax.set_title(ttl, fontsize=11) ax.grid(axis='x', alpha=0.3) fig.suptitle('図2: 原論文(表1・表2)が報告した相関係数の可視化 ' '(**=有意確率1%未満、灰色=有意でない)\n' '※本図は原論文の報告値をそのまま図示したものであり、再計算ではない', fontsize=12) plt.tight_layout(rect=[0, 0, 1, 0.90]) plt.savefig(f'{FIG_DIR}/2019_H5_1_fig2.png', bbox_inches='tight') plt.close() print('図2 保存: 2019_H5_1_fig2.png(原論文の報告値の可視化)') |
図2 保存: 2019_H5_1_fig2.png(原論文の報告値の可視化)
原論文は宿泊旅行統計調査(2007〜2018年)から日本人・外国人の延べ宿泊者数の推移を確認した(原論文 図5)。2009年まで3億人泊程度だった全体の宿泊者数は2018年に5億人泊を超え、2012年以降は日本人の伸びが鈍化する一方で外国人の伸びが著しい——ここから「外国人宿泊客を取り込むことが旅館の宿泊客を増やすことにつながる」と論じる。
図3(実データ再現):SSDSE-B-2026による日本人・外国人の延べ宿泊者数の全国推移(2012〜2023年)。原論文の図5(宿泊旅行統計調査・2007〜2018年)と同一指標だが、収録期間・集計定義が異なる。外国人は2012→2019年で4.25倍に増え、コロナ禍(2020〜21年)でほぼ消失した後、2023年にコロナ前水準近くまで回復した。
原論文の核心となる分析。2008→2016年の外国人延べ宿泊者数の増減と、宿泊タイプ別の増減との相関を計算した(下表・原論文の報告値)。
| 宿泊タイプ | 外国人延べ宿泊者数増減との相関係数 |
|---|---|
| 旅館 | 0.150(有意でない) |
| リゾートホテル | 0.325(有意でない) |
| ビジネスホテル | 0.620 ** |
| シティホテル | 0.545 ** |
**:有意確率1%未満。数値は原論文(表2)の報告値。
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | nat = df.groupby('年度')[['延べ宿泊者数', '外国人延べ宿泊者数']].sum() nat['日本人延べ宿泊者数'] = nat['延べ宿泊者数'] - nat['外国人延べ宿泊者数'] nat_man = nat / 10000 # 万人泊 print("=== 全国の延べ宿泊者数(万人泊) ===") for y in [2012, 2019, 2020, 2023]: print(f"{y}年 日本人 {nat_man.loc[y, '日本人延べ宿泊者数']:,.0f} " f"外国人 {nat_man.loc[y, '外国人延べ宿泊者数']:,.0f}") r1219 = nat.loc[2019, '外国人延べ宿泊者数'] / nat.loc[2012, '外国人延べ宿泊者数'] print(f"外国人延べ宿泊者数 2012→2019年: {r1219:.2f}倍(+{(r1219-1)*100:.0f}%)") fig, ax = plt.subplots(figsize=(9.5, 5.5)) ax.plot(nat_man.index, nat_man['日本人延べ宿泊者数'], marker='o', color='#1565C0', label='日本人(延べ−外国人)') ax.plot(nat_man.index, nat_man['外国人延べ宿泊者数'], marker='s', color='#E65100', label='外国人') ax.axvspan(2020, 2021, color='#FFCDD2', alpha=0.4) ax.text(2020.5, nat_man['日本人延べ宿泊者数'].max()*0.55, 'コロナ禍', ha='center', color='#C62828', fontsize=11) ax.set_xlabel('年') ax.set_ylabel('延べ宿泊者数(万人泊)') ax.set_title('図3(実データ再現): 日本人・外国人の延べ宿泊者数の推移(全国計)\n' 'SSDSE-B-2026・2012〜2023年 ※原論文(図5)は宿泊旅行統計調査 2007〜2018年', fontsize=11) ax.legend() ax.grid(alpha=0.3) plt.tight_layout() plt.savefig(f'{FIG_DIR}/2019_H5_1_fig3.png', bbox_inches='tight') plt.close() print('図3 保存: 2019_H5_1_fig3.png') |
=== 全国の延べ宿泊者数(万人泊) === 2012年 日本人 33,612 外国人 2,382 2019年 日本人 39,967 外国人 10,131 2020年 日本人 25,074 外国人 1,589 2023年 日本人 40,488 外国人 9,503 外国人延べ宿泊者数 2012→2019年: 4.25倍(+325%) 図3 保存: 2019_H5_1_fig3.png
df.groupby('年度')[cols].sum() — 47都道府県を合計して全国値を作ります。原論文は2008→2016年の都道府県別外国人宿泊客増減をMANDARAの階級区分図(地図)で示した。増加率が高いのは香川県の812%と鳥取県の574%(原論文の報告値)。香川県は高松空港がソウル・香港・上海とLCCで結ばれ、鳥取県は境港に多数の豪華客船が寄港している——海外から直接その県に入れる交通手段が伸びの要因と原論文は考察する。一方、原発事故のあった福島県はマイナスだった。
岡山県の増加率は268%(原論文の報告値)と両隣県には及ばないものの大きく伸びた。しかし、岡山県北部の湯原温泉にはその恩恵が見られない——これが原論文の課題設定である。
図4(実データ再現・地図をランキングに再表現):SSDSE-B-2026による都道府県別の外国人延べ宿泊者数増減率(2012→2019年・コロナ前)。原論文の図6(2008→2016年の階級区分図)と同一指標を、期間を変えてランキング形式で再表現したもの。赤=原論文が注目した香川県・鳥取県、橙=岡山県、紫=福島県。原論文の地図そのものは原論文を参照。
| 年 | 湯原温泉の宿泊者数(原論文の報告値) |
|---|---|
| 1989年(バブル期) | 220,832 人 |
| 2018年 | 128,274 人(1989年比 −41.9%) |
出典:湯原町旅館協同組合調べ(非公開データ)。1989〜2018年の推移グラフは原論文の図7を参照(本ページでは2時点の報告値以外を提示しない)。全国で外国人宿泊客が急増した期間にも、湯原温泉では外国人宿泊増加の影響が見られない、と原論文は指摘する。
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | piv_gaikoku = df.pivot(index='都道府県', columns='年度', values='外国人延べ宿泊者数') chg_gaikoku = ((piv_gaikoku[2019] - piv_gaikoku[2012]) / piv_gaikoku[2012] * 100).sort_values() print("=== 外国人延べ宿泊者数 増減率 2012→2019年(コロナ前・%) ===") print("上位5県:") for p, v in chg_gaikoku.tail(5)[::-1].items(): print(f" {p}: +{v:,.0f}%") print("下位3県:") for p, v in chg_gaikoku.head(3).items(): print(f" {p}: {v:+,.0f}%") print(f"岡山県: +{chg_gaikoku['岡山県']:,.0f}%(全国 {int((chg_gaikoku.rank(ascending=False))['岡山県'])} 位)") # 原論文 表2 の趣旨の実データ版: 外国人宿泊の増減と客室数の増減の相関(同期間) # 「増減数(絶対数)」と「増減率」の両方で計算し、結果の違いを確認する diff_gaikoku = piv_gaikoku[2019] - piv_gaikoku[2012] diff_kyaku = piv_kyakushitsu[2019] - piv_kyakushitsu[2012] r_n, p_n = stats.pearsonr(diff_gaikoku, diff_kyaku.reindex(diff_gaikoku.index)) chg_kyaku1219 = (piv_kyakushitsu[2019] - piv_kyakushitsu[2012]) / piv_kyakushitsu[2012] * 100 r_r, p_r = stats.pearsonr(chg_gaikoku.reindex(chg_kyaku1219.index), chg_kyaku1219) print("外国人宿泊の増減 × 客室数の増減(2012→2019, ホテルを含む合算):") print(f" 増減数どうし: r = {r_n:.3f}, p = {p_n:.5f} ← 県の規模に引っ張られて強い正") print(f" 増減率どうし: r = {r_r:.3f}, p = {p_r:.4f} ← 規模の影響を除くとほぼ無相関") highlight = {'香川県': '#C62828', '鳥取県': '#C62828', '岡山県': '#E65100', '福島県': '#6A1B9A'} colors = [highlight.get(p, '#90A4AE') for p in chg_gaikoku.index] fig, ax = plt.subplots(figsize=(9, 12)) ax.barh(chg_gaikoku.index, chg_gaikoku.values, color=colors) for p in highlight: v = chg_gaikoku[p] ax.text(v + 15, list(chg_gaikoku.index).index(p), f'{p} +{v:,.0f}%', va='center', fontsize=10, color=highlight[p], fontweight='bold') ax.set_xlabel('外国人延べ宿泊者数 増減率 2012→2019年(%)') ax.set_title('図4(実データ再現): 都道府県別 外国人延べ宿泊者数の増減率ランキング\n' 'SSDSE-B-2026・2012→2019年(コロナ前) ' '※原論文(図6)は宿泊旅行統計調査 2008→2016年の階級区分図', fontsize=11) ax.grid(axis='x', alpha=0.3) ax.tick_params(axis='y', labelsize=9) plt.tight_layout() plt.savefig(f'{FIG_DIR}/2019_H5_1_fig4.png', bbox_inches='tight') plt.close() print('図4 保存: 2019_H5_1_fig4.png') |
=== 外国人延べ宿泊者数 増減率 2012→2019年(コロナ前・%) === 上位5県: 香川県: +1,372% 佐賀県: +764% 青森県: +757% 奈良県: +726% 山形県: +690% 下位3県: 長崎県: +106% 宮崎県: +119% 埼玉県: +122% 岡山県: +575%(全国 9 位) 外国人宿泊の増減 × 客室数の増減(2012→2019, ホテルを含む合算): 増減数どうし: r = 0.943, p = 0.00000 ← 県の規模に引っ張られて強い正 増減率どうし: r = -0.019, p = 0.8989 ← 規模の影響を除くとほぼ無相関 図4 保存: 2019_H5_1_fig4.png
242 243 244 245 246 247 248 249 250 251 | # 湯原温泉の宿泊者数は「湯原町旅館協同組合調べ」の非公開データのため再現不可。 # 原論文本文が明記した2時点の値のみを示す(推移グラフは原論文の図7を参照)。 yubara_1989 = 220832 # 原論文の報告値(バブル期のピーク) yubara_2018 = 128274 # 原論文の報告値 chg = (yubara_2018 - yubara_1989) / yubara_1989 * 100 print("=== 湯原温泉の宿泊者数(原論文の報告値・湯原町旅館協同組合調べ) ===") print(f"1989年: {yubara_1989:,} 人") print(f"2018年: {yubara_2018:,} 人") print(f"増減率: {chg:.1f}%(約30年でほぼ半減。推移グラフは原論文の図7を参照)") print("\n完了: 図は html/figures/ に保存されました") |
=== 湯原温泉の宿泊者数(原論文の報告値・湯原町旅館協同組合調べ) === 1989年: 220,832 人 2018年: 128,274 人 増減率: -41.9%(約30年でほぼ半減。推移グラフは原論文の図7を参照) 完了: 図は html/figures/ に保存されました
| データ | 出典・説明 |
|---|---|
| SSDSE-B-2026(都道府県別・時系列) | 独立行政法人統計センター SSDSE(教育用標準データセット)— 旅館営業施設数・客室数(ホテルを含む)、延べ宿泊者数、外国人延べ宿泊者数(2012〜2023年) |
| 原論文使用データ(本ページ未収録) | SSDSE-2019B(旅館・ホテル別客室数)、宿泊旅行統計調査の2008・2016年集計(稼働率・宿泊タイプ別増減)、湯原町旅館協同組合調べ(非公開)— これらに基づく数値は「原論文の報告値」として引用 |
本教育用コードの図1・3・4は SSDSE-B-2026 の実データ、図2は原論文の報告値の可視化(再計算ではない)。合成データによる数値の捏造は一切行っていない。
この論文(と本ページの再現)を読むときに初心者がやりがちな勘違いをまとめます。特に「増減率の読み方」と「相関と因果の混同」は、観光統計を扱うときの定番の落とし穴です。
この論文の理解に必要な用語を初心者向けに解説します。本文中で見慣れない言葉が出てきたら、ここに戻って確認してください。
原論文が使った手法について「何のためか」「結果をどう読むか」を初心者向けに解説します。
この研究をさらに発展させるための3つの方向性を示します。「今回わかったこと(X)」から「次に検証すべき仮説(Y)」を立て、「具体的に何をするか(Z)」まで考えてみましょう。
学んだだけでは身につきません。実際に手を動かすのが最強の学習方法です。本論文のスクリプトをベースに、以下のチャレンジに挑戦してみてください。難易度別に5つ用意しました。
本論文で学んだ「宿泊タイプ別×地域別の増減分析」と相関分析は、観光・地域づくりの現場で日常的に使われています。具体的なシーンを紹介します。
この論文を読んで初心者が抱きやすい疑問に、教育的観点から答えます。
scipy.stats.pearsonr で1行、地図の代わりのランキングも棒グラフで作れます。MANDARA自体も無料公開されているので、地図に挑戦したい人はそちらもどうぞ。この論文を理解できたか、クリックで確認しましょう。間違えても解説が出ます。
このページの分析は、この画面の中でそのまま実行できます。
Python をインストールする必要も、CSV をダウンロードする必要もありません。
下のセルの 「▶ ブラウザで実行」 を上から順に押すか、
「▶ 最初から全部実行」 で一気に流してください。
表示されるのは、本文の図表とまったく同じ計算の結果です
(動かしているのは再現スクリプト code/2019_H5_1_shorei.py そのもの)。
コードは書き換えられます。「✏️ 書き換える」で数字や変数を変えて ▶ を押すと、 結果がどう変わるかをその場で確かめられます(元に戻すボタンつき)。 ページを開いた時点で裏で実行環境の準備が始まっているので、待ち時間はほとんどありません。 初回だけ実行環境の取得にインターネット接続が必要です。