主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

非非回帰

パラメトリック非線形回帰モデルとは

パラメトリック非線形モデルは,連続応答変数と複数の連続予測子変数との関係を次の形式で表します。

y = f(X,β) + ε,

ここで,

  • yは応答変数の観測値のn行1列のベクトルです。

  • fはXとβからなる任意の関数で,Xの各行とβベクトルを評価して,yの該当する行の予測値を計算します。

  • xは各行が1つの観测値,各列が1つのつの子を,n行P列の子の行列。

  • βは,推定するp行1列の未知パラメーターベクトルです。

  • εはn行1列の独立な同一の分布に従うランダム外乱ベクトルです。

これに対して,ノンパラメトリックモデルは,モデルパラメーターをもつ予測子と応答の関係を特徴付けようとしません。决定木の结合ののよう,しばしばしばしばグラフィカルな明になります。

fitnlm.は,観测された応答応答モデルfのの子(x,β)の间の平衡二乘误差ををする,βパラメーターパラメーターの値を见つけとしますますしし。Beta0.を開始値としてβベクトルを最小平均二乗誤差をもつベクトルに変更する手順を反復する必要があります。

データの準備

回帰の近似を開始するには,データを近似関数に望ましい形式にします。すべての回帰手法は,配列Xの入力データと独立したベクトルyの応答データか,テーブルまたはデータセット配列资源描述内の入力データと资源描述の列としての応答データで始まります。入力データの各行が,1つの観測値を表します。各列が1つの予測子(変数)を表します。

テーブルまたはデータセット配列资源描述では,次のように“ResponseVar”の名前と値のでで応答応答応答を示します。

mdl = fitlm(tbl,'responsevar','血压');

応答変数は既定で最後の列です。

非線形回帰の場合,“カテゴリカル”予测子の使んんカテゴリカルカテゴリカルはセット能セット固定セットからとりとりとりとりとりとりとりとりとりとりとり

入力データとと応答応答データのでで,欠损値をででます。

入力と応答データのデータセット配列

たとえば,Excel®スプレッドシートからデータセット配列を作成するには,次のようにします。

ds =数据集(“XLSFile”'hospital.xls'...“ReadObsNames”,真正的);

ワークスペース分数からデータセットをををは,次のようにます。

加载Carsmall.ds =数据集(重量、Model_Year MPG);

入力および応答データのテーブル

Excelスプレッドシートからテーブルを作用成するは,次のようにし。

tbl =可读取的('hospital.xls'...“ReadRowNames”,真正的);

ワークスペース変数からテーブルを作成するには,次のようにします。

加载Carsmall.台=表(重量、Model_Year MPG);

入力データの数码配列と応答応答数码ベクトル

たとえば,ワークスペース変数から数値配列を作成するには,次のようにします。

加载Carsmall.x = [重量马力圆柱体model_year];y = mpg;

Excelスプレッドシートから数码配列作物作物するするに,次のようにます。

[X, Xnames] = xlsread('hospital.xls');y = X (:, 4);%反应Y是收缩压x(:,4)= [];从X矩阵中去掉y

性别などの数値以外のエントリはXには表示されません。

非線形モデルの表現

非線形モデルを表現するには,いくつか方法があります。最も便利な方法を使用してください。

绕线形は,modelfunfitnlm.の必须必须力となります。

fitnlm.は,x,β)がパラメーターβについてについて滑らかと仮定し。关键词滑らかます场。关键词fitnlm.は最適なパラメーター推定値を算出できないことがあります。

無名関数または関数ファイルの関数ハンドル

関数ハンドル@modelfunb (x)は,ベクトルB.と行列,テーブル,またはデータセット配列Xを受け入れます。この関数ハンドルは,Xと同じ行数のベクトルFを返します。たとえば,関数ファイルHougen.M.はは次の计算计算を実ししし

hougen B. X = B. 1 X 2 X 3. / B. 5. 1 + B. 2 X 1 + B. 3. X 2 + B. 4. X 3.

MATLAB®のコマンドラインに类型hougenとと力して,关键词。

