共通テスト(2025年)

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

2025年 共通テスト 国語 2025年 共通テスト 地理歴史 2025年 共通テスト 公民 2025年 共通テスト 数学I・A 2025年 共通テスト 数学II・B・C 2025年 共通テスト 理科 2025年 共通テスト 英語(リーディング) 2025年 共通テスト 英語(リスニング) 2025年 共通テスト 情報I

ソース:

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("dnc2025_" + basename + ".svg", bbox_inches="tight")

hist("kokugo", "国語")
hist("chireki", "地理歴史", 3)
hist("koumin", "公民", 3)
hist("suu1a", "数学I・A")
hist("suu2bc", "数学II・B・C")
hist("rika", "理科")
hist("reading", "英語(リーディング)")
hist("listening", "英語(リスニング)")
hist("joho1", "情報I")