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
この プロパティ は読み取り専用です。
当てはめたモデル内の係数の個数。正の整数を指定します。NumCoefficients
は NonLinearModel
オブジェクトの NumEstimatedCoefficients
と同じです。NumCoefficients
は回帰の自由度に等しくなります。
データ型: double
この プロパティ は読み取り専用です。
当てはめたモデル内の推定された係数の個数。正の整数を指定します。NumEstimatedCoefficients
は NonLinearModel
オブジェクトの NumCoefficients
と同じです。NumEstimatedCoefficients
は回帰の自由度に等しくなります。
データ型: double
要約統計量
この プロパティ は読み取り専用です。
誤差 (残差) の自由度。推定された係数の数を観測値の数から減算した値に等しくなります。正の整数として表されます。
データ型: double
この プロパティ は読み取り専用です。
モデルの診断情報。table を指定します。診断は、外れ値と影響が大きい観測値を特定するために役立てることができます。Diagnostics
には次のフィールドが含まれています。
フィールド | 意味 | ユーティリティ |
---|---|---|
Leverage | HatMatrix の対角要素 | 各観測値の Leverage は、観測された予測子の値によってどの程度まで当てはめが決定されるかを示します。1 に近い値は、当てはめの大部分がその観測値によって決定され、他の観測値からの寄与は少ないことを示します。0 に近い値は、当てはめの大部分が他の観測値によって決定されることを示します。係数 P と観測 N のあるモデルの場合、Leverage の平均値は P/N です。2*P/N より大きい Leverage の値は、高いてこ比を示します。 |
CooksDistance | クックの距離 | CooksDistance は、当てはめた値におけるスケーリングされた変化の測定です。平均のクックの距離の 3 倍より CooksDistance が大きい観測値は、外れ値である可能性があります。 |
HatMatrix | 観測された応答から fitted を計算するための射影行列 | HatMatrix は、Fitted = HatMatrix*Y となる N 行 N 列の行列です。ここで、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)を参照してください。
通常の決定係数統計と自由度調整済み決定係数統計は、ほとんどの非線形回帰モデルにとって役立つメトリクスではないことに注意してください。
データ型: 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
)IterOpts
—fitnlm
のOptions
名前と値のペア引数に含まれるオプション
データ型: 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 配列として返されます。
当てはめが観測値の名前を含む table に基づいている場合、それらの名前がこのプロパティに格納されます。
それ以外の場合、このプロパティは空の cell 配列になります。
データ型: cell
オブジェクトの作成後、このプロパティは読み取り専用になります。
モデルの当てはめに使用した予測子の名前。文字ベクトルの cell 配列として表されます。
データ型: cell
オブジェクトの作成後、このプロパティは読み取り専用になります。
応答変数の名前。文字ベクトルとして表されます。
データ型: char
オブジェクトの作成後、このプロパティは読み取り専用になります。
Variables
に格納されている変数に関する情報。変数ごとに 1 つの行と以下に示す列で構成される table として表されます。
列 | 説明 |
---|---|
Class | 変数のクラス。'double' や 'categorical' などの文字ベクトルによる cell 配列を指定します。 |
Range | 変数の範囲。ベクトルの cell 配列を指定します。
|
InModel | 当てはめたモデルにどの変数が含まれているかを示すインジケーター。logical ベクトルを指定します。モデルに変数が含まれている場合、値は true です。 |
IsCategorical | カテゴリカル変数のインジケーター。logical ベクトルを指定します。変数がカテゴリカルである場合、値は true です。 |
VariableInfo
には、モデルの当てはめに予測子または応答として使用していない変数もすべて含まれます。
データ型: table
オブジェクトの作成後、このプロパティは読み取り専用になります。
変数の名前。文字ベクトルの cell 配列として返されます。
当てはめが table に基づいている場合、その table 内の変数の名前がこのプロパティに格納されます。
当てはめが予測子行列と応答ベクトルに基づいている場合、当てはめ手法の名前と値の引数
VarNames
によって指定された値がこのプロパティに格納されます。VarNames
の既定値は{'x1','x2',...,'xn','y'}
です。
VariableNames
には、モデルの当てはめに予測子または応答として使用していない変数もすべて含まれます。
データ型: cell
オブジェクトの作成後、このプロパティは読み取り専用になります。
入力データ。table として返されます。Variables
には予測子と応答の両方の値が格納されます。
当てはめが table に基づいている場合、このプロパティにはその table のデータがすべて格納されます。
それ以外の場合、このプロパティは入力データ行列
X
と応答ベクトルy
から作成された table です。
Variables
には、モデルの当てはめに予測子または応答として使用していない変数もすべて含まれます。
データ型: table
オブジェクト関数
coefCI | 非線形回帰モデルの係数推定の信頼区間 |
coefTest | 非線形回帰モデルの係数に対する線形仮説検定 |
partialDependence | 部分依存の計算 |
profileLikelihood | Profile loglikelihood for nonlinear regression model |
plotDiagnostics | 非線形回帰モデルの診断プロット |
plotPartialDependence | 部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成 |
plotProfileLikelihood | Plot profile loglikelihood for nonlinear regression model |
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
詳細
"ハット行列" H は、データ行列 X およびヤコビ行列 J の項で定義されます。
ここで、f は非線形モデル関数、β はモデル係数のベクトルです。
ハット行列 H は、以下のようになります。
H = J(JTJ)–1JT.
対角要素 Hii は次を満たします
ここで n は観測の数 (X の行) であり、p は回帰モデルの係数の数です。
てこ比は、入力空間で特定の観測の位置が原因で発生した、回帰予測におけるその観測値の影響を測定します。
観測値 i のてこ比はハット行列 H の i 番目の対角項 hii の値です。てこ比値の合計は p (回帰モデルの係数の個数) なので、てこ比が p/n (n は観測値の個数) を大幅に超える場合、観測値 i は外れ値であると考えることができます。
観測値 i のクックの距離 Di は
ここで
は、j 番目の当てはめた応答値です。
は、i 番目の観測値を除いて当てはめた j 番目の応答値です。
MSE は、平均二乗誤差です。
p は回帰モデルの係数の数です。
クックの距離は代数的には次の式と等価です。
ここで、ei は i 番目の残差です。
バージョン履歴
R2012a で導入非線形モデルの係数について、プロファイル対数尤度と尤度比信頼区間を計算するには profileLikelihood
関数を使用します。対数尤度プロファイル、Wald 近似、係数推定値、尤度比信頼区間、Wald 信頼区間をプロットするには NonLinearModel
を使用します。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)