Article

LINEST関数の使い方|Excelで回帰直線の傾き・切片・R²を求める

この記事で分かること

LINEST関数で回帰直線の傾き・切片・決定係数R²を一発で求める方法を実機検証付きで解説。重回帰の係数列順や5行統計量の見方、エラー対処まで。

LINEST 関数は、Excel で線形回帰の傾き・切片・決定係数 R2 を 1 つの数式で求める統計関数です。「広告費を 1 万円増やすと売上はいくら伸びるか」を数式で答えたいときに使います。x が 1 つだけの単回帰なら SLOPE / INTERCEPT のほうが式が短く、x が複数の重回帰や R2 など統計量も同時に取りたいときこそ LINEST の出番です。Microsoft 365 / Excel 2021 / 2024 では結果が自動で複数セルに展開(スピル)されます。

この記事では Excel 2024(Build 19822)で全数式を実機検証した結果をもとに、基本構文から重回帰の係数列順の罠、5 行スピルで取れる統計量の見方、散布図の近似曲線との一致確認、エラー対処までをまとめています。

LINEST 関数の基本構文と対象バージョン

LINEST 関数は次の構文で書きます。

=LINEST(known_y, [known_x], [const], [stats])
引数必須意味
known_y必須y の範囲(縦 1 列または横 1 行)D2:D13
known_x任意x の範囲。複数列なら重回帰。省略すると {1, 2, ..., n} が使われるB2:B13 または B2:C13
const任意TRUE で切片を計算(既定)、FALSE で切片を 0 に強制TRUE
stats任意TRUE で R2 など統計量を含む 5 行スピルを返す(既定 FALSE)TRUE

対象バージョンと自動スピルの違い

Microsoft 公式ドキュメントによると、LINEST 関数は Excel 2016 / 2019 / 2021 / 2024 / Microsoft 365 で利用できます。ただし、結果を複数セルに展開する方法はバージョンで異なります。

  • Microsoft 365 / Excel 2021 / Excel 2024:自動でスピルされるので、1 つのセルに数式を入力するだけで結果が複数セルに広がる
  • Excel 2019 / 2016:先に出力範囲を選択してから数式を入力し、Ctrl+Shift+Enter(CSE 配列入力)で確定する必要がある

結論先出し:単回帰なら SLOPE/INTERCEPT、複数 x や統計量なら LINEST

x が 1 つだけで「傾きと切片を出したい」だけなら、SLOPE 関数と INTERCEPT 関数のほうが式が短く読みやすいです。x が複数の重回帰、または R2 など統計量も同時に取りたいときに LINEST の出番です。

最小例:単回帰で傾きと切片を求める

あるカフェの月別データから「広告費が増えると売上はいくら伸びるか」を求めてみます。サンプル表は次のとおりです。

広告費と気温と売上の月別サンプル表(12 ヶ月分)
サンプル表:12 ヶ月分の広告費・平均気温・売上のデータ

D 列の売上を y、B 列の広告費を x として、空いているセルに次の数式を入力します。

=LINEST(D2:D13, B2:B13)
LINEST 関数の単回帰結果が F2:G2 にスピルしている
単回帰の結果は 1 行 2 列にスピルし、左が傾き、右が切片になる

結果は 1 行 2 列に展開され、F2 に 傾き 5.6181、G2 に 切片 118.26 が表示されます。これは「広告費を 1 万円増やすと、売上が約 5.6 万円増える」という回帰直線の式を意味します。式で書くと 売上 ≒ 5.6181 × 広告費 + 118.26 です。

同じ結果が SLOPE / INTERCEPT でも出る

単回帰では、通常のデータなら SLOPE 関数で傾き、INTERCEPT 関数で切片を求めても LINEST と同じ結果になることが多く、このサンプルでも一致しています。

=SLOPE(D2:D13, B2:B13)
=INTERCEPT(D2:D13, B2:B13)
LINEST と SLOPE / INTERCEPT が同じ値を返す比較画面
このサンプルでは、LINEST と SLOPE / INTERCEPT が同じ値(傾き 5.6181、切片 118.26)を返している

