バージョン7.0の時点で,線形回帰機能はWolfram言語に組み込まれた. »

線形回帰パッケージ

組込み関数のFitは指定された基底関数の線形結合として,データのリストの最小二乗フィットを求める.このパッケージの関数RegressDesignedRegressは,決定係数RSquared,分散分析表ANOVATable,平均二乗誤差EstimatedVarianceのような一般的に要求される診断のリストを与えることによりFitを増強する.回帰関数の出力は,必要な情報だけが生成されるように制御することができる.非線形回帰パッケージは,非線形モデルについて同様の機能を提供する.

基底関数 は予測因子を独立変数の関数として指定する.応答変数の結果的なモデルは, である.ここで i 番目の応答,i 番目の観測で評価される j 番目の基底関数,i 番目の残留誤差を示す.

係数 の推定値は,誤差平方和あるいは残差平方和である を最小化するように計算される.例えば,簡単な線形回帰は基底関数を として定義することによって確立できる.ここで を最小化するするものとして求められる.

Regress[data,{1,x,x2},x]二次モデルにデータ点のリスト data をフィットする
Regress[data,{1,x1,x2,x1x2},{x1,x2}]
独立変数 の間の相互作用を含むモデルに data をフィットする
Regress[data,{f1,f2},vars]変数 vars の関数 の線形結合からなるモデルに data をフィットする

Regressの使用

Regressの引数はFitの引数と同様の形式を取る.データは,独立変数と関連した応答の観測値からなるベクトルのリストである.基底関数 は変数として与えられるシンボルの関数でなければならない.3つのシンボルはデータに表現される独立変数に対応する.基底関数のリストに明確に定数関数が与えられていない場合は,定数関数 がデフォルトでリストに加えられる.

データは,データ点のベクトルでもよい.この場合は,Regressはベクトルが値, , の独立変数を持つ応答変数の値を表すものと想定する.

{y1,y2,}応答値のリストで指定されたデータ点.ここで1つの独立変数は, , という値を取るものと仮定する
{{x11,x12,,y1},{x21,x22,,y2}}行列で指定されたデータ点.ここで k 番目の独立変数の i 番目の値であり,i 番目の値である

Regressでデータを指定する方法

パッケージをロードする.
In[1]:=
Click for copyable input
このデータでは,1つの予測子と応答のペアが順に並んでいる.
In[2]:=
Click for copyable input
データのプロットである.
In[3]:=
Click for copyable input
Out[3]=
モデル にフィットするための出力である.
In[4]:=
Click for copyable input
Out[4]=
フィットした関数だけが必要なら,Fitを使ってもよい.
In[5]:=
Click for copyable input
Out[5]=
オプション名
デフォルト値
IncludeConstantTrueモデルに自動的に含まれる定数
RegressionReportSummaryReport含まれるフィット診断
WeightsAutomatic各データ点あるいは純関数に対する重みのリスト
BasisNamesAutomatic表のヘディングの基礎要素の名前

Regressのオプション

Regressのオプションの中で,2つが計算方法に影響を及ぼす.IncludeConstantはデフォルト設定がTrueとなっており,基底関数で指定されていなくても定数項をモデルに加える.この定数項なしでモデルをフィットするためにはIncludeConstant->Falseと指定し,基底関数に定数を含まないようにする.

Weightsオプションでは,各データ点につき1つずつの重みのリストを指定することにより,重み付き最小二乗が実装できる.デフォルトのWeights->Automaticは各データ点に対する単一の重みを示す.Weights->{w1,,wn}のとき,パラメータ推定値は重み付き残差平方和 を最小化するように選ばれる.

