Main Content

NonLinearModel

説明

NonLinearModel は、当てはめ済みの非線形回帰モデル オブジェクトです。回帰モデルは、応答と予測子の間の関係を説明します。非線形回帰モデルにおける非線形性は、予測子と予測子係数の非線形結合を意味します。

当てはめた非線形回帰モデルを調べるには、NonLinearModel オブジェクトのプロパティを使用します。オブジェクト プロパティには、係数推定値、要約統計量、当てはめ手法および入力データに関する情報が含まれています。オブジェクト関数を使用して、応答の予測や非線形回帰モデルの評価と可視化を行います。モデルの応答はオブジェクト関数 predict または feval を使用して予測できます。

作成

NonLinearModel オブジェクトを作成するには、fitnlm を使用します。

プロパティ

すべて展開する

係数推定値

この プロパティ は読み取り専用です。

係数推定値の共分散行列。p 行 p 列の数値の行列を指定します。p は、当てはめたモデルの係数の個数で、NumCoefficients で与えられます。

詳細については、係数の標準誤差と信頼区間を参照してください。

データ型: single | double

この プロパティ は読み取り専用です。

係数の名前。対応する項の名前が含まれている文字ベクトルの cell 配列を指定します。

データ型: cell

この プロパティ は読み取り専用です。

係数の値。table を指定します。Coefficients には、各係数に対応する 1 つずつの行と次の列が格納されます。

  • Estimate — 推定される係数値

  • SE — 推定の標準誤差

  • tStat — 係数がゼロであるという帰無仮説をもつ両側検定の t 統計量

  • pValue — t 統計量の p 値

係数に対する他の検定を実行するには、coefTest を使用します。係数推定値の信頼区間を求めるには、coefCI を使用します。

ベクトルとしてこれらの列のいずれかを取得するには、ドット表記を使ってプロパティにインデックスを付けます。たとえば、モデル mdl 内の推定された係数ベクトルを取得するには、次のようにします。

beta = mdl.Coefficients.Estimate

データ型: table

この プロパティ は読み取り専用です。

当てはめたモデル内の係数の個数。正の整数を指定します。NumCoefficientsNonLinearModel オブジェクトの NumEstimatedCoefficients と同じです。NumCoefficients は回帰の自由度に等しくなります。

データ型: double

この プロパティ は読み取り専用です。

当てはめたモデル内の推定された係数の個数。正の整数を指定します。NumEstimatedCoefficientsNonLinearModel オブジェクトの NumCoefficients と同じです。NumEstimatedCoefficients は回帰の自由度に等しくなります。

データ型: double

要約統計量

この プロパティ は読み取り専用です。

誤差 (残差) の自由度。推定された係数の個数を観測値の個数から減算した値に等しくなります。正の整数を指定します。

データ型: double

この プロパティ は読み取り専用です。

モデルの診断情報。table を指定します。診断は、外れ値と影響が大きい観測値を特定するために役立てることができます。Diagnostics には次のフィールドが含まれています。

フィールド意味ユーティリティ
LeverageHatMatrix の対角要素各観測値の Leverage は、観測された予測子の値によってどの程度まで当てはめが決定されるかを示します。1 に近い値は、当てはめの大部分がその観測値によって決定され、他の観測値からの寄与は少ないことを示します。0 に近い値は、当てはめの大部分が他の観測値によって決定されることを示します。係数 P と観測 N のあるモデルの場合、Leverage の平均値は P/N です。2*P/N より大きい Leverage の値は、高いてこ比を示します。
CooksDistanceクックの距離CooksDistance は、当てはめた値におけるスケーリングされた変化の測定です。平均のクックの距離の 3 倍より CooksDistance が大きい観測値は、外れ値である可能性があります。
HatMatrix観測された応答から fitted を計算するための射影行列HatMatrix は、Fitted = HatMatrix*Y となる NN 列の行列です。ここで、Y は応答ベクトル、Fitted は応答の当てはめた値のベクトルです。

Diagnostics には、外れ値と影響力が大きい観測値を特定するために役立つ情報が格納されます。詳細については、ハット行列とてこ比およびクックの距離を参照してください。

観測値の診断情報をプロットするには、plotDiagnostics を使用します。

欠損値 (ObservationInfo.Missing 内) または除外された値 (ObservationInfo.Excluded 内) が原因で当てはめに使用されなかった行では、CooksDistance 列に NaN 値が、Leverage 列および HatMatrix 列にゼロが格納されます。

これらの列のいずれかを配列として取得するには、ドット表記を使用してプロパティのインデックスを指定します。たとえば、モデル mdl 内のクックの距離のベクトルを取得するには、次のようにします。