功能Yhat = Hougen(Beta,X)%Hougen Hougen-Watson模型,用于反应动力学。%Yhat = Hougen(β,X)给出了%反应速率的预测值,Yhat,作为%参数,β和数据矩阵的载体的函数,x。%beta必须有5个元素和x必须有三个%的列。模型形式的%%是:%y =(b1 * x2  -  x3 / b5)./(1 + b2 * x1 + b3 * x2 + b4 * x3)%%参考:%[1]贝茨,道格拉斯和瓦特,唐纳德,“非线性%回归分析及其应用”,Wiley%1988 p。271-272。%版权所有1993-2004 MathWorks,Inc.%B.A.琼斯1-06-95。b1 = beta(1);b2 = beta(2);b3 = beta(3); b4 = beta(4); b5 = beta(5); x1 = x(:,1); x2 = x(:,2); x3 = x(:,3); yhat = (b1*x2 - x3/b5)./(1+b2*x1+b3*x2+b4*x3);

Hougen.M.とと计算を実実名录关键词作作作作者:王莹,期刊

modelfun = @(b,x)(b(1)* x(:,2) -  x(:,3)/ b(5))。/ ...(1 + b(2)* x(:,1)+ B(3)* x(:,2)+ b(4)* x(:,3));

式のテキスト表現

行列Xのデータとベクトルyの応答

  • Xの最初の予測子(列)としてx1的を使用し,2番目のの子として“x2”を使用するというように,式を表現します。

  • 最適化するパラメーターのベクトルを,'B1''b2'のように表现します。

  • 'Y〜(数学表达)'のように,式を作成します。

たとえば,反応反応データへの応答は次のように表现しし

modelfun = ' y ~ (b1 * x2 - x3 / b5) / (1 + b2 * x1 + b3 * x2 + b4 * x3)”;

テーブルまたはデータセット配列のデータの場合,そのテーブルまたはデータセット配列の変数名で表現した式を使用することができます。式の左側に応答変数名を配置し,その後にを挿入し,さらに応答式を表す文字ベクトルを続けます。

次の例は,データセット配列内の反应データに対する応答を表す文字ベクトルの作成方法を示しています。

  1. 反应データを読み込みます。

    负荷反应
  2. データセット配列にデータを格式します。各各数の名前xnまたはynでで指定されれてものになりなり

    ds = dataSet({反应物,xn(1,:),xn(2,s),xn(3,:)},... {rate,yn});
  3. データセット配列の1行目をます。

    ds(1,:) ans = n_戊烷异戊烷反应速率470 300 10 8.55
  4. データセット配列内の名前を使使使て,hougen式を作物成し。

    modelfun =['反应速率~ (b1*n_Pentane - Isopentane/b5) /'…' (1 + h2 *b2 + n_戊烷*b3 +异戊烷*b4)'] modelfun = ReactionRate ~ (b1* n_戊烷-异戊烷/b5) /…(1 +氢*b2 + n_戊烷*b3 +异戊烷*b4)

初期ベクトルbeta0の選択

近似反復の初期ベクトルであるBeta0.は,结果の近似モデルのに大厦影响を与えることあります。Beta0.は问题の次元数指定ためため,正しい长さに必要があります。Beta0.を適切に選択すると,高速で信頼性の高いモデルが作成されますが,選択が不適切な場合は,計算に時間がかかるか,不適切なモデルが作成される可能性があります。

適切なBeta0.の選択についてアドバイスするのは難しいでしょう。このベクトルの特定の成分が正または負であると考えられる場合は,Beta0.にこれらの特征を设定ますますますますますの近似値既知の场は,それらの値Beta0.に含めます。ただし,適切な値がわからない場合は,次のような乱数ベクトルを試してください。

beta0 = randn(据nvar, 1);% or beta0 = 10*rand(nVars,1);

非非モデルモデルのデータへあてはめ

テーブルまたはデータセット配列资源描述を使使して非形回帰ででするには,次のの文を使使。

mdl = fitnlm(tbl,modelfun,beta0)

データセット配列Xと数値応答ベクトルyを使用して非線形回帰モデルを近似するには,次の構文を使用します。

mdl = fitnlm (X, y, modelfun beta0)

入力パラメーターの表现については,データの準備非線形モデルの表現および初期ベクトルbeta0の選択を参照してください。

fitnlm.はテーブルまたはデータセット配列资源描述内の応答変仮定ていますますますい変更ます。ResponseVar名为してと付けををを付け付け付けを付け付け付け付け付け付け付け。

品質の調査と近似非線形モデルの調整