Weightsは応答の純関数を指定することもできる.例えば, を最小化するためのパラメータ推定値を選ぶためにはWeights->(Sqrt[#]&)と設定する.

RegressionReportBasisNamesの両オプションは出力の形式と内容に関係する.RegressionReportが指定されていないと,Regressは自動的にParameterTableRSquaredAdjustedRSquaredEstimatedVarianceANOVATableの値を含むリストを与える.これらのオブジェクトで,デフォルトのSummaryReportが構成される.RegressionReportオプションはデフォルトのセット以上(あるいは以下)の結果が出力に含まれるように,単独のオブジェクトあるいはオブジェクトのリストを指定するために使われる.RegressionReportValues[Regress]Regress関数のRegressionReportリストに含まれる可能性のあるオブジェクトを与える.

オプションBasisNamesを使うと,ParameterTableおよびParameterCITableのような表で予測因子のヘディングに名前を付けることができる.

回帰関数はSingularValueListあるいはStudentTCIに指定できるオプションならどれを取ることもできる.特に,内部異常値展開の数値的許容差はToleranceを使って指定し,仮説検定・信頼区間の信頼水準はConfidenceLevelを使って指定する.

BestFit最適フィット関数
BestFitParameters最適フィットパラメータ推定値
ANOVATable分散分析表
EstimatedVariance推定誤差分散
ParameterTable標準誤差と検定統計量を含むパラメータ情報の表
ParameterCITableパラメータに対する信頼区間の表
ParameterConfidenceRegionパラメータに対する楕円形信頼領域
ParameterConfidenceRegion[{fi1,fi2,}]
パラメータに対する楕円形信頼領域
FitResiduals観測された応答と予測された応答の差
PredictedResponse独立変数の観測値で最適フィット関数を評価することで得られるフィットした値
SinglePredictionCITable応答変数の1回の観測を予測するための信頼区間の表
MeanPredictionCITable応答変数の期待値を予測するための信頼区間の表
RSquared決定係数
AdjustedRSquared調整された決定係数
CoefficientOfVariation変動係数
CovarianceMatrixパラメータの共分散行列
CorrelationMatrixパラメータの相関行列

RegressionReport の値の例

分散分析表のANOVATableは,指定されたモデルを定数項のみを含む小さいモデルと比較する.IncludeConstant->Falseと指定されていれば,小さい方のモデルがデータに還元される.この表にはモデルによる(というラベルの付いた行)自由度,平方和,平均平方および残差による(というラベルの付いた行)自由度,平方和,平均平方が含まれる.残差平均平方はEstimatedVarianceでも使え,残差平方和をその自由度で除算することにより計算される.F 検定は平均平方の比を使って2つのモデルを比較する.F の値が大きい場合は,小さい方のモデルを支持する帰無仮説が棄却される.

それぞれの基底関数の重要性を評価するためには,RegressionReportによって指定されたリストにParameterTableを入れることによって得られるパラメータ表から,パラメータ推定値についての情報を得ることができる.この表には推定値,その標準誤差,各パラメータがゼロかどうかを検定するための t 統計量が含まれる.得られた統計量を自由度 n は標本サイズ,p は予測因子の数)の t 分布と比較することで,p 値が計算される.パラメータ推定値の信頼区間も t 分布に基づいており,ParameterCITableを指定することで求められる.ParameterConfidenceRegionはすべてのフィットパラメータの楕円の結合信頼領域を指定する.ParameterConfidenceRegion[{fi1,fi2,}]は,基底関数の完全集合の部分集合である基底関数に関連するフィットパラメータの結合条件信頼領域を指定する.

重相関係数の平方は決定係数 と呼ばれ,総平方和に対するモデルの平方和の比によって与えられる.これは予測因子と応答変数との関係を示す要約統計量である.AdjustedRSquaredとして定義され,モデルの次の部分集合を比較するのに使える調整された値を与える.変動係数は,応答変数の平均に対する残差平方平均平方根の比で与えられる.応答が厳密に正である場合に,誤差変動の相対度数を測定するために変動係数が使われることがある.

MeanPredictionCITableの各行は,独立変数のそれぞれの値における平均応答の信頼区間を与える.SinglePredictionCITableの各行は,独立変数の各値における単独の観測応答の信頼区間を与える.MeanPredictionCITableは回帰曲線を含む可能性の高い領域を与え,SinglePredictionCITableはすべての可能な観測を含む可能性の高い領域を与える.

次では,残差,単独の観測の予測応答の信頼区間表,パラメータ結合信頼領域が返される.
In[6]:=
Click for copyable input
Out[6]=
出力から抽出された残差のリストである.
In[7]:=
Click for copyable input
Out[7]=
観測された応答,予測応答,予測された応答の標準誤差,信頼区間も抽出できる.
In[8]:=
Click for copyable input
残差に対して予測された応答をプロットする.
In[9]:=
Click for copyable input
Out[9]=
予測応答および信頼区間の上限・下限が対応する の値とペアになっている.
In[10]:=
Click for copyable input
これで,生データ,フィットしたカーブ,1つの観測の予測応答に対する95%の信頼区間が表示される.
In[11]:=
Click for copyable input
Out[11]=
GraphicsEllipsoidオブジェクトを表示するために使うことができる.以下は回帰パラメータの95%の結合信頼領域である.
In[12]:=
Click for copyable input
Out[12]=

このパッケージではデータとフィットを評価するための多くの診断を提供している.HatDiagonalは,独立変数の各観測が異常かどうかを測定して,各点のてこ比を与える.CookDPredictedResponseDeltaは影響診断であり,同時に独立変数と応答変数が異常であるかどうかを測定する.残念ながら,これらの診断は1つの外れ値を検出する場合にのみ有用である.特に診断は1つの外れ値を示すこともあるが,その観測を削除して診断を再計算すると他の外れ値を示す可能性がある.これらの診断はすべてこのマスク効果の対象となる.

HatDiagonalハット行列 の対角成分.ここで Xn × p (重み付き)の計画行列である
JackknifedVariance.ここで i 番目の要素が削除されたデータを使って計算された推定誤差分散である
StandardizedResiduals推定誤差分散を使って計算された標準誤差により,スケールされた残差をフィットする
StudentizedResidualsジャックナイフ推定誤差分散を使って計算された標準誤差でスケールされた残差をフィットする
CookD.ここで i 番目の要素が外れ値かどうかを評価するクックの平方距離の診断である
PredictedResponseDelta.ここで はKuhとWelschのDFFITS診断である.この診断はすべてのデータを使用したときと,i 番目の要素を削除したデータを使用したときの,i 番目の予測応答の差を標準化し符号を付けて与える
BestFitParametersDelta.ここで は,KuhとWelschのDFBETAS診断である.この診断は,すべてのデータを使ったときと,i 番目の要素を削除したデータを使ったときの j 番目のパラメータ推定の差を標準化し,符号をつけて与える
CovarianceMatrixDetRatio.ここで は,KuhとWelschのCOVRATIO診断である.この診断は,もとのデータを使って計算されたパラメータ共分散行列の行列式に対する,i 番目のデータを削除したデータを使って計算したパラメータ共分散行列の比を与える

外れ値検出のための診断

診断の中には各基底関数がフィットにどの程度寄与しているか,あるいは基底関数が共線関係に関与しているかどうかを示すものもある.SequentialSumOfSquaresベクトルの要素の和はANOVATableにリストされるモデルの平方和を与える.各要素は,各不定数基底関数を順にモデルに加えることにより得られるモデルの平方和の増加量に対応する.PartialSumOfSquaresベクトルの各要素は,対応する不定数基底関数を他の基底関数すべてで構成されるモデルに加えることにより,モデルの平方和における増加量を与える.SequentialSumOfSquaresは単変量多項モデルの次数を決定するのに便利であり,PartialSumOfSquaresは予測因子の大きな集合を小さくするのに便利である.VarianceInflationあるいはEigenstructureTable予測因子集合の整頓に使用できる.

PartialSumOfSquares各不定数の基底関数を残りの基底関数で構成されるモデルに加えることで,モデルの平方和の増分を与える
SequentialSumOfSquares各不定数の基底関数の1要素が順にモデルに加えられることにより,モデルの平方和の増分を与える
VarianceInflation.ここで j 番目のパラメータに関連する分散拡大要因である
EigenstructureTable不定数の基底関数の相関行列の固有構造を与える表

基底関数の評価と共線性の検出のための診断

1階の自己回帰過程が存在するかどうかのテストには,ダービン・ワトソン(DurbinWatson)の d 統計量が有用である.この統計量は0と4の間の値を取り,その範囲の中心に近い値は,回帰モデルであることを潜在的に仮定する無相関な誤差を示す.統計量の棄却限界値は標本の大きさ,モデルのパラメータ数,希望の有意水準によって異なる.棄却限界値は,発表されている表に記載されている.

DurbinWatsonDダービン・ワトソン(DurbinWatson)d 統計量

相関誤差の診断

ここで言及していない他の統計は,キャッチャー行列を使って計算することができる.この行列は予測因子がパラメータベクトルについて持っている情報をすべてキャッチする.この行列はRegressionReportオプションでCatcherMatrixを指定することによりRegressからエキスポートすることができる.

CatcherMatrixp × n の行列 C.ここで は推測されたパラメータべクトル,y は応答ベクトルである

予測因子によって提供されるパラメータ情報を記述する行列

線形回帰がもとのデータではなく,既存の計画行列に適用されることがよくある.計画行列とは,独立変数の観測値において評価された基底関数を含むリストである.データがすでに,対応する応答データのベクトルを持つ計画行列の形式であるなら,Regressで提供される解析と同じ解析にDesignedRegressを使うことができる.DesignMatrixはデータを計画行列の形式にする.

DesignedRegress[designmatrix,response]応答データのベクトル response が与えられたときに designmatrix によって表されるモデルをフィットする
DesignMatrix[data,{f1,f2},vars]変数 vars の関数 の線形結合として data をモデル化するための計画行列を与える

計画行列を使った線形回帰の関数

DesignMatrixRegressと同じ引数を取る.これはDesignedRegressに必要な引数を得るため,あるいは基底関数を正しく指定したかどうかを調べるために使うことができる.DesignMatrixを使うときは,IncludeConstant->Falseが指定されていない限り,常に定数項が含まれる.RegressのオプションでIncludeConstant以外はすべてDesignedRegressでも受け入れられる.RegressionReportValues[DesignedRegress]DesignedRegress関数のRegressionReportリストに含まれる可能性のある値を与える.

以下は既出の回帰解析で使用された計画行列である.
In[13]:=
Click for copyable input
Out[13]=
観測された応答のベクトルである.
In[14]:=
Click for copyable input
Out[14]=
DesignedRegressの結果はRegressの結果と同一である.
In[15]:=
Click for copyable input
Out[15]=
DesignedRegress[svd,response]応答データのベクトル response が与えられたら,計画行列の特異値分解 svd によって表されるモデルをフィットする

計画行列の特異値分解を使う線形回帰

DesignedRegressは計画行列の特異値分解も受け入れる.回帰に重みが付いていなければ,このアプローチにより計画行列分解の再計算が省略できる.

計画行列の特異値分解である.
In[16]:=
Click for copyable input
いくつかの応答に関心がある場合は,以下の方法により計画行列分解の再計算が省略できる.
In[17]:=
Click for copyable input
Out[17]=