WorksheetFunction.LinEst(Object, Object, Object, Object) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
"最小二乗法" を使って指定したデータに最もよく当てはまる直線を算出し、この直線を記述する配列を返すことによって直線の補正項を計算します。 この関数では、配列の値を返すので、配列数式として入力する必要があります。
public object LinEst(object Arg1, object Arg2, object Arg3, object Arg4);
Public Function LinEst (Arg1 As Object, Optional Arg2 As Object, Optional Arg3 As Object, Optional Arg4 As Object) As Object
パラメーター
- Arg1
- Object
既知の y: 既にわかっている y の値の系列で、y = mx + b という関係になります。
- Arg2
- Object
既知の x: 既にわかっている x の値の系列で、y = mx + b という関係になります。
- Arg3
- Object
定数: 定数 b を 0 にするかどうかを論理値で指定します。
- Arg4
- Object
補正: 回帰指数曲線の補正項を追加情報として返すかどうかを、論理値で指定します。
返品
注釈
直線は次の演算式で表されます。
y = mx + b または
y = m1x1 + m2x2 + ... + b (独立変数 x の範囲が複数の場合)
従属変数 y は独立変数 x の関数です。 また、m はそれぞれの x に対応する係数で、b は y 切片と呼ばれる定数です。 y、x、m がベクトル (1 次元配列) であることに注意してください。 LinEst が返す配列は {mn,mn-1,...,m1,b} です。 LinEst は追加の回帰統計を返すこともできます。
既知の y の配列が 1 つの列に入力されている場合、既知の x の各列はそれぞれ異なる変数であると見なされます。
既知の y の配列が 1 つの行に入力されている場合、既知の x の各行はそれぞれ異なる変数であると見なされます。
既知の x の配列には、1 つまたは複数の変数の系列を指定することができます。 変数の系列が 1 つである場合、既知の y と既知の x は、両者の次元が同じであれば、どのような形の範囲であってもかまいません。 変数の系列が複数である場合、既知の y は 1 行または 1 列のセル範囲でなければなりません。
既知の x を省略すると、既知の y と同じサイズの {1,2,3,...} という配列を指定したと見なされます。
const が true または省略の場合、b は正常に計算されます。
const が false の場合、b は 0 に設定され、m 値は y = mx に適合するように調整されます。
stats が truuue の場合、 LinEst は追加の回帰統計を返すため、返される配列は {mn,mn-1,...,m1,b;sen,sen-1,...,SE1,SEB;r2,sey;F,df;ssreg,ssresid}.
stats が false または省略された場合、 LinEst は m 係数と定数 b のみを返します。
次のような回帰直線の補正項が追加情報として返されます。
| se1,se2,...,sen | 係数 m1,m2,...,mn に対する標準誤差の値です。 |
| seb | 定数 b の標準誤差値 (const が false の場合、seb = #N/A)。 |
| R2 | 確実度の係数です。 予測される y の値と実際の y の値を比較して、0 から 1 の範囲の数値を計算します。 1 の場合、標本には完全な相関関係があり、推定された y 値と実際の y 値の間に差はありません。 逆にこの係数の値が 0 である場合、回帰直線の演算式は y の値の予測にはほとんど役立ちません。 |
| sey | 予測される y の値に対する標準誤差です。 |
| F | F 補正項または F 観測値です。 F 補正項を利用すると、独立変数と従属変数の間で観察された関係が偶然によるものかどうかを判断できます。 |
| df | 自由度です。 自由度を利用すると、統計表の中で F の臨界値を見つけるのに役立ちます。 テーブルで見つかった値を LinEst によって返された F 統計と比較して、モデルの信頼度を決定します。 |
| ssreg | 回帰の平方和です。 |
| ssresid | 残余の平方和です。 |
次の図では、回帰直線の追加補正項が返される順序を示します。
図 1: ワークシート
傾きとy切片で任意の直線を記述できます。
勾配(m):
直線の傾き (m) は、直線上の 2 点の座標が (x1,y1)、(x2,y2) で表されるとき、(y2 - y1)/(x2 - x1) で計算できます。
y 切片 (b):
直線の y 切片 (b) とは、直線が y 軸と交わるときの y の値です。
直線の演算式は、y = mx + b で表されます。 m と b の値がわかれば、y または x の値をこの演算式に代入することにより、直線上の任意の点の座標を計算することができます。 Trend(Object, Object, Object, Object)機能を使用することもできます。
独立した x 変数が 1 つしかない場合、次の数式を使用して、傾きと y 切片の値を直接取得できます。
勾配:
=INDEX(LINEST(known_y's,known_x's),1)
Y 切片:
INDEX(LINEST(既知の y, 既知の x),2)
LineEst によって計算される線の精度は、データ内の散布の程度によって異なります。 データが線形であるほど、 LineEst モデルの精度が高くなります。 LineEst では、データに最適な最小二乗法が使用されます。 独立変数 x の値が 1 つしかわからない場合は、次の数式を使って m と b の値が計算されます。
図 2: 数式
図 3: 数式
ここで、x は標本平均 AVERAGE(既知の x)、y は標本平均 AVERAGE(既知の y) です。
直線フィッティング関数と曲線フィッティング関数 LineEst と LogEst(Object, Object, Object, Object) は、データに最適な直線または指数曲線を計算できます。 ただし、データを直線で近似するか指数曲線で近似するかは、データに合わせて選択する必要があります。 直線の場合は、TREND(既知の y, 既知の x)、指数曲線の場合は GROWTH(既知の y, 既知の x) を使って計算することができます。 これらの関数は、引数として新しい x を指定しなくても、直線または指数曲線上で実際のデータ要素に対応する、y の予測値の配列を返します。 これにより、予測値と実際の値を比較することができます。 両者の値をひとめで比較できるように、グラフを作成することもできます。
回帰分析では、直線上の各点ごとに、予測される y の値と実際の y の値との平方差が計算されます。 このようにして計算した平方差の合計を "残余の平方和"(ssresid) と呼びます。 次に、"総平方和"(sstotal) が計算されます。 const = true の場合、または省略した場合、平方和の合計は、実際の y 値と y 値の平均との差の 2 乗の和になります。 const = false の場合、平方和の合計は実際の Y の値の平方和になります (個々の Y 値から平均 Y 値を減算しない)。 回帰の平方和 ssreg は、ssreg = sstotal - ssresid として計算されます。 総平方和と比較し、残余の平方和が小さければ小さいほど、確実度の係数である r2 の値が大きくなり、回帰分析で得られた方程式が変数間の関係をより正確に表していることになります。 ここで、r2 = ssreg/sstotal です。
場合によっては、1 つ以上の X 列 (Y と X が列内にあると仮定) に他の X 列がある場合に、追加の予測値がないことがあります。 言い換えると、1 つ以上の X 列を削除すると、予測される Y 値が等しく正確になる可能性があります。 その場合、これらの冗長な X 列は回帰モデルから省略する必要があります。 この現象は、任意の冗長な X 列を非冗長 X 列の倍数の合計として表すことができるため、"共線性" と呼ばれます。 LinEst は共線性をチェックし、冗長な X 列を識別したら回帰モデルから削除します。 削除された X 列は、 LinEst 出力で係数が 0 と se が 0 であると認識できます。 1 つ以上の列が冗長なものとして削除された場合、df は予測目的で実際に使用される X 列の数に依存するため、df が影響を受けます。 冗長な X 列が削除されたために df が変更された場合は、sey と F の値にも影響します。 共線性は、実際には比較的まれであるはずです。 ただし、発生する可能性が高いケースの 1 つは、一部の X 列に、実験の被験者が特定のグループのメンバーであるかどうかの指標として 0 と 1 のみが含まれている場合です。 const = true または省略した場合、 LinEst は切片をモデル化するために、すべての 1 の追加の X 列を効果的に挿入します。 男性の場合は被験者ごとに 1、そうでない場合は 0 の列があり、女性の場合は被験者ごとに 1、そうでない場合は 0 の列がある場合、後者の列は重複しています。 LineEst によって追加されたすべての 1 の追加列のエントリから "男性インジケーター" 列のエントリを減算することで取得できるため、この後者の列は冗長です。
df は、共線性のためにモデルから X 列が削除されない場合、次のように計算されます。known_xの K 列があり、const = true または省略されている場合、df = n – k – 1。 const = falseの場合、df = n - k。 どちらの場合も、共線性により削除される各 X 列は df を 1 ずつ増加させます。
計算結果が配列となる数式は、配列数式として入力する必要があります。 When entering an array constant such as known_x's as an argument, use commas to separate values in the same row and semicolons to separate rows. 区切り文字は、コントロール パネルの [地域] および [言語] のロケール設定により異なる場合があります。
回帰演算式によって予測計算された y の値は、演算式を決定するときに使用した y の値の範囲外では、有効な値にならない場合があります。 LinEst 関数で使用される基になるアルゴリズムは、Slope(Object, Object) 関数および Intercept(Object, Object) 関数で使用される基になるアルゴリズムとは異なります。 アルゴリズムの違いにより、データに不確定さや共線性が存在した場合に、異なる結果が得られる場合があります。 たとえば、既知の y 引数のデータ要素が 0 で、既知の x 引数のデータ要素が 1 であったとします。
LineEst は値 0 を返します。 LinEst アルゴリズムは、同一線上データに対して妥当な結果を返すように設計されており、この場合、少なくとも 1 つの答えを見つけることができます。 Slope(Object, Object) Intercept(Object, Object) は #DIV/0! を返します。 エラーを返します。 Slope(Object, Object)とIntercept(Object, Object)アルゴリズムは、1 つの答えだけを探すように設計されており、この場合、複数の答えが存在する可能性があります。