使い分けの目安は次のとおりです。

  • SLOPE / INTERCEPT:単回帰で「傾き」「切片」だけ欲しいとき。読みやすい
  • LINEST:x が複数の重回帰、または R2 や F 値などの統計量も同時に欲しいとき

known_x を省略すると {1, 2, …, n} になる

第 2 引数 known_x を省略すると、Excel は内部で {1, 2, ..., n}(n はデータ点数)を x として扱います。これは「月番号での回帰」と同じ意味になるので、時系列データの単純なトレンドを取りたい場面で便利です。

=LINEST(D2:D13)

このサンプルだと結果は [2.03, 203.40] になり、「月ごとに売上が約 2 万円ずつ増えていく」という時系列トレンドを示します。

重回帰:複数の x を同時に扱う(列順の罠)

x が 2 つ以上の重回帰では、x 範囲を 連続する複数列として渡します。サンプルでは B 列の広告費に加えて C 列の平均気温も使い、「広告費と気温が売上に与える影響」を同時に分析します。

=LINEST(D2:D13, B2:C13)
LINEST 関数の重回帰結果が F2:H2 にスピルし、列順は気温・広告費・切片の順
重回帰の結果は 1 行 3 列にスピル。列順は「気温(C 列)」「広告費(B 列)」「切片」の順で、x 範囲の逆順になる

⚠ 列順は x 範囲の「逆順」

重回帰で LINEST を使うと、出力の列順は x 範囲の右端から順に並びます。B 列=広告費、C 列=気温を渡したのに、結果の左から順に 気温の係数(1.7509)→ 広告費の係数(4.8449)→ 切片(100.13)が出てくるのはこのためです。3 列の x なら出力は [x3, x2, x1, 切片] の順、4 列の x なら [x4, x3, x2, x1, 切片] の順になります。「右端の列が一番左に出る」と覚えてください。

結果を式に直すと 売上 ≒ 4.8449 × 広告費 + 1.7509 × 気温 + 100.13 となります。読み方は「気温が同じなら広告費を 1 万円増やすと売上が +4.84 万円、広告費が同じなら気温が 1℃上がると売上が +1.75 万円」です。

単回帰と重回帰で広告費の係数が変わる理由

先ほどの単回帰では広告費の係数が 5.62、今回の重回帰では 4.84 と異なる値になりました。これは「単回帰では気温の影響が広告費の係数に紛れ込んでいた」ためです。気温が高い月は売上も伸びやすいので、気温を別変数で分離しないと「気温で売れた分」が広告費の効果として誤って計上されます。重回帰で気温を独立した x として加えると、純粋な広告費効果(4.84)が分離されます。

決定係数 R² や F 値も取り出す(第 4 引数 TRUE)

第 3 引数を TRUE、第 4 引数を TRUE にすると、係数の他に R2・F 値・標準誤差などの統計量を含む 5 行のスピルが返ります。

=LINEST(D2:D13, B2:C13, TRUE, TRUE)
LINEST 関数の 5 行スピルで係数・標準誤差・R²・F 値・自由度・回帰平方和・残差平方和が一度に出ている
第 4 引数 TRUE で 5 行 ×(k+1)列のスピルが返る。各行の意味はその左に並べたラベルどおり

5 行スピルの行と列の構造

k をモデルに入れた x の数とすると、出力は 5 行 ×(k+1)列になります。今回は重回帰(k=2)なので 5 行 3 列、単回帰なら 5 行 2 列です。各行の意味は次のとおりです。

行\列列 1列 2列 3 〜 列 k+1
行 1係数 m_n(最後の x)係数 m_n-1 〜 m_1切片 b(最右列)
行 2SE_n(係数の標準誤差)SE_n-1 〜 SE_1SE_b
行 3R2(決定係数)SE_y(推定値の標準誤差)#N/A
行 4F 値df(自由度 = n − k − 1)#N/A
行 5SS_reg(回帰平方和)SS_res(残差平方和)#N/A