いくつかの诊断は,モデルの品质を调べるのにます。plotDiagnostics (mdl)は,てこ比のプロットやクックの距離プロットなど,さまざまなプロットを提供します。plotresids(MDL)はは近似モデルととそのデータ差异を示し示しの差异を示し

MDL.のプロパティも,モデルの品質に関係しています。mdl.rmse.mdl.residuals.raw.は生の残差をます。mdl。诊断に含まれるフィールドは,杠杆やCooksDistanceなど,特に興味深い観測値を特定するのに役立ちます。

次の例は,诊断,残差およびスライスプロット使し近似形モデルをををてモデルを。

标本データを読み込み。

加载反应

关节Hougen.M.を使用して,速率の非线モデルを反应物の関数として作成します。

beta0 = 1(5、1);mdl = fitnlm(反应物,...速率,@ hougen,beta0);

データとモデルのてこ比のプロットを作成します。

plotDiagnostics (mdl)

てこ比の高い点が1つあります。その点を特定します。

[〜,maxl] = max(mdl.diagnostics.leverage)
maxl = 6.

残差プロットを调べます。

plotresids(MDL,“安装”

顕著な外れ値はありません。

モデルモデルの各予子の效果を知るに,スライスプロットを使に。

plotSlice (mdl)

たとえば,X2のをことができ変更しと,xと,xと,xと,x,と,x,と,x,と,と,と,と,と,x,と,と,と,とと,x,と,と,x,x,x,x2,X3,X3の,x3の线の倾斜がする,x3の线の倾斜ーと

非線形モデルを使用した応答の予測またはシミュレーション

この例では,预测函数宏指令随机的の各メソッドを使用して,新しいデータへの応答を予測してシミュレーションする方法を説明します。

コーシー分布から无作用为に标本を生成します。

rng (“默认”) X = rand(100,1);X = tan(X - /2);

モデルY = B1 *(PI / 2 + atan((x - b2)/ b3))に従って応答を生成し,その応答にノイズを追加します。

modelfun = @(b,x)b(1)*...(PI / 2 + atan((x  -  b(2))/ b(3))));Y = MODELFUN([12 5 10],x)+ RANDN(100,1);

任意パラメーターのB.= [1,1,1]からから始まるモデルを近似しし。

beta0 = [1 1 1];%任意猜测mdl = fitnlm (X, y, modelfun beta0)
MDL =非线性回归模型:Y〜B1 *(PI / 2 + atan((X-B2)/ B3))估计系数:估计系数:估计SE TSTAT pvalue ________________________ B1 12.082 0.80028 15.097 3.3151E-27 B2 5.0603 1.0825 4.6747 9.5063E-06 B3 9.64 0.46499 20.732 2.0382E-37观测数量:100,误差自由度:97根均方误差:1.02 r断层:0.92,调整R线0.918 F统计与零型号:6.45e+03,p值= 1.72e-111

近似値はパラメーター[12,5,10]の数パーセント内に收まり。

近似を検証します。

plotSlice (mdl)

预测

メソッド预测は平台応答の予测と,要求されたた场に函数限制X値(-15;5。12)での応答について予測された応答値と予測された信頼区間を求めます。

xnew = [-15; 5; 12];[Ynew,Ynewci] =预测(MDL,Xnew)
ynew =3×15.4122 18.9022 26.5161
ynewci =3×24.8233 6.0010 18.4555 19.3490 25.0170 28.0151

信頼区間はスライスプロットに反映されます。

函数宏指令

メソッド函数宏指令は平均応答を予测ししますデータセット配列からモデルをを成するする合成,预测を使用するより函数宏指令を实用したほうがが利なことがよくますあり。

データセット配列から非形モデルをを作物成し。

ds =数据集({X,'X'},{y,'是'});mdl2 = fitnlm (ds, modelfun beta0);

X値[-15; 5; 12]におけるにおけるモデル応答(CDF)を求めます。

xnew = [-15; 5; 12];Ynew = Feval(MDL2,Xnew)
ynew =3×15.4122 18.9022 26.5161

随机的

随机的メソッドは新しいランダム応答値をシミュレートします。これは,平均予測に学習データと同じ分散値のランダム外乱を加えたものと同じです。

xnew = [-15; 5; 12];ysim =随机(mdl,xnew)
ysim =3×16.0505 19.0893 25.4647

メソッド随机を再実行します。結果が変わります。

ysim =随机(mdl,xnew)
ysim =3×16.3813 19.2157 26.6541