共通テスト(2024年)

大学入試センター令和6年度 試験情報データ(本試験)で2024年の共通テスト各科目の度数分布が公開されたので、グラフにしてみる。一部科目は3点刻み。オレンジの線は、平均・標準偏差が同じ正規分布。

2024年 共通テスト 国語 2024年 共通テスト 地理歴史 2024年 共通テスト 世界史B 2024年 共通テスト 日本史B 2024年 共通テスト 地理B 2024年 共通テスト 公民 2024年 共通テスト 数学I・A 2024年 共通テスト 数学II・B 2024年 共通テスト 英語(リーディング) 2024年 共通テスト 英語(リスニング)

ソース:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy import stats

def hist(basename, title, smooth=None):
    df = pd.read_csv(basename + ".csv")
    maxscore = np.max(df["点数"])
    n = np.sum(df["人数"])
    mean = np.sum(df["人数"] * df["点数"]) / n
    sqmean = np.sum(df["人数"] * df["点数"]**2) / n
    sd = np.sqrt(sqmean - mean**2)
    x = np.arange(0, maxscore + 1, max(1, maxscore / 100))
    y = n * stats.norm.pdf(x, loc=mean, scale=sd)
    if smooth is not None:
        df["人数"] = df["人数"].astype(float)
        for i in range(0, maxscore + 1, smooth):
            m = np.mean(df["人数"][i:i+smooth])
            for j in range(smooth):
                df.loc[i+j, "人数"] = m
    plt.clf()
    cmap = plt.get_cmap("tab20")
    plt.bar(df["点数"], df["人数"], width=1.08, color=cmap(1))
    plt.xlabel("点数")
    plt.ylabel("人数")
    plt.plot(x, y, color=cmap(2), lw=2)
    plt.title(title)
    plt.savefig("dnc2024_" + basename + ".svg", bbox_inches="tight")

hist("kokugo", "国語")
hist("chireki", "地理歴史", 3)
hist("sekaishi_b", "世界史B", 3)
hist("nihonshi_b", "日本史B", 3)
hist("chiri_b", "地理B", 3)
hist("koumin", "公民", 3)
hist("suu1a", "数学I・A")
hist("suu2b", "数学II・B")
hist("reading", "英語(リーディング)")
hist("listening", "英語(リスニング)")