CooksDistance = mdl.Diagnostics.CooksDistance;

データ型: table

この プロパティ は読み取り専用です。

入力データに基づいて当てはめた (予測した) 応答値。n 行 1 列の数値ベクトルを指定します。n は入力データ内の観測値の個数です。predict を使用して、他の予測子の値の予測を計算するか、Fitted で信頼限界を計算します。

データ型: single | double

この プロパティ は読み取り専用です。

応答値におけるモデルの分布の対数尤度。数値として指定します。平均はモデルから当てはめられ、他のパラメーターはモデルの当てはめに伴って推定されます。

データ型: single | double

この プロパティ は読み取り専用です。

モデルの比較基準。次のフィールドがある構造体を指定します。

  • AIC — 赤池情報量基準。AIC = –2*logL + 2*m であり、ここで logL は対数尤度、m は推定パラメーターの数です。

  • AICc — 標本サイズについて修正された赤池情報量基準。AICc = AIC + (2*m*(m + 1))/(n – m – 1) であり、ここで n は観測値の数です。

  • BIC — ベイズ情報量基準。BIC = –2*logL + m*log(n) です。

  • CAIC — 一貫した赤池情報量基準。CAIC = –2*logL + m*(log(n) + 1) です。

情報量基準は、同じデータに当てはめた複数のモデルを比較するために使用できるモデル選択ツールです。これらの基準は、尤度に基づくモデル近似の尺度であり、複雑度 (特にパラメーター数) に対するペナルティが含まれています。情報量基準が異なるとペナルティの形式が異なります。

複数のモデルを比較した場合に、情報量基準の値が最も小さいモデルが最良近似モデルです。最良近似モデルは、モデルの比較に使用する基準によって変化する可能性があります。

これらの基準値のいずれかをスカラーとして取得するには、ドット表記を使用してプロパティのインデックスを指定します。たとえば、モデル mdl の AIC 値 aic を取得するには、次のようにします。

aic = mdl.ModelCriterion.AIC

データ型: struct

この プロパティ は読み取り専用です。

回帰モデルの F 統計量。次のフィールドを含む構造体として指定します。

  • Fstats — 当てはめたモデルとヌル モデルの F 統計量

  • Pvalue — F 統計量の p 値

  • NullModel — ヌル モデル タイプ ('constant' または 'zero' として指定)

当てはめたモデルに切片項が含まれる場合、NullModel は 'constant' (切片項のみを含む) です。それ以外の場合、NullModel は 'zero' (項を含まない) です。

データ型: struct

この プロパティ は読み取り専用です。

平均二乗誤差。数値を指定します。平均二乗誤差は、モデルにおける誤差項の分散の推定値です。

データ型: single | double

この プロパティ は読み取り専用です。

当てはめたモデルの残差。各観測値に対する 1 つずつの行と次の表に記載されている列が含まれている table を指定します。

説明
Raw観測した値から当てはめた値を減算した値
Pearson生の残差を平方根平均二乗誤差 (RMSE) で除算した値
Standardized推定標準偏差で除算した生の残差
Studentized生の残差を残差標準偏差の独立した推定値で除算した値。観測値 i の残差が、観測値 i を除くすべての観測値に基づく誤差標準偏差の推定値によって除算されます。

残差のプロットを作成するには、plotResiduals を使用します。詳細については、残差を参照してください。

欠損値 (ObservationInfo.Missing 内) または除外された値 (ObservationInfo.Excluded 内) が原因で当てはめに使用されなかった行には、NaN 値が格納されます。

ベクトルとしてこれらの列のいずれかを取得するには、ドット表記を使ってプロパティにインデックスを付けます。たとえば、モデル mdl 内の生の残差のベクトル r を取得するには、次のようにします。

r = mdl.Residuals.Raw

データ型: table

この プロパティ は読み取り専用です。

平方根平均二乗誤差 (残差)。数値を指定します。

RMSE = sqrt(MSE),

ここで、RMSE は平方根平均二乗誤差、MSE は平均二乗誤差です。RMSE は、モデルにおける誤差項の標準偏差の推定値です。

データ型: single | double

この プロパティ は読み取り専用です。

モデルの決定係数の値。2 つのフィールドがある構造体を指定します。

  • Ordinary — 通常の (自由度未調整) 決定係数

  • Adjusted — 係数の数に対する自由度調整済み決定係数

決定係数の値は、モデルによって説明される二乗総和の比率です。通常の決定係数の値は、SSR プロパティおよび SST プロパティに関連します。

