ExcelのSTEYX関数とは?回帰直線の「予測のばらつき」を求める関数
「広告費から売上を予測したいけど、その予測ってどれくらい当たるの?」
「散布図に近似直線を引いたとき、ばらつきの大きさを数字で表したい」
こんな場面で出番になるのがSTEYX関数です。
この記事ではSTEYX関数の使い方を、SLOPEやINTERCEPT、RSQといった回帰関連の関数と絡めながら解説します。読み終えるころには「予測の精度を数値で語れる」ようになっていますよ。
読み方と語源(Standard Error of Y given X)
STEYX関数の読み方は「スタンダード・エラー・ワイ・エックス」または「ステイ・ワイ・エックス」です。STEYXは「Standard Error of Y given X」の略で、「Xが与えられたときのYの標準誤差」という意味があります。
回帰分析では、X(説明変数)からY(目的変数)を予測する直線を引きますよね。その直線がどれくらい実測値からズレているかを数値化したのが、回帰の標準誤差(残差標準偏差)です。
STEYX関数はこの標準誤差を一発で計算してくれる関数で、Excel 2003以降のすべてのバージョンで使えます。Microsoft 365でもそのまま動きます。
「回帰の標準誤差」とは何か
ざっくり言うと、回帰直線を使って予測したときの「ハズレ幅の目安」です。
たとえば広告費から売上を予測したとします。回帰直線が「売上 = 2 × 広告費 + 50」だった場合、広告費が10のときの予測売上は70です。でも実測値は68だったり75だったりとブレますよね。このブレの大きさを統計的にまとめた数字が、回帰の標準誤差です。
標準誤差が小さいほど予測精度が高く、大きいほど予測のハズレ幅が大きい、ということになります。「この回帰直線、ぶっちゃけどれくらい使えるの?」を数値で答えてくれる便利な指標なんです。
STEYX関数の書き方(構文と引数)
基本構文
まずは基本の書き方を確認しましょう。引数は2つで、どちらも必須です。
=STEYX(known_y's, known_x's)
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| known_y’s | 必須 | 目的変数Y(予測したい値)のデータ範囲 |
| known_x’s | 必須 | 説明変数X(予測の元になる値)のデータ範囲 |
引数の順番は「Yが先、Xが後」です。SLOPE関数やINTERCEPT関数と同じ順番なので、回帰系の関数はセットで覚えておくと迷いませんよ。
引数を入れる順番に注意
ここは間違えやすいので念押ししておきます。STEYX関数の引数は「Y, X」の順です。「X, Y」と入れ替えると、まったく別の値が返ってきてしまいます。
=STEYX(売上範囲, 広告費範囲) # 正しい:Yが先
=STEYX(広告費範囲, 売上範囲) # 間違い:XとYが逆
「予測したいもの(Y)が先、予測の元(X)が後」と覚えておけば大丈夫です。Excelの関数ヒントにも known_y's, known_x's と表示されるので、そこも確認しながら入力してみてください。
STEYX関数の基本的な使い方
数値例で動かしてみる
実際に手を動かして使ってみましょう。次のような広告費と売上のデータがあるとします(単位は万円)。
| 広告費(X) | 売上(Y) |
|---|---|
| 10 | 70 |
| 15 | 78 |
| 20 | 92 |
| 25 | 100 |
| 30 | 115 |
このデータがA2:B6に入っているとして、広告費がX、売上がYだとします。STEYX関数で回帰の標準誤差を求める数式はこうなります。
=STEYX(B2:B6, A2:A6)
結果は約3.05です。これは「回帰直線で予測した売上は、実測値から平均しておよそ±3.05万円ズレる」という意味になります。
結果の意味を読み解く
回帰の標準誤差が3.05ということは、おおよそ次のように解釈できます。
- 予測売上に対して、実測値の約68%が±3.05の範囲に収まる
- 予測売上に対して、実測値の約95%が±6.10(標準誤差の2倍)の範囲に収まる
この「68%」「95%」は、残差が正規分布に従うと仮定したときの目安です。データのばらつき具合を直感的に把握する指標として使われます。
「3.05って大きいの?小さいの?」と思いますよね。この判断はYの値の大きさとセットで考えるのがコツです。今回の売上は70〜115の範囲なので、ばらつき3.05はかなり小さい部類で、回帰直線の精度はそこそこ高い、という見方ができます。
計算の中身(参考)
STEYX関数の内部では、次の式で計算されています。難しければ読み飛ばしてOKです。
標準誤差 = √( Σ(実測Y - 予測Y)² / (n - 2) )
実測Y - 予測Y は残差(ズレ)と呼ばれる値です。この残差の二乗平均を取って、自由度(n-2)で割って、最後に平方根を取ります。
「自由度 n-2」というのが特徴で、回帰直線は「傾き」と「切片」の2つのパラメータを推定するため、データ点の数nから2を引いた値で割るんです。STEDEV.S関数(n-1で割る)とは少し違うので、回帰専用の指標として覚えておくといいですね。
STEYXとSLOPE・INTERCEPT・RSQ・FORECASTの関係
回帰分析でよく使う関数たちを、STEYXとセットで整理しておきましょう。
回帰分析で一緒に使う関数たち
| 関数 | 役割 | 構文 |
|---|---|---|
| SLOPE | 回帰直線の傾きを返す | =SLOPE(known_y's, known_x's) |
| INTERCEPT | 回帰直線の切片を返す | =INTERCEPT(known_y's, known_x's) |
| RSQ | 決定係数(R²)を返す | =RSQ(known_y's, known_x's) |
| FORECAST.LINEAR | 指定したXに対する予測Yを返す | =FORECAST.LINEAR(x, known_y's, known_x's) |
| STEYX | 回帰の標準誤差を返す | =STEYX(known_y's, known_x's) |
引数の順番は全部「Y, X」で揃っているので、まとめて覚えてしまうのが楽です。詳しい使い方はSLOPE関数の記事やINTERCEPT関数の記事も参考にしてください。
「予測直線を引く → 精度を測る」の流れ
実務では、これらの関数を組み合わせて「予測 → 精度評価」までセットでやることが多いです。
傾き : =SLOPE(B2:B6, A2:A6)
切片 : =INTERCEPT(B2:B6, A2:A6)
R² : =RSQ(B2:B6, A2:A6)
予測値 : =FORECAST.LINEAR(35, B2:B6, A2:A6)
標準誤差: =STEYX(B2:B6, A2:A6)
R²(決定係数)は「データのばらつきのうち、回帰直線で説明できた割合」を表す0〜1の値で、1に近いほど当てはまりがいいことを示します。詳しくはRSQ関数の記事を参考にしてください。
R²と標準誤差はどちらも回帰直線の評価指標ですが、見方が違います。R²は「全体的な当てはまりの良さ」を割合で示し、STEYXは「実際のズレの大きさ」を元の単位(今回なら万円)で示してくれます。両方セットで見ると、回帰モデルの精度をしっかり評価できますよ。
FORECAST.LINEARと組み合わせて予測区間を作る
FORECAST.LINEARで予測値を出して、STEYXで標準誤差を出せば、ざっくりした予測区間も作れます。
予測値 ± 2 × 標準誤差 # 約95%の予測区間
たとえば広告費35のときの予測売上が127、標準誤差が3.05なら、「約95%の確率で売上は120.9〜133.1の範囲」と見積もれます。「予測値だけ出されてもどれくらい信頼できるか分からない」という上司への報告がラクになりますよ。詳しい予測の出し方はFORECAST.LINEAR関数の記事もあわせて読んでみてください。
よくあるエラーと対処法
#N/Aエラー:YとXの個数が違う
STEYX関数で一番見かけるのが#N/Aエラーです。原因はだいたいこれです。
- known_y’s と known_x’s のデータ個数が違う
たとえばYは10件、Xは9件だと、データペアが作れずエラーになります。
=STEYX(B2:B11, A2:A10) # Yは10件、Xは9件 → #N/Aエラー
=STEYX(B2:B11, A2:A11) # 個数を揃えるとOK
「あれ、なぜか#N/Aが出る」というときは、まず範囲の行数を確認してみてください。コピペで範囲を作ったときに、片方だけずれてしまうことがよくあります。
#DIV/0!エラー:データが少なすぎる、Xがすべて同じ
データ点が2件しかなかったり、Xの値がすべて同じだったりすると、#DIV/0!エラーになります。
known_y's: {70}, known_x's: {10} → #DIV/0!(データが1件のみ)
known_y's: {70, 80, 90}, known_x's: {10, 10, 10} → #DIV/0!(Xがすべて同じ)
回帰直線を引くにはXに変動が必要で、しかも「自由度 n-2」で割る計算式の都合上、データは最低3件以上ないと意味のある値が出せません。ばらつきがゼロのデータには回帰の概念が成立しないんですね。
#VALUE!エラー:引数に文字列が混ざっている
引数の範囲に文字列や論理値が混ざっていると#VALUE!エラーになります。
=STEYX(B2:B6, A2:A6)
A列やB列に「データなし」「-」のような文字列が入っているとエラーになるので、空欄にしておくか、IFERROR関数でフィルターしましょう。
エラーを事前にトラップしたい場合は、IFERROR関数で囲むのもアリです。
=IFERROR(STEYX(B2:B6, A2:A6), "データを確認してください")
データ入力者にも親切なメッセージが出せるので、共有ファイルではこの書き方がおすすめです。
まとめ
STEYX関数は、回帰直線の「予測のばらつき」を一発で計算してくれる関数です。
ポイントを整理しておきましょう。
- 構文は
=STEYX(known_y's, known_x's)で、Yが先、Xが後の順 - 結果は「予測値が実測値から平均してどれくらいズレるか」を、元の単位で示す
- 自由度は n-2 で、回帰直線専用の標準偏差として計算される
- SLOPE・INTERCEPT・RSQ・FORECAST.LINEAR とセットで使うと、回帰分析がぐっと深まる
- データ件数の不一致(#N/A)、データ不足(#DIV/0!)、文字列混入(#VALUE!)に注意
回帰直線の精度を数値で語れるようになると、レポートの説得力がぐっと上がります。FORECAST.LINEARで予測値を出すついでに、STEYX関数で「±どれくらいブレるか」もセットで報告すると、相手に親切な分析資料に仕上がりますよ。