3 列目以降の行 3〜5 が #N/A になるのは仕様で、エラーではありません。実際に意味のある値は左 2 列だけです。

各統計量の意味(最低限の解説)

  • R2(決定係数):モデルがデータをどれだけ説明できているかの指標。0〜1 の範囲で、1 に近いほど良い当てはまり。経験則として 0.7 以上で実用的とされる
  • SE_y(推定値の標準誤差):予測値の典型的なズレ幅。単位は y と同じ(このサンプルでは万円)
  • SE_n(係数の標準誤差):各係数の信頼幅。係数 ÷ SE が概ね 2 以上なら、その係数は統計的に意味があるとみなされる目安
  • F 値:モデル全体が偶然でないかの指標。F 検定で使う。大きいほどモデルに意味あり
  • df(自由度):n − k − 1。サンプル数が小さいと信頼性が下がる目安
  • SS_reg / SS_res:それぞれ回帰平方和と残差平方和。R2 = SS_reg ÷(SS_reg + SS_res)が成立する

サンプルでは R2 = 0.9696 と非常に高く、広告費と気温だけで売上のほぼ全変動が説明できています。なお、より厳密な統計の解釈は専門書に譲ります。

第 3・第 4 引数の組み合わせ早見表

conststats出力形状内容
TRUE(既定)FALSE(既定)1 ×(k+1)係数と切片のみ
TRUETRUE5 ×(k+1)係数 + 全統計量
FALSEFALSE1 × k係数のみ(切片強制 0)
FALSETRUE5 × k係数 + 統計量(切片の SE は出ない)

⚠ const=FALSE は切片を 0 に強制する

constFALSE にすると切片が 0 に固定されます。これは「物理的に切片が 0 と決まっているケース」(例:距離 = 速度 × 時間で時間が 0 のとき距離も 0)に限って使う特殊な指定です。普通の業務データでは TRUE(既定)のまま使ってください。

求めた式で予測する(TREND と FORECAST.LINEAR)

LINEST で係数を取った後は、新しい x の値に対する y を予測したくなります。Excel には予測専用の関数が 2 つ用意されています。

=FORECAST.LINEAR(30, D2:D13, B2:B13)
=TREND(D2:D13, B2:B13, 30)

どちらも「広告費 30 万円のときの売上はいくらか」を予測する式で、結果は同じく 286.80(万円)です。LINEST で求めた傾きと切片を使って手で計算しても 5.6181 × 30 + 118.26 = 286.80 と完全に一致します。

  • TREND:複数の予測値を一発で出したい場合に便利(スピル対応、新 x を範囲で渡せる)
  • FORECAST.LINEAR:1 点だけ予測したい場合のシンプル API

散布図の近似曲線と LINEST は一致する

散布図に「近似曲線(線形)」を追加し、グラフ上に式を表示させると、その式の傾きと切片は LINEST 関数の結果と完全に一致します。LINEST の数値が正しいかをグラフで視覚的に確かめられるので、検算手段としても便利です。

散布図の近似曲線に表示された y = 5.6181x + 118.26 と R² = 0.8026 が LINEST の結果と一致
散布図に近似曲線を追加して数式を表示すると y = 5.6181x + 118.26R2 = 0.8026 が表示され、LINEST と RSQ の結果と完全一致する

近似曲線の追加手順は、散布図を選択した状態で「グラフのデザイン」タブ →「グラフ要素を追加」→「近似曲線」→「線形」を選択し、近似曲線を右クリックして「近似曲線の書式設定」から「グラフに数式を表示する」「グラフに R-2 乗値を表示する」のチェックを ON にします。

LINEST 関数のエラーと注意点

出るエラーは #REF! と #VALUE! が中心

