「予測値と実測値のズレをまとめて数値化したい……」。スプレッドシートでこんな計算が必要になったことはありませんか?
セルごとに差を求めて二乗して、さらに合計して……と手作業で組むと数式が長くなりがちです。もっとスッキリ書けたら便利ですよね。
そんなときに使うのがスプレッドシートのSUMXMY2関数です。この記事では基本の書き方から実務での活用例まで解説します。よく似た姉妹関数(SUMX2MY2・SUMX2PY2)との違いも比較表で整理しました。
SUMXMY2関数とは?スプレッドシートで差の二乗の合計を求める関数
SUMXMY2関数(読み方: サム エックス マイナス ワイ スクエアド)は、2つの配列の対応する要素について差の二乗の合計を返す関数です。
「SUMXMY2」は「SUM of (X Minus Y)²」の略です。数式で書くと次のようになります。
SUMXMY2 = Σ(xᵢ - yᵢ)²
たとえば X = {3, 4} と Y = {1, 2} なら、(3-1)²(=4)と (4-2)²(=4)の合計で 8 になります。
SUMXMY2関数にできることをまとめると、次のとおりです。
- 2つのデータ列の「差の二乗」を一括で合計する
- 予測値と実測値の誤差(MSE: 平均二乗誤差)の基礎計算に使える
- データ間の類似度やズレの大きさを定量的に測定できる
- SUMSQ関数(平方和)の応用として使える
- 姉妹関数のSUMX2MY2・SUMX2PY2と組み合わせて多角的な分析ができる
NOTE
SUMXMY2関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作は同じです。
SUMXMY2関数の書き方(構文と引数)
基本構文
=SUMXMY2(配列_x, 配列_y)
カッコの中に、比較したい2つのセル範囲を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 配列_x | 必須 | 1つ目のデータ範囲(x側) |
| 配列_y | 必須 | 2つ目のデータ範囲(y側) |
2つの配列は同じサイズ(同じ要素数)である必要があります。サイズが異なると #N/A エラーになるので注意してください。
TIP
空のセルや文字列が含まれている場合は、0として扱われます。たとえば x=5、y=空白なら、(5-0)² = 25 として計算されますよ。
SUMXMY2関数の基本的な使い方
以下のサンプルデータでSUMXMY2関数を使ってみましょう。
A列にデータX、B列にデータYが入っているとします。
| A列(データX) | B列(データY) | |
|---|---|---|
| 2行目 | 3 | 1 |
| 3行目 | 4 | 2 |
| 4行目 | 5 | 3 |
セル範囲で指定する
=SUMXMY2(A2:A4, B2:B4)
結果は 12 です。内訳を確認してみましょう。
| 要素 | xᵢ-yᵢ | (xᵢ-yᵢ)² |
|---|---|---|
| 1番目 | 3-1=2 | 2²=4 |
| 2番目 | 4-2=2 | 2²=4 |
| 3番目 | 5-3=2 | 2²=4 |
| 合計 | 12 |
まず各要素の差を求め、それを二乗してから合計しています。
計算の仕組みを数式で確認する
SUMXMY2の結果が正しいか、個別の数式で検算してみましょう。
=SUMPRODUCT((A2:A4 - B2:B4)^2)
この数式でも同じ結果の 12 が返ります。SUMXMY2関数は、この計算を1つの関数でまとめてくれるわけですね。
SUMXMY2関数の実務での活用例
予測値と実測値の誤差を測定する(MSEの基礎)
SUMXMY2関数は、予測モデルの精度を評価するMSE(平均二乗誤差)の計算に活用できます。
たとえば、売上予測と実際の売上を比較してみましょう。
| A列(予測値) | B列(実測値) | |
|---|---|---|
| 2行目 | 100 | 110 |
| 3行目 | 150 | 140 |
| 4行目 | 200 | 190 |
まず、SUMXMY2で残差二乗和(RSS)を求めます。
=SUMXMY2(A2:A4, B2:B4)
結果は 300 です。内訳は (100-110)²+(150-140)²+(200-190)² = 100+100+100 = 300 です。
この値をデータ数で割ればMSE(平均二乗誤差)になります。
=SUMXMY2(A2:A4, B2:B4) / COUNT(A2:A4)
結果は 100 です。MSEが小さいほど予測精度が高いことを意味します。予測モデルを改善したら、この値が小さくなったかどうかで効果を確認してみてください。
TIP
MSEの平方根を取ると RMSE(二乗平均平方根誤差)になります。
=SQRT(SUMXMY2(A2:A4, B2:B4) / COUNT(A2:A4))で求められますよ。RMSEは元のデータと同じ単位で誤差を表せるので、直感的にわかりやすい指標です。
データの類似度を評価する
SUMXMY2は2つのデータセットがどれだけ似ているかを数値で測るのにも使えます。
たとえば、3人の営業担当の月別売上パターンを比較してみましょう。
| A列(担当A) | B列(担当B) | C列(担当C) | |
|---|---|---|---|
| 2行目 | 50 | 48 | 80 |
| 3行目 | 60 | 62 | 40 |
| 4行目 | 55 | 53 | 70 |
担当Aと担当Bの類似度を測ります。
=SUMXMY2(A2:A4, B2:B4)
結果は 12 です。差がとても小さいですね。
次に、担当Aと担当Cを比較してみましょう。
=SUMXMY2(A2:A4, C2:C4)
結果は 1525 です。こちらは値が大きく、売上パターンが大きく異なることがわかります。
SUMXMY2の結果が小さいほど2つのデータは似ており、大きいほどズレが大きいと判断できますよ。
SUMX2MY2・SUMX2PY2との違い
スプレッドシートには、SUMXMY2と名前がよく似た姉妹関数が2つあります。混同しやすいので、比較表で整理しておきましょう。
| 関数名 | 計算内容 | 数式 | 結果の意味 |
|---|---|---|---|
| SUMX2MY2 | 二乗の差の合計 | Σ(xᵢ²-yᵢ²) | xとyの二乗値の差を比較 |
| SUMX2PY2 | 二乗の和の合計 | Σ(xᵢ²+yᵢ²) | xとyの二乗値を合算 |
| SUMXMY2 | 差の二乗の合計 | Σ(xᵢ-yᵢ)² | xとyの差を二乗して合算 |
名前の違いは「X2MY2」「X2PY2」「XMY2」の部分です。
ポイントは「二乗と引き算の順番」です。SUMXMY2だけが「先に差を取ってから二乗する」ので、結果は常に0以上になります。
同じデータで3つの関数を比較
X = {3, 4, 5}、Y = {1, 2, 3} で計算してみましょう。
=SUMX2MY2(A2:A4, B2:B4) → 36
=SUMX2PY2(A2:A4, B2:B4) → 64
=SUMXMY2(A2:A4, B2:B4) → 12
| 要素 | SUMX2MY2 (x²-y²) | SUMX2PY2 (x²+y²) | SUMXMY2 (x-y)² |
|---|---|---|---|
| 1番目 | 9-1=8 | 9+1=10 | (3-1)²=4 |
| 2番目 | 16-4=12 | 16+4=20 | (4-2)²=4 |
| 3番目 | 25-9=16 | 25+9=34 | (5-3)²=4 |
| 合計 | 36 | 64 | 12 |
どの関数を使えばいい?
- 2つのデータの大きさの優劣を比較したい → SUMX2MY2(差がプラスかマイナスかで判断)
- 2つのデータの全体的な大きさを把握したい → SUMX2PY2(ユークリッドノルムの二乗に相当)
- 2つのデータのズレの大きさを測りたい → SUMXMY2(最小二乗法や誤差の評価に使う)
SUMXMY2は結果が常に0以上になるため、「どちらが大きいか」ではなく「どれだけズレているか」を純粋に測定できる点が特徴です。
よくあるエラーと対処法
#N/Aエラー
2つの配列のサイズが異なると #N/A エラーが発生します。
=SUMXMY2(A2:A4, B2:B5) → #N/Aエラー(3個 vs 4個)
=SUMXMY2(A2:A4, B2:B4) → 正常に計算される
配列_xと配列_yの行数(要素数)が一致しているか確認してください。COUNT関数で個数を数えてみると原因がわかりやすいですよ。
=COUNT(A2:A4) → 3
=COUNT(B2:B5) → 4(1つ多い)
#VALUE!エラー
引数にセル範囲ではなく文字列を直接指定すると発生します。
=SUMXMY2("abc", B2:B4) → #VALUE!エラー
SUMXMY2の引数にはセル範囲を指定してください。セル範囲内に文字列が含まれている場合は0として扱われるので、エラーにはなりません。
結果が0になる
配列_xと配列_yにまったく同じ値が入っていると、各要素の(x-y)²がすべて0になるため、結果も0になります。
=SUMXMY2(A2:A4, A2:A4) → 0(同じ範囲を指定)
意図した範囲を指定しているか確認してみてください。
まとめ
SUMXMY2関数は、2つの配列の対応する要素について差の二乗の合計を返す関数です。
この記事のポイント
- 構文は
=SUMXMY2(配列_x, 配列_y)で、2つのセル範囲を指定する - 差の二乗の合計(Σ(xᵢ-yᵢ)²)を一発で計算できる
- 結果は常に0以上で、2つのデータのズレの大きさを表す
- MSE(平均二乗誤差)の基礎計算として活用できる
- 2つの配列のサイズが異なると#N/Aエラーになる
- 姉妹関数のSUMX2MY2(二乗の差の合計)・SUMX2PY2(二乗の和の合計)と使い分ける
次のステップ:関連する関数
SUMXMY2関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データ分析の幅が広がりますよ。
