ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

線形回帰

はじめに

データ model は、予測変数と応答変数間の関係を明確に説明します。線形回帰は、モデルの係数が線形であるデータ モデルを近似します。線形回帰の最も一般的なタイプは、最小二乗近似 です。最小二乗近似では、直線と多項式を近似できます。

量間の関係をモデル化する前に、それらの量間に線形関係がある場合には相関解析を行うことが適切です。変数が非線形関係をもつ可能性があっても、相関分析では見つけることができないことに注意してください。詳細は、線形相関を参照してください。

MATLAB® 基本的な近似 GUI を利用すると、データを近似する場合に、モデル係数の計算ができ、データの他にモデルをプロットできます。たとえば、「例: 基本的な近似 GUI」を参照してください。MATLAB の関数 polyfit と関数 polyval を用いて、係数について線形であるモデルにデータを近似することもできます。たとえば、「例: プログラムによる近似」を参照してください。

データを非線形モデルで近似しなければならない場合、関係を線形にするように変数を変換します。または、Statistics Toolbox™ の nlinfit 関数か Optimization Toolbox™ の lsqcurvefit 関数を使用するか、Curve Fitting Toolbox™ の関数を適用して、非線形関数を直接近似させます。

ここでは以下の方法を説明します。

  • データ近似が適切であるかどうかを調べるために、相関解析を用いて 2 つの量が関連しているかどうかを決めます。

  • データに線形モデルを近似する

  • 残差をプロットし、パターンを調べて、適合度を評価する

  • 適合度 R2 と調整された R2 の尺度を計算する

近似の残差と適合度

残差は、応答 (従属) 変数の観測された値とモデルで予測される値の差です。データを適切なモデルで近似すると、残差はランダムな誤差に近づきます。つまり、残差の分布が認識できるパターンを示すことはありません。

線形モデルを使用して近似を生成するには、残差の 2 乗和を最小化しなければなりません。この最小化により、最小二乗近似と呼ばれる値が生成されます。残差のプロットを視覚的に調べることにより、近似の「適合度」について知ることができます。残差プロットがパターンをもつ場合 (すなわち、残差データ点がランダムな散布図をもつように見えない)、このランダム性はモデルがデータを適切に近似していないことを示します。

データの状況に従って近似を評価します。たとえば、データを近似する目的が物理的意味をもつ係数を抽出することである場合、モデルがデータの物理を反映していることが重要です。近似の適合度を評価する際は、データが何を表すか、データがどのように測定されたか、さらにデータがどのようにモデル化されたかについて理解することが重要です。

適合度の尺度の 1 つは、決定係数、または R2 (r の 2 乗) です。この統計は、モデルの近似から得られる値がモデルで予測しようとする従属変数にどれくらい近いかを示します。統計学者は、近似したモデルからの残差分散を使用して R2 を定義します。

R2 = 1 – SSresid / SStotal

SSresid は、回帰からの 2 乗した残差の合計です。SStotal は、従属変数の平均の差を 2 乗した合計です (総 2 乗和)。どちらも正のスカラー値です。

基本的な近似ツールを使用する場合の R2 の計算方法については、「決定係数 R2 の取得」を参照してください。R2 統計の計算とその多変量一般化の詳細については、引き続きこちらをお読みください。

例: 多項式近似からの R2 の計算

多項式回帰の係数から R2 を導出して、以下の例が示すように、線形モデルで説明される y 内の分散の程度を調べることができます。

  1. データ ファイル count.dat の変数 count の最初の 2 列から 2 つの変数 xy を作成します。

    load count.dat
    x = count(:,1);
    y = count(:,2);
  2. polyfit を使用して、x から y を予測する線形回帰を計算します。

    p = polyfit(x,y,1)
    
    p =
        1.5229   -2.1911
    

    p(1) は傾きで p(2) は線形予測子の切片です。また、基本的な近似 GUI を使用して回帰係数を取得することもできます。

  3. p を使用して、y を予測するために polyval を呼び出し、結果として yfit を得ます。

    yfit = polyval(p,x);

    polyval を使用すれば、近似式を入力する手間が省けます。近似式は次のようになります。

    yfit =  p(1) * x + p(2);
  4. 残差値をベクトル符号付き数として計算します。

    yresid = y - yfit;
  5. 残差を 2 乗し、合計して、残差の 2 乗和を取得します。

    SSresid = sum(yresid.^2);
  6. 観測の回数から 1 を引いた数で y の分散を掛けることによって y の 2 乗総和を計算します。

    SStotal = (length(y)-1) * var(y);
    
  7. このトピックのはじめに指定された式を使用して、R2 を計算します。

    rsq = 1 - SSresid/SStotal
    
    rsq =
        0.8707

    これは、線形方程式 1.5229 * x -2.1911 が変数 y の 87% の分散を予測することを示しています。