LINEST 関数のサイズ不一致で #REF!、x に文字列混入で #VALUE! が出る例
サイズ不一致は #REF!、文字列混入は #VALUE! が返る
  • #REF!:x と y の要素数が違うとき。known_yknown_x の行数・列数がそろっているかをまず確認します
  • #VALUE!:x または y のセルに文字列が混入しているとき
  • #NAME?:関数名の綴りが違うとき(LINEST 関数自体は Excel 2003 以前から実装されているので、バージョンが古くて使えないということは普通起きない)

なお Microsoft Support では、x と y の範囲を重ねないように案内しています。重ねた場合の挙動はパターンによって異なる(エラーが出る場合と、意図しない結果が返る場合がある)ため、x と y はもともと別の列に分けて指定するのが安全です。

エラーは出ないが要注意なケース

LINEST には「結果は返るが信頼できない」状況があります。エラーが出ないため気付きにくく、初心者がはまりやすい罠です。

  • データ点が 1〜2 個しかないとき:エラーにならず、傾き 0 や完全フィットの値を返してしまう。実用には最低 3 点、できれば 10 点以上のデータを推奨
  • 完全な多重共線性があるとき(例:x2 = 2 × x1):エラーにならず数値を返すが、係数の標準誤差が極端に小さい・F 値が極端に大きい・R2 がぴったり 1.0 になる、などの兆候で判別する必要がある

「数値が出た = 信頼できる」とは限りません。必ず R2 や残差をチェックしてからモデルを使ってください。

マウス操作で回帰したいときは「分析ツール」アドイン

LINEST を覚える前に「とにかくマウス操作で回帰結果一覧を出したい」場合は、Excel に標準で用意されている 「分析ツール」アドインの「回帰分析」が便利です。係数・R2・F 値・残差グラフまでまとめて出力してくれます。

有効化手順は次のとおりです。

  1. 「ファイル」→「オプション」→「アドイン」を開く
  2. 下部の「管理:Excel アドイン」横にある「設定」をクリック
  3. 「分析ツール」にチェックを入れて「OK」
  4. 「データ」タブの右端に「データ分析」ボタンが追加されるので、そこから「回帰分析」を選択

分析ツールは「数式で回帰結果を再計算したくない(一度きり出力できれば良い)」用途向きで、データを更新しても結果は自動更新されません。データに連動させたいなら LINEST のほうが向きます。

関連関数の使い分け早見表

用途関数スピル単回帰のみ重回帰
傾きを 1 セルでSLOPE(y, x)××
切片を 1 セルでINTERCEPT(y, x)××
R2 を 1 セルでRSQ(y, x)××
既存データに合わせた予測値(複数)TREND(y, x, 新x)
1 点だけ予測FORECAST.LINEAR(新x, y, x)××
全部入り(係数 + 統計量、重回帰対応)LINEST(y, x, [const], [stats])

まとめ

  • LINEST 関数は Excel で線形回帰の傾き・切片・決定係数 R2 を 1 つの数式で求める統計関数
  • 単回帰なら SLOPE / INTERCEPT のほうが式が短い。x が複数の重回帰、または R2 など統計量が必要なら LINEST
  • 重回帰の係数は x 範囲の逆順で出力されるので注意
  • 第 4 引数 TRUE で 5 行 ×(k+1)列のスピルが返り、R2・F 値・標準誤差まで一度に取得できる
  • 5 行スピルの行 3〜5 の 3 列目以降が #N/A になるのは仕様
  • エラーは #REF!(サイズ不一致)と #VALUE!(文字列混入)が中心
  • データが少なすぎる、完全な多重共線性がある、などのケースは エラーが出ずに誤った数値が返るので、R2 と残差は必ず確認する

本記事の内容は Microsoft 365 / Excel 2024(Build 19822)の実機で全数式を検証した結果に基づいています。

Next Read

このあと読む記事

今の内容に近い記事から、次の1本と補助記事を続けて見つけられるようにしています。

Keep Exploring

このテーマをさらに探す

同じテーマの入口記事と更新記事を、一覧の形でまとめています。

コメント