💽

株価データの階級(カテゴリ)設計:分布分析に基づく区切り方の実践

に公開

1. はじめに

AIによる株価予測モデルの精度や解釈性を高めるうえで、「株価水準そのものをどのようなカテゴリ(階級)に分けるか」は極めて重要な前処理工程です。
本稿では、実際の価格データの分布統計・可視化を徹底的に行い、「分布特性に即した意味のあるカテゴリ変数」を再現可能なロジックで設計するプロセスを詳細に解説します。


【図表・写真挿入位置とキャプション一覧】

  • 図1. 株価終値の1000円刻みヒストグラム(全体のばらつきを俯瞰)
  • 図2/3. 1000円刻みの件数・比率(前半・後半で詳細に分解)
  • 図4. Q1, Q3, Median, IQRなどの統計量ログ(密集帯の“定量的根拠”)
  • 図5. ヒストグラム・箱ひげ図(中心部分・分布形状を視覚化)

2. 全体のばらつき:1000円刻みヒストグラムによる概観

まず、株価終値データがどの価格帯にどれだけ分布しているかを把握するため、1,000円刻みのヒストグラムと、件数・割合のグラフを作成した。

図1. 株価終値の1000円刻みヒストグラム・分布グラフ

解説

  • 0~1,000円台に約半数、~2,000円台までで約8割が分布
  • 5,000円以上は希少な高額銘柄に集中

図2. 1000円刻み存在率 前半(詳細表示)

図3. 1000円刻み存在率 後半(詳細表示)


3. データ集中部の詳細化 ― Q1/Q3/IQRなど統計量で“偏り”をズーム

全体のばらつきが確認できたところで、実際にどの価格帯に“データが密集しているか”を数値で明示します。
四分位数(Q1, Q3)、中央値、IQRなど、**分布の“中心的な区域”**を抽出しました。

図4. IQR統計量・主要指標のログ

  • 第1四分位数(Q1):524円
  • 中央値(Median):1020円
  • 第3四分位数(Q3):1923円
  • IQR:1399円
  • Whisker上限:4021.5円

さらに、これら統計量を図示したヒストグラム・箱ひげ図を用意し、密集領域の可視化も行った。

図5. ヒストグラム・箱ひげ図(中央値・Q1・Q3を強調)

解説

  • データは中央値1020円、Q3で1923円に集中
  • 平均値(約3800円)は分布の裾に引っ張られ、代表値としては不適切

4. 分布に基づく階級(カテゴリ)設計ロジック

4.1 設計方針の整理

以上の可視化・統計量に基づき、
データが密集しているQ1~Q3をより細かく、
外れ値ゾーンは大まかに
、という考え方でカテゴリ設計を行った。

4.2 実装例(カテゴリ階級)

CATEGORY_BINS = [
    (0, 524),        # Q1まで
    (524, 1020),     # Q1-中央値
    (1020, 1923),    # 中央値-Q3
    (1923, 5000),    # Q3-Whisker上限
    (5000, 10000),   # 1万円未満
    (10000, 50000),  # 5万円未満
    (50000, float('inf'))  # 5万円以上
]
@classmethod
def get_price_category_number(cls, price):
    for i, (low, high) in enumerate(cls.CATEGORY_BINS):
        if low <= price < high:
            return i + 1  # 1始まり
    return len(cls.CATEGORY_BINS)

5. 考察・まとめ

  • 全体のばらつきを把握した上で、“データ集中部分”の定量分析→階級設計を行うことで、AIが意味ある区分を認識しやすくなる
  • 密集ゾーンを細かく扱うことで、モデルのバイアス・精度両面の最適化が期待できる
  • 今後はこのカテゴリ設計を基にSHAP分析や予測精度への効果を検証していく予定

6. 続編のご案内

本記事で設計したカテゴリ変数を実際に株価予測AIに適用し、「カテゴリ変数あり/なし」で予測精度や分布がどう変わるのかを徹底検証した続編記事も公開しています。

詳細な検証結果・グラフ解説は、ぜひ下記記事をご覧ください!

XGBoostで株価LogReturn予測――“カテゴリ変数”で予測AIはここまで変わる

(本記事の「カテゴリ分岐設計」→次記事の「AI適用・精度分析」の流れで読んでいただくと、全体像がつかみやすくなります)

Discussion