予測値と実績値から平均二乗誤差を計算するには?

予測と実績の差を二乗して、モデルごとの平均二乗誤差(MSE)を求めます。実績と予測が両方そろったデータだけを使い、評価件数も確認します。

説明図:予測評価の組の架空の入力データ
架空のデータを使った説明図です。実際の画面キャプチャではありません。

誤差+2と−2をそのまま平均すると0になりますが、どちらの予測も正確ではありません。JOIN SHEETで誤差をそれ自身に掛けてから平均すれば、符号が相殺されない平均二乗誤差(MSE)を計算できます。

実績と予測を同じ行で対応させる

下の架空データでは、各行に同じ対象・期間の実績と予測が並んでいます。どちらかが空欄の行は評価から外し、集計に使った件数も表示します。モデルAの空欄は、予測数量0という意味ではありません。

モデル 実績数量 予測数量
A 10 12
A 20 18
A 30 空の値
B 10 11
B 20 23

引き算、二乗、平均の順で設定する

  1. 元シートで実績数量と予測数量の型を「数値」にそろえ、変換できず空欄になった値がないか確認します。データを結果の基準に選び、「結果を整理」で「絞り込み」を2つ追加し、両項目の条件をそれぞれ「空の値以外」にします。これで数値のそろった組だけを評価できます。
  2. 「計算」で予測数量から実績数量を引き、「予測誤差」を作ります。
  3. 次の「計算」は「掛け算 · A × B」にし、「最初の値 (A)」と「次の値 (B)」の両方に予測誤差を選びます。「結果の項目名」に誤差の二乗と入力します。
  4. 「集計」を追加してモデルでまとめます。最初の集計を誤差の二乗の「平均」に変え、「結果の項目名」に平均二乗誤差と入力します。「集計を追加」で「件数」も追加し、「結果の項目名」を評価件数に変えて「適用」を押します。

説明図:実績と予測が両方ある行 → 誤差をそれ自身に掛ける → モデル別に二乗誤差を平均

分母は評価した組の件数

Aは4と4の平均で4、Bは1と9の平均で5になります。どちらも2組なのでnは2です。MSEの単位は数量単位の二乗であり、4という結果は4%を意味しません。平方根を取るRMSEとも異なります。

モデル 平均二乗誤差 評価件数
A 4 2
B 5 2

説明図:Aの+2と−2は二乗後には相殺されず、平均二乗誤差は4です。

参考にした質問では、Excelの回帰分析にあるANOVA表の分母との違いが話題になっています。この記事では、実績と予測がそろった件数nで二乗誤差の合計を割ります。残差分散の推定に使うn−p−1で割る計算ではありません。モデルを比べるときは対象と単位をそろえ、空欄のために除外したデータも確認してください。

自分のファイルで始めましょう

JOIN SHEETを使ってみる ↗

Excel・CSVの作業はPCでご利用ください。
新しいタブで開くため、作業中のデータは置き換わりません。

サンプルの検証日:

出典

MSE denominatorの質問を参考に、独自の架空データで手順を作成しました。