Rsquared = SSR/SST,

ここで、SST は二乗総和、SSR は回帰二乗和です。

詳細については、決定係数 (R-squared)を参照してください。

これらの値のいずれかをスカラーとして取得するには、ドット表記を使用してプロパティのインデックスを指定します。たとえば、モデル mdl の自由度調整済み決定係数の値を取得するには、次のようにします。

r2 = mdl.Rsquared.Adjusted

データ型: struct

この プロパティ は読み取り専用です。

誤差 (残差) の二乗和。数値を指定します。観測値の重みを使用して学習させたモデルの場合、SSE の計算の二乗和は重み付き二乗和です。

データ型: single | double

この プロパティ は読み取り専用です。

回帰二乗和。数値を指定します。SSR は、当てはめた値と応答の平均の間における偏差の二乗和に等しい値です。観測値の重みを使用して学習させたモデルの場合、SSR の計算の二乗和は重み付き二乗和です。

データ型: single | double

この プロパティ は読み取り専用です。

二乗の総和。数値を指定します。SST は、mean(y) に対する応答ベクトル y の偏差二乗和に等しい値です。観測値の重みを使用して学習させたモデルの場合、SST の計算の二乗和は重み付き二乗和です。

データ型: single | double

近似法

この プロパティ は読み取り専用です。

ロバスト近似の情報。次のフィールドがある構造体を指定します。

フィールド説明
WgtFun'bisquare' などのロバストな重み付け関数 (Robust Options を参照)
Tuneパラメーター調整のために指定された値 ([] で表記)
Weightsロバスト近似の最後の反復で使用された重みのベクトル

fitnlm がロバスト回帰を使用してモデルを構築した場合を除き、この構造体は空です。

データ型: struct

入力データ

この プロパティ は読み取り専用です。

モデルの情報。NonLinearFormula オブジェクトを指定します。

ドット表記を使用して、当てはめたモデル mdl の式を表示します。

mdl.Formula

この プロパティ は読み取り専用です。

当てはめプロセスに関する情報。次のフィールドをもつ構造体を指定します。

  • InitialCoefs — 係数の初期値 (ベクトル beta0)

  • IterOptsfitnlmOptions 名前と値のペア引数に含まれるオプション

データ型: struct

この プロパティ は読み取り専用です。

近似関数が当てはめで使用した観測値の個数。正の整数を指定します。NumObservations は、元の table、データセットまたは行列で指定された観測値の個数から、除外する行数 (名前と値のペアの引数 'Exclude' で設定) または欠損値が含まれている行数を減算した値です。

データ型: double

この プロパティ は読み取り専用です。

モデルの当てはめに使用した予測子変数の個数。正の整数を指定します。

データ型: double

この プロパティ は読み取り専用です。

入力データに含まれている変数の個数。正の整数を指定します。NumVariables は、元の table またはデータセットに含まれている変数の個数、または予測子行列と応答ベクトルの列の総数です。

NumVariables には、予測子または応答としてモデルの当てはめに使用される変数ではないものも含まれます。

データ型: double

この プロパティ は読み取り専用です。

観測値の情報。n 行 4 列の table として指定します。n は入力データの行数に等しくなります。ObservationInfo には、次の表で説明されている列が含まれます。

説明
Weights観測値の重み。数値として指定します。既定値は 1 です。
Excluded除外する観測値のインジケーター。logical 値として指定します。名前と値のペアの引数 'Exclude' を使用して観測値を当てはめから除外した場合、値は true です。
Missing欠損観測値のインジケーター。logical 値として指定します。観測値が欠損値である場合、値は true です。
Subset近似関数が観測値を使用するかどうかのインジケーター。logical 値として指定します。観測値が除外されず、欠損値でもない場合、つまり、近似関数が観測値を使用する場合、値は true です。

ベクトルとしてこれらの列のいずれかを取得するには、ドット表記を使ってプロパティにインデックスを付けます。たとえば、モデル mdl の重みベクトル w を取得するには、次のようにします。

w = mdl.ObservationInfo.Weights

データ型: table

この プロパティ は読み取り専用です。

観測値の名前。当てはめで使用した観測値の名前が含まれている文字ベクトルの cell 配列を指定します。

  • 近似が観測名を含むテーブルまたはデータセットに基づいている場合、ObservationNames はそれらの名前を使用します。

  • それ以外の場合、ObservationNames は空の cell 配列になります。

データ型: cell

この プロパティ は読み取り専用です。

モデルの当てはめに使用した予測子の名前。文字ベクトルの cell 配列を指定します。