多項式回帰の調整された R2 の計算

通常、より高い次数の多項式に近似することによって、モデルの残差を減らすことができます。さらに項数を追加すると、決定係数 R2 が増えます。データにより近い近似を取得しますが、R2 で計算できない、より複雑なモデルを使用します。ただし、この統計を微調整した、調整済み R2 には、モデルの項数のペナルティが含まれます。このため、調整済み R2 は、さまざまなモデルが同じデータにどれだけ近似するかを比較するのに、より適しています。調整済み R2 は次のように定義されます。

R2adjusted = 1 - (SSresid / SStotal)*((n-1)/(n-d-1))

ここで n はデータ内の観測の数、d は多項式の次元です。(線形近似は次元が 1、2 次近似は 2、3 次近似は 3 など)

次の例では前の例 例: 多項式近似からの R2 の計算 のステップを反復しますが、線形 (次元 1) 近似の代わりに 3 次 (次元 3) 近似を実行します。3 次近似から、単純および調整済みの両方の R2 値を計算して、項数の追加によって予測機能が向上するかどうかを調べます。

  1. データ ファイル count.dat の変数 count の最初の 2 列から 2 つの変数 xy を作成します。

    load count.dat
    x = count(:,1);
    y = count(:,2);
  2. polyfit を呼び出して、3 次近似を生成し、 x から y を予測します。

    p = polyfit(x,y,3)
    
    p =
       -0.0003    0.0390    0.2233    6.2779

    p(1) は傾きで p(2) は線形予測子の切片です。また、基本的な近似 GUI を使用して回帰係数を取得することもできます。

  3. polyval を呼び出し、p の係数を使用して、y を予測します。結果 yfit とします。

    yfit = polyval(p,x);

    polyval は、次のように手動で入力できる明示的な方程式を評価します。

    yfit =  p(1) * x.^3 + p(2) * x.^2 + p(3) * x + p(4);
  4. 残差値をベクトル符号付き数として計算します。

    yresid = y - yfit;
  5. 残差を 2 乗し、合計して、残差の 2 乗和を取得します。

    SSresid = sum(yresid.^2);
  6. 観測の回数から 1 を引いた数で y の分散を掛けることによって y の 2 乗総和を計算します。

    SStotal = (length(y)-1) * var(y);
    
  7. このトピックのはじめに指定された式を使用して、3 次近似の単純な R2 を計算します。

    rsq = 1 - SSresid/SStotal
    
    rsq =
        0.9083
  8. 最後に、調整済み R2 を計算して、自由度を求めます。

    rsq_adj = 1 - SSresid/SStotal * (length(y)-1)/(length(y)-length(p))
    
    rsq_adj =
        0.8945

    調整済み R2、0.8945 は単純な R2、0.9083 よりも小さくなります。これによって多項式モデルの予測へ、より信頼性の高い推定能力を与えられます。

多くの多項式回帰モデルでは、方程式に項数を追加すると、R2 と調整済み R2 の両方が増えます。先の例では、3 次近似を使用したときのほうが線形近似に比べてどちらの統計値も値が大きくなりました。(線形近似での調整済み R2 を計算してみると、値が低くなることが確認できます)。ただし、必ずしも線形近似が次数の高い近似に劣るとは限りません。複雑な近似の方が単純な近似よりも調整済み R2 の値が低くなることがあり、その場合は複雑な近似を行う正当性がないことを示しています。また、基本的な近似ツールで生成される多項式回帰モデルでは R2 は 0~1 の間で常に変動しますが、調整済み R2 はモデルによって負の値になる場合があり、モデルの項数が多すぎることを示します。

相関は因果関係を示すものではありません。常に相関係数と判定を慎重に解釈してください。この係数は、近似したモデルが従属変数内の分散をどれだけ取り除くかを定量化するだけです。このような尺度は、使用するモデルまたは選択する独立変数がモデルで予測される変数の動作を説明するのにどれくらい適しているかを示すものではありません。

Curve Fitting Toolbox 関数を使用するデータ近似

Curve Fitting Toolbox は、次のデータ近似機能によって、MATLAB の基本的な機能を拡張します。

  • 標準の線形最小二乗、非線形最小二乗、重み付き最小二乗、制約付き最小二乗、ロバストな近似手順などを含む線形および非線形パラメトリック近似

  • ノンパラメトリックな近似

  • 近似の適合度を決める統計値の計算

  • 外挿、微分、積分

  • データの削除や平滑化を容易に行える GUI

  • 近似結果を MATLAB コード ファイル、MAT ファイル、ワークスペース変数などのさまざまな形式で保存

詳細は、Curve Fitting Toolbox ドキュメンテーションを参照してください。

この情報は役に立ちましたか?