このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
パラメトリック非線形モデルは,連続応答変数と複数の連続予測子変数との関係を次の形式で表します。
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
には表示されません。
非線形モデルを表現するには,いくつか方法があります。最も便利な方法を使用してください。
绕线形は,modelfun
でfitnlm.
の必须必须力となります。
fitnlm.
は,x,β)がパラメーターβについてについて滑らかと仮定し。关键词滑らかます场。关键词fitnlm.
は最適なパラメーター推定値を算出できないことがあります。
関数ハンドル@modelfun
b (x)
は,ベクトルB.
と行列,テーブル,またはデータセット配列X
を受け入れます。この関数ハンドルは,X
と同じ行数のベクトルF
を返します。たとえば,関数ファイルHougen.M.
はは次の计算计算を実ししし
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)”;
テーブルまたはデータセット配列のデータの場合,そのテーブルまたはデータセット配列の変数名で表現した式を使用することができます。式の左側に応答変数名を配置し,その後に〜
を挿入し,さらに応答式を表す文字ベクトルを続けます。
次の例は,データセット配列内の反应
データに対する応答を表す文字ベクトルの作成方法を示しています。
反应
データを読み込みます。
负荷反应
データセット配列にデータを格式します。各各数の名前xn
またはyn
でで指定されれてものになりなり
ds = dataSet({反应物,xn(1,:),xn(2,s),xn(3,:)},... {rate,yn});
データセット配列の1行目をます。
ds(1,:) ans = n_戊烷异戊烷反应速率470 300 10 8.55
データセット配列内の名前を使使使て,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 = 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