DESIGN / CODE / INFRA / AI

解説

前が0の増加率は何%?AIの集計で基準0と欠損を分けよう

0から10への変化を、通常の増加率で表せるとは限らない。差分・増加率・取得できない基準を分け、架空の数字で確認する。

前が0の増加率は何%?AIの集計で基準0と欠損を分けよう
保存リストを見る →
この記事の道しるべ 5項目

AIに前月比を計算させたら、0から10への変化が「100%増」と出た。ふつうの増加率の式では、基準が0のときに同じ計算はできないよ。差がいくつかと、基準に対して何%かを分けよう。

このページでは、非負の架空の件数を使う。実際のアクセス解析や売上は必要ない。AIの回答を正しいと仮定せず、式と表示のルールを確認する練習だよ。

増加率は基準の値で割る

通常の増加率は、(後の値−前の値)÷前の値×100。10から15へ増えた場合、差分は5、増加率は50%になる。

「後の値は前の何%か」なら15÷10×100で150%。50%増と150%は、何を表すかが違うんだ。

前が0なら、同じ式で割合を決めない

0から10へ増えた場合、差は10。しかし10÷0は通常の割合の計算として定義できない。増加率を100%や0%に置き換えたり、∞%をそのまま通常の成果の数字として使ったりしないようにしよう。

前 後 差分 今回の増加率の扱い
10 15 +5 +50%
10 0 -10 -100%
0 10 +10 基準0で計算対象外
0 0 0 基準0で計算対象外
未取得 10 算出しない 基準の確認が必要

0から0を便宜上0%と表示するなど、別の業務ルールを採用する場合もある。その場合は、通常の式の結果ではなく、表示上の取り決めとして明示しよう。

基準がないことと0を混ぜない

以前の記録が取得できない場合、それを実際に0件だったと扱わないことが大切。新しいドメインへの移行や集計範囲の変更なら、同じ条件で比較できるかも先に確認したいね。

欠損を0へ置き換えると、差分まで+10と計算してしまう。今回は未取得なら差分も割合も計算しないと決めているよ。

AIへ渡す条件の例

前後の件数について、差分と増加率を別に出してください。
増加率は(後-前)/前*100です。
前が0の場合は増加率を「基準0で計算対象外」とし、差分だけ出します。
前が未取得の場合は0に置き換えず、差分も計算しません。
0から0も、今回は増加率を計算対象外とします。

これは編集部が作成した条件の例。モデルが必ず正しく守ると確認したものではない。元データの単位や期間もそろえて照合しよう。

Decimalで小さく検算する

from decimal import Decimal

rows = [("10", "15"), ("10", "0"), ("0", "10"), ("0", "0"), (None, "10")]
for before, after in rows:
    if before is None or after is None:
        print("基準の確認が必要")
        continue
    a, b = Decimal(before), Decimal(after)
    change = b - a
    rate = "基準0で計算対象外" if a == 0 else (change / a * 100)
    print(change, rate)

編集部ではPython 3.12で、差分と50・-100の割合、基準0、未取得の分岐を確認した。金額・負の基準・極端な値などを含む、あらゆる業務指標の検証ではないよ。

割合の分母は対象範囲の違い、欠損値は未取得と0も参考にしてね。

参考・出典

公開と変更の記録
  • :初回公開

日時は日本時間です。記載のある変更は、確認できた編集記録に基づきます。更新日の違いだけから変更内容を推測して載せることはありません。

更新・訂正の方針 →

みんなのコメント 0

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。