データ型: cell

この プロパティ は読み取り専用です。

応答変数名。文字ベクトルを指定します。

データ型: char

この プロパティ は読み取り専用です。

Variables に格納されている入力変数に関する情報。各変数に対応する 1 つずつの行と次の表で説明されている列がある table を指定します。

説明
Class変数のクラス。'double''categorical' などの文字ベクトルによる cell 配列を指定します。
Range

変数の範囲。ベクトルの cell 配列を指定します。

  • 連続変数 — 2 因子ベクトル [min,max]、最小値と最大値

  • カテゴリカル変数 — 異なる変数値のベクトル

InModel当てはめたモデルにどの変数が含まれているかを示すインジケーター。logical ベクトルを指定します。モデルに変数が含まれている場合、値は true です。
IsCategoricalカテゴリカル変数のインジケーター。logical ベクトルを指定します。変数がカテゴリカルである場合、値は true です。

VariableInfo には、予測子または応答としてモデルの当てはめに使用される変数ではないものも含まれます。

データ型: table

この プロパティ は読み取り専用です。

変数の名前。文字ベクトルの cell 配列を指定します。

  • 当てはめが table またはデータセットに基づいている場合、このプロパティはその table またはデータセット内の変数の名前を与えます。

  • 当てはめが予測行列と応答ベクトルに基づいている場合、近似メソッドの名前と値のペアの引数 'VarNames' によって指定された値が VariableNames に格納されます。'VarNames' の既定値は {'x1','x2',...,'xn','y'} です。

VariableNames には、予測子または応答としてモデルの当てはめに使用される変数ではないものも含まれます。

データ型: cell

この プロパティ は読み取り専用です。

入力データ。table を指定します。Variables には予測子と応答の両方の値が格納されます。当てはめが table またはデータセット配列に基づいている場合、Variables にはその table またはデータセット配列のデータがすべて格納されます。それ以外の場合、Variables は入力データ行列 X と応答ベクトル y から作成された table です。

Variables には、予測子または応答としてモデルの当てはめに使用される変数ではないものも含まれます。

データ型: table

オブジェクト関数

すべて展開する

feval非線形回帰モデルの予測の評価
predict非線形回帰モデルの応答予測
random非線形回帰モデルの応答のシミュレーション
coefCI非線形回帰モデルの係数推定の信頼区間
coefTest非線形回帰モデルの係数に対する線形仮説検定
partialDependence部分依存の計算
plotDiagnostics非線形回帰モデルの診断プロット
plotPartialDependence部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成
plotResiduals非線形回帰モデルの残差プロット
plotSlice近似非線形回帰面を通るスライスのプロット

すべて折りたたむ

carbig のデータに基づいて自動車の燃費効率に非線形回帰モデルを当てはめます。平均的な車の燃費を予測します。

標本データを読み込みます。各自動車の馬力 (Horsepower) および重量 (Weight) の測定値が格納されている行列 X を作成します。ガロンあたりの走行マイル数 (MPG) の応答値が格納されているベクトル y を作成します。

load carbig
X = [Horsepower,Weight];
y = MPG;

非線形回帰モデルを当てはめます。

modelfun = @(b,x)b(1) + b(2)*x(:,1).^b(3) + ...
    b(4)*x(:,2).^b(5);
beta0 = [-50 500 -1 500 -1];
mdl = fitnlm(X,y,modelfun,beta0)
mdl = 
Nonlinear regression model:
    y ~ b1 + b2*x1^b3 + b4*x2^b5

Estimated Coefficients:
          Estimate      SE        tStat       pValue 
          ________    _______    ________    ________

    b1     -49.383     119.97    -0.41164     0.68083
    b2      376.43     567.05     0.66384     0.50719
    b3    -0.78193    0.47168     -1.6578    0.098177
    b4      422.37     776.02     0.54428     0.58656
    b5    -0.24127    0.48325    -0.49926     0.61788


Number of observations: 392, Error degrees of freedom: 387
Root Mean Squared Error: 3.96
R-Squared: 0.745,  Adjusted R-Squared 0.743
F-statistic vs. constant model: 283, p-value = 1.79e-113

平均的な車の予測された燃費を見つけます。標本データにはいくつかの欠損 (NaN) 観測値が含まれているので、mean'omitnan' オプションで使用して平均を計算します。

Xnew = mean(X,'omitnan')  
Xnew = 1×2
103 ×

    0.1051    2.9794

MPGnew = predict(mdl,Xnew)
MPGnew = 21.8073

詳細

すべて展開する

バージョン履歴

R2012a で導入