この教材は原論文と同じデータを読み込み、同じ手順で計算し直しています。画面に出る数値と図は、あなたのブラウザがその場で計算した結果です。
| 原論文が使ったデータ | SSDSE-B・SSDSE-C・SSDSE-D・e-stat・学習に対する意識調査質問紙・全国学力調査 分析単位:都道府県 中核手法:決定木分析・K-means法・クラスタリング分析 |
|---|---|
| この教材が使うデータ |
|
| 原論文(PDF) | 教育における芸術の影響 How Art and Arts Can Influence Learning 特別賞/梶田 朱音(慶應義塾大学大学院健康マネジメント研究科) 松山 晃之(株式会社 J Institute) |
原論文と同じ粒度のデータは、この教材にも同梱しています。これを読み込めば、原論文と同じ細かさで分析をやり直せます(下の「🐍 ブラウザで動かす」でコードを書き換えて試せます)。ただし原論文が使った項目がすべて収録されているとは限りません。足りない項目は、上の「できないこと」に書いた出典から取ってくる必要があります。
▶ ここに書いてある分析は、ページ下部の「🐍 ブラウザで動かす」でそのまま実行できます(インストール不要)。動かしているのは code/2021_U5_5_shorei.py(315 行)そのものです。
このページのK-means法(図4)と教養娯楽費率ランキング(図5)は、以下の手順で自分で再現できます。コードの編集は不要です。(概念図=図1、決定木の寄与=図2・図3は、全国学力調査の点数や博物館・映画館数などSSDSE-Bに無いデータに基づくため、原論文の報告値を可視化します。)
data/raw/ フォルダに入れます。html/figures/ に自動保存されます。
Society 5.0 で科学技術に貢献する人材を育てるSTEM教育(Science・Technology・Engineering・Mathematics)に、純粋・大衆芸術を意味する「Art」や人文を意味する「Arts」を加えた概念がSTEAM教育である。芸術的な要素が全教科、ひいては子どもの学力や知性そのものに影響するという考え方だが、どのような芸術が学力に有用に働くのかは明らかでなく、専門家の間でも意見が分かれる。
そこで著者は、STEAM教育が重視する「芸術」「人文」を、より包括的に「芸術を含む文化」や、芸術的感性を育む資源としての「地域特性」「地域の環境」と捉え直した。既存研究で学力と関連が示された家庭・個人の因子に加え、博物館数・映画館数などの芸術資源を説明変数とし、目的変数に全国学力調査(2018年度・小学生)の教科別平均点を用いて分析した。
大学生・一般の部 全国学力調査(小学生・2018) K-means法 決定木(回帰木) STEAM教育
著者は、地域環境・地域特性を表す変数としてSSDSE-B(2018年)を、芸術・人文・文化や家庭に関する変数としてSSDSE-C・SSDSE-Dを用いた。芸術変数にはe-Statから自然・芸術施設(博物館・美術館・常設映画館・動植物園・図書館など)を追加。個人変数として学習に対する意識調査(例:地域社会への関心)を、目的変数として全国学力調査の小学生・教科別平均点(2018年度)を用いた。
| 区分 | 主な変数(原論文の報告) |
|---|---|
| 芸術変数 | 博物館数・美術博物館数・常設映画館数・図書館数・動植物園数(人口110万人あたり)、自然公園面積割合・森林面積割合、人文学(英語/英語以外の外国語/人文・社会・自然科学) |
| 家庭変数 | 起床時間・就寝時間、朝食頻度、余暇の過ごし方(学習・スポーツ・ボランティア・旅行/行楽)、食習慣(穀類・魚介・肉・野菜・調味料・飲料・酒類・外食)、世帯人員、一人当たり県民所得 |
| 個人変数 | 学習に対する意識調査(家庭学習、地域社会への関心 など) |
| 目的変数 | 全国学力調査 小学生 教科別平均点(国語A・国語B・算数A・算数B・理科, 2018年度) |
各データとクラスター中心との距離を比較して各都道府県をグループに割り当てる教師なし学習。地域特性の似た都道府県をまとめ、その所属クラスターを質的変数として決定木に投入する。クラスター数は立方クラスタリング基準(Cubic Clustering Criterion)で決定した(原論文は8クラスター)。
説明変数を二進分岐させて木を成長させる、可読性の高い手法。目的変数が連続量(テスト平均点)のため回帰木を用い、分岐の基準に平方和の分解を使う。親ノードの偏差平方和 SS から子ノードの偏差平方和の和 SSTW を引いた SSTB=SS−SSTW が最大になる変数で分岐する。成長のストップルールはAICc が最小になる点とした。ソフトウェアはJMPを使用。
著者は、地理的環境が地域特性を育み、そのなかで家族が生活し個人が成長していく——という相互作用を概念図(原論文 図1)にまとめた。これはデータの再計算ではなく、原論文が示した概念の転記である。
国語A(慣用句・漢字・敬語などの知識)の回帰木で、各変数がどれだけ分岐に寄与したか(列の寄与=平方和)を、原論文 図5 の印字値から転記する。全国学力調査の点数がSSDSE-Bに無いため再計算はできない。
87 88 89 90 91 92 93 94 95 96 | kokugoA_contrib = { '地域社会への関心': {'分岐数': 1, '平方和': 79.8}, '世帯人員': {'分岐数': 2, '平方和': 29.9}, '酒類': {'分岐数': 1, '平方和': 25.6}, } print('原論文 図5(国語A・回帰木)R²=0.63, N=47(PDF図中の印字値)') print(f'{"変数":<12}{"分岐数":>6}{"平方和(寄与)":>12}') for k, v in kokugoA_contrib.items(): print(f'{k:<12}{v["分岐数"]:>6}{v["平方和"]:>12}') print('※ これらは原論文の報告値の転記であり、本スクリプトで計算した値ではない。') |
=== [2] 原論文 図5:国語A 回帰木の「列の寄与」を転記【報告値の可視化・再計算ではない】 === 原論文 図5(国語A・回帰木)R²=0.63, N=47(PDF図中の印字値) 変数 分岐数 平方和(寄与) 地域社会への関心 1 79.8 世帯人員 2 29.9 酒類 1 25.6 ※ これらは原論文の報告値の転記であり、本スクリプトで計算した値ではない。
国語A・国語B・算数A・算数B・理科の各回帰木で、最も寄与した変数を原論文 第3章から転記する。特徴的なのは算数A(基礎)で「絵画・彫刻の制作」が最上位だったことである。
102 103 104 105 106 107 108 109 110 111 112 | subject_top = [ ('国語A(基礎)', '地域社会への関心', '知識中心。高関心地域で高得点。上位7地域中6がクラスター6'), ('国語B(応用)', '地域社会への関心', '次いで「英語以外の言語」「人口あたり常設映画館数」が寄与'), ('算数A(基礎)', '絵画・彫刻の制作', '最も寄与率の高い変数。手作業を伴う芸術が関与'), ('算数B(応用)', '地域社会への関心', 'R²=0.5 と当てはまりは弱い。次いで常設映画館数'), ('理科', '地域社会への関心', '地域社会への関心・常設映画館数・絵画彫刻の制作が寄与'), ] print(f'{"教科":<14}{"最上位の寄与変数":<16}補足(PDF本文の記述)') for s, top, note in subject_top: print(f'{s:<14}{top:<16}{note}') print('※ すべて原論文(PDF)の報告値。SSDSE-B に学力調査点数が無いため再計算不可。') |
=== [3] 各教科 回帰木の主要寄与変数を転記【報告値の可視化・再計算ではない】 === 教科 最上位の寄与変数 補足(PDF本文の記述) 国語A(基礎) 地域社会への関心 知識中心。高関心地域で高得点。上位7地域中6がクラスター6 国語B(応用) 地域社会への関心 次いで「英語以外の言語」「人口あたり常設映画館数」が寄与 算数A(基礎) 絵画・彫刻の制作 最も寄与率の高い変数。手作業を伴う芸術が関与 算数B(応用) 地域社会への関心 R²=0.5 と当てはまりは弱い。次いで常設映画館数 理科 地域社会への関心 地域社会への関心・常設映画館数・絵画彫刻の制作が寄与 ※ すべて原論文(PDF)の報告値。SSDSE-B に学力調査点数が無いため再計算不可。
以下はすべて原論文の報告値である。
| 教科 | 最も寄与した変数 | 著者の記述 |
|---|---|---|
| 算数A(基礎) | 絵画・彫刻の制作 | 手作業を伴う芸術が最上位。制作時間が少ない地域では家庭学習時間が高得点に寄与 |
| 国語A(基礎) | 地域社会への関心 | R²=0.63。上位7地域中6がクラスター6 |
| 国語B(応用) | 地域社会への関心 | 次いで「英語以外の言語」「人口あたり常設映画館数」が寄与 |
| 算数B(応用) | 地域社会への関心 | R²=0.5と当てはまりは弱い。次いで常設映画館数 |
| 理科 | 地域社会への関心 | 常設映画館数・絵画彫刻の制作も寄与 |
クラスター分析では、秋田・石川・福井・富山はどの教科でも平均点が高く、いずれもクラスター6に分類され、地域社会への関心が相対的に高い地域であった(報告値)。ただし著者は「地域社会への関心が高いから成績が良い」という因果関係は導き出せないと明記している。
原論文の中核データ(全国学力調査の点数・博物館数など)はSSDSE-Bに無い。しかし原論文の中核手法であるK-means法は、SSDSE-Bの文化・教育・生活変数で手法として実演できる。まず読み込んで代理変数を作る。
header=1 で読み込み、地域コードが R+5桁の都道府県行の2023年を残す。原論文の芸術・家庭・個人変数はSSDSE-Bに無いため、教養娯楽費率・教育費率・高齢化率・年少人口率・高校進学率・児童教員比という代理変数を作る。55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | df_b = pd.read_csv(DATA_B, encoding='cp932', header=1) df_b = df_b[df_b['地域コード'].astype(str).str.match(r'^R\d{5}', na=False)].copy() df_b['年度'] = df_b['年度'].astype(int) df = df_b[df_b['年度'] == 2023].copy().reset_index(drop=True) assert len(df) == 47, f'47都道府県が揃っていません: {len(df)}件' print(f'対象年: 2023年 / 対象都道府県数: {len(df)}') pop = df['総人口'] # 文化への関与(原論文の「芸術を含む文化」の代理): 消費支出に占める教養娯楽費の割合 df['教養娯楽費率'] = df['教養娯楽費(二人以上の世帯)'] / df['消費支出(二人以上の世帯)'] * 100 # 教育への支出(家庭の教育熱の代理) df['教育費率'] = df['教育費(二人以上の世帯)'] / df['消費支出(二人以上の世帯)'] * 100 # 人口構成 df['高齢化率'] = df['65歳以上人口'] / pop * 100 df['年少人口率'] = df['15歳未満人口'] / pop * 100 # 進学志向(教育環境の代理) df['高校進学率'] = df['高等学校卒業者のうち進学者数'] / df['高等学校卒業者数'] * 100 # 学校の手厚さ(小学校の教員1人あたり児童数:小さいほど手厚い) df['児童教員比'] = df['小学校児童数'] / df['小学校教員数'] FEATURES = ['教養娯楽費率', '教育費率', '高齢化率', '年少人口率', '高校進学率', '児童教員比'] print('\n投入する代理変数(原論文の芸術・家庭・個人変数はSSDSE-B未収録のため代理):') print(' ', '、'.join(FEATURES)) print('\n記述統計(平均・最小・最大):') print(df[FEATURES].describe().loc[['mean', 'min', 'max']].round(2).T.to_string()) |
=== [1] SSDSE-B の読み込みと文化・教育・生活の代理変数づくり【実再現】 ===
対象年: 2023年 / 対象都道府県数: 47
投入する代理変数(原論文の芸術・家庭・個人変数はSSDSE-B未収録のため代理):
教養娯楽費率、教育費率、高齢化率、年少人口率、高校進学率、児童教員比
記述統計(平均・最小・最大):
mean min max
教養娯楽費率 9.23 7.01 12.00
教育費率 3.19 1.59 7.08
高齢化率 31.59 22.75 39.06
年少人口率 11.47 9.08 16.08
高校進学率 57.56 46.69 74.12
児童教員比 13.25 10.51 17.10KMeansでクラスタリングする。クラスター数kごとのシルエット係数を実計算で示し、原論文の多クラスター型地域類型に倣ってk=6を採用する。原論文の「K-means法による地域特性のクラスタリング」を手法として実演する。118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | X = StandardScaler().fit_transform(df[FEATURES].values) print('クラスター数kごとのシルエット係数(数値は実データによる再計算):') for k in range(2, 9): km = KMeans(n_clusters=k, n_init=10, random_state=42).fit(X) print(f' k={k}: silhouette={silhouette_score(X, km.labels_):.3f}') K = 6 # 原論文の多クラスター型地域類型(8クラスター)に倣った説明用の設定 km = KMeans(n_clusters=K, n_init=10, random_state=42).fit(X) df['クラスター'] = km.labels_ sil = silhouette_score(X, km.labels_) print(f'\n採用: k={K}(原論文の地域類型の考え方に倣った説明用。silhouette={sil:.3f})') print('※ 投入変数が原論文(博物館数・地域社会への関心等)と異なるため、') print(' クラスター構成は原論文の表4とは一致しない(手法の実演であり報告値の再現ではない)。') print('\n実再現によるクラスター構成(2023年・SSDSE-B代理変数):') for c in range(K): members = list(df[df['クラスター'] == c]['都道府県']) print(f' クラスター{c+1}(n={len(members)}): {"、".join(members)}') # 各クラスターの平均像 print('\n各クラスターの平均像(代理変数):') prof = df.groupby('クラスター')[FEATURES].mean().round(2) prof.index = [f'クラスター{c+1}' for c in prof.index] print(prof.to_string()) |
=== [4] K-means法:47都道府県を文化・教育・生活の代理変数でクラスタリング【実再現(手法の実演)】 ===
クラスター数kごとのシルエット係数(数値は実データによる再計算):
k=2: silhouette=0.370
k=3: silhouette=0.363
k=4: silhouette=0.276
k=5: silhouette=0.205
k=6: silhouette=0.225
k=7: silhouette=0.202
k=8: silhouette=0.220
採用: k=6(原論文の地域類型の考え方に倣った説明用。silhouette=0.225)
※ 投入変数が原論文(博物館数・地域社会への関心等)と異なるため、
クラスター構成は原論文の表4とは一致しない(手法の実演であり報告値の再現ではない)。
実再現によるクラスター構成(2023年・SSDSE-B代理変数):
クラスター1(n=8): 鳥取県、島根県、佐賀県、長崎県、熊本県、大分県、宮崎県、鹿児島県
クラスター2(n=9): 千葉県、石川県、愛知県、滋賀県、京都府、大阪府、兵庫県、奈良県、福岡県
クラスター3(n=3): 埼玉県、東京都、神奈川県
クラスター4(n=1): 沖縄県
クラスター5(n=13): 宮城県、茨城県、栃木県、群馬県、福井県、山梨県、長野県、岐阜県、静岡県、三重県、岡山県、広島県、香川県
クラスター6(n=13): 北海道、青森県、岩手県、秋田県、山形県、福島県、新潟県、富山県、和歌山県、山口県、徳島県、愛媛県、高知県
各クラスターの平均像(代理変数):
教養娯楽費率 教育費率 高齢化率 年少人口率 高校進学率 児童教員比
クラスター1 8.45 2.45 33.54 12.36 49.77 12.23
クラスター2 10.01 4.33 28.85 11.75 65.37 14.42
クラスター3 11.27 6.03 25.36 11.08 69.77 16.71
クラスター4 7.36 2.53 23.84 16.08 46.69 15.01
クラスター5 9.29 2.96 31.04 11.42 58.60 13.36
クラスター6 8.77 2.49 34.85 10.51 53.91 12.04
原論文は「博物館・映画館など生活に根差した文化資源」が学力に関係する可能性を論じた。その「文化への関与」の地域差を、家計の教養娯楽費率で実データから確かめる。
146 147 148 149 150 151 152 153 154 | rank = df.sort_values('教養娯楽費率', ascending=False).reset_index(drop=True) print('上位6(文化・娯楽への支出割合が高い):') for i in range(6): print(f' {i+1:>2}位 {rank.loc[i, "都道府県"]:<6} {rank.loc[i, "教養娯楽費率"]:.2f}%') print('下位6(低い):') for i in range(len(rank) - 6, len(rank)): print(f' {i+1:>2}位 {rank.loc[i, "都道府県"]:<6} {rank.loc[i, "教養娯楽費率"]:.2f}%') print('※ 文化・娯楽への支出割合は都市部に集中する傾向。原論文が論じた') print(' 「生活に根差した大衆文化への関与」の地域差を実データで補足するもの。') |
=== [5] 教養娯楽費率(消費支出に占める割合)の都道府県ランキング【実再現】 === 上位6(文化・娯楽への支出割合が高い): 1位 神奈川県 12.00% 2位 東京都 11.83% 3位 兵庫県 10.52% 4位 石川県 10.44% 5位 千葉県 10.32% 6位 愛知県 10.27% 下位6(低い): 42位 岐阜県 8.08% 43位 富山県 7.91% 44位 青森県 7.83% 45位 宮崎県 7.62% 46位 沖縄県 7.36% 47位 長崎県 7.01% ※ 文化・娯楽への支出割合は都市部に集中する傾向。原論文が論じた 「生活に根差した大衆文化への関与」の地域差を実データで補足するもの。
算数A(基礎)で「絵画・彫刻の制作」が、理科でも絵画彫刻の制作が寄与したことから、著者は「芸術が本当に教育に有用に働くのか?」という問いに対し、現在の学業成績指標においては手作業を伴う芸術が関係する可能性が示唆されたと結論する。これは古くからある労作教育に通じる結果であり、日本でSTEAM教育を運用する際の「A」に活用できる部分だと述べる。
美術館数(純粋芸術=fine art の環境)よりも、博物館数・映画館数のように大衆的に親しまれる文化資源が多くの教科に現れた。ここから著者は、生活に根差した美・文化への関心や積極的な関わりが学業成績に影響する可能性を考察する。これは多くの教科で重要だった「地域社会への関心」とも共通し、身近な事柄に関心を持つきっかけとしてArt/Artsが役割を担いうると結ぶ。
本研究は、地域特性をK-means法で類型化し、そのクラスター変数と芸術・家庭・個人変数を用いて教科別平均点の決定木(回帰木)を作ることで、「どのような芸術が学力に効くか」を探った。多くの教科で「地域社会への関心」が、算数A(基礎)で「絵画・彫刻の制作」が最も寄与し、手作業を伴う芸術や生活に根差した大衆文化が学業成績に関係する可能性を示した点に価値がある。
このページのK-means法(図4)と教養娯楽費率ランキング(図5)は、以下から再現できます。
🐍 再現コード(.py) 📊 SSDSE-B-2026.csv
※ 概念図(図1)と決定木の寄与(図2・図3)は、全国学力調査の点数や博物館・映画館数などSSDSE-Bに無いデータに基づくため再計算できず、原論文の報告値を可視化したものです。図4・図5はSSDSE-Bによる実再現ですが、図4は投入変数が原論文と異なるためクラスター構成は原論文と一致しません。年次はいずれも2023年です。
「教師なし学習で類型化 → 決定木で解釈」という流れは、現場でも広く使われている。
この研究を読むとき・まねするときに陥りやすい誤解を整理する。
クリックすると各用語の詳しい解説ページに移動できます。
この研究で使われている手法を、手を動かす順に説明する。
n_init)。原論文が自ら挙げた限界は、次の研究の出発点になる。
再現コードを少し変えるだけで試せる課題を、易しい順に用意した。
df_b['年度'] == 2023 を 2022 や 2020 に変えて、クラスター構成が年で変わるか確かめよう。K = 6 を 3 や 8(原論文と同じ)に変え、シルエット係数とクラスターの解釈しやすさがどう変わるか比べよう。FEATURES に別のSSDSE-B変数(例:待機児童数・進学率)を足し引きして、クラスターの中身がどう動くか観察しよう。原論文の変数選択の難しさが体感できる。inertia_(クラスター内平方和)を折れ線で描き、「肘」からkを選ぶ方法を試そう。シルエット係数と比べてどうか。sklearn.tree.DecisionTreeRegressor で、教養娯楽費率などを目的変数にした回帰木を作り、どの変数で分岐するか可視化しよう。原論文の手法を自分のデータで体験できる。from sklearn.tree import DecisionTreeRegressor, plot_tree; m=DecisionTreeRegressor(max_depth=3).fit(X,y); plot_tree(m)。過学習を防ぐためmax_depthを小さく。この研究を読んで浮かびやすい疑問に答える。
この論文を理解できたか、クリックで確認しましょう。間違えても解説が出ます。
このページの分析は、この画面の中でそのまま実行できます。
Python をインストールする必要も、CSV をダウンロードする必要もありません。
下のセルの 「▶ ブラウザで実行」 を上から順に押すか、
「▶ 最初から全部実行」 で一気に流してください。
表示されるのは、本文の図表とまったく同じ計算の結果です
(動かしているのは再現スクリプト code/2021_U5_5_shorei.py そのもの)。
コードは書き換えられます。「✏️ 書き換える」で数字や変数を変えて ▶ を押すと、 結果がどう変わるかをその場で確かめられます(元に戻すボタンつき)。 ページを開いた時点で裏で実行環境の準備が始まっているので、待ち時間はほとんどありません。 初回だけ実行環境の取得にインターネット接続が必要です。