主要内容

fitnlm

拟合非线性回归模型

描述

例子

mdl= fitnlm (资源描述modelfunbeta0所指定的模型modelfun到表或数据集数组中的变量资源描述,返回非线性模型mdl

fitnlm中初始值开始的迭代过程估计模型系数beta0

例子

mdl= fitnlm (Xymodelfunbeta0用列向量拟合非线性回归模型y作为响应变量和矩阵的列X作为预测变量。

例子

mdl= fitnlm (___modelfunbeta0名称,值用一个或多个指定的附加选项拟合非线性回归模型名称,值对参数。

例子

全部折叠

建立了汽车行驶里程的非线性模型carbig数据。

加载数据并创建一个非线性模型。

负载carbigtbl = table(马力,重量,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(tbl,modelfun,beta0)
mdl =非线性回归模型:MPG ~ b1 + b2* hp ^b3 + b4*Weight^b5估计系数:估计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观测数:392,误差自由度:387均方根误差:3.96 R-Squared: 0.745,调整后R-Squared 0.743 f统计量vs常数模型:283, p-value = 1.79e-113

建立了汽车行驶里程的非线性模型carbig数据。

加载数据并创建一个非线性模型。

负载carbigX =[马力,重量];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 =非线性回归模型:y ~ b1 + b2*x1^b3 + b4*x2^b5估计系数:估计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观测数:392,误差自由度:387均方根误差:3.96 R-Squared: 0.745,调整后R-Squared 0.743 f统计量vs常数模型:283, p-value = 1.79e-113

建立了汽车行驶里程的非线性模型carbig数据。力求更准确的降低TolFun选项,并通过设置显示选择。

加载数据并创建一个非线性模型。

负载carbigX =[马力,重量];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];

创建选项以降低TolFun并报告迭代显示,并使用该选项创建模型。

Opts = statset(“显示”“通路”“TolFun”1平台以及);mdl = fitnlm(X,y,modelfun,beta0,“选项”、选择);
迭代SSE梯度步骤的Norm of Norm ----------------------------------------------------------- 0 1.82248e+06 1 678600 788810 1691.07 2 616716 6.12739e+06 45.4738 3 249831 3.9532e+06 293.557 4 17675 361544 369.284 5 11746.6 69670.5 169.079 6 7242.22 343738 394.822 8 6172.87 91622.9 268.674 9 6077 6957.44 100.208 10 6076.34 6370.39 88.1905 11 6075.75 5199.08 77.9694 12 6075.3 4235.96 62.9114 14 6074.55 3885.28 57.0647 15 6074.23 3571.152.0036 16 6073.93 3286.48 47.5795 17 6073.66 3028.34 43.6844 18 6074.31 40.2352 19 6072.17 2582.15 37.1663 20 6072.43 21 6072.74 2214.84 31.9651 22 6072.55 2055.78 29.7516 23 6072.37 1910.83 27.72.55 2055.78 29.7516 23 6072.37 1657.5 24.2986 26 6071.9 1546.65 22.8011 27 6071.76 1444.93 21.4338 28 6071.63 1351.44 20.186.06 17.978 31 6071.28 1112.83 17.0052 32 6071.17 1045.13 15.2762 34 6070.98924.389 14.5063 35 6070.89 870.498 13.7916 36 6070.8 820.434 13.127 37 6070.64 730.521 11.9307 39 6070.57 690.117 11.3914 40 6070.5 652.422 10.887 41 6070.43 617.2196069.81 332.764 6.49523 54 6069.77 317.171 6.276127 55 6069.74 302.453 6.0584 56 6069.7 288.55 57 6069.66 275.411 5.66315 58 6069.63 262.986 5.47949 61 6069.54 219.567 4.97784 62 6069.51 219.567 4.97984 64 6069.48 210.094 4.5404 65 6069.43 192.578 4.407 66 6069.4 184.479 4.27923 67 6069.38 175.903 3.81855 71 6069.29 149.608 3.71468 726069.26 143.615 3.61486 73 6069.24 132.468 3.42658 75 6069.21 127.283 3.33774 76 6069.19 122.339 3.25221 77 6069.17 117.623 3.09041 78 6069.14 108.827 3.09041 78 6069.14 108.827 3.09041 78 6069.14 108.827 3.09041 78 6069.14 108.827 3.09041 78 6069.14 108.827 3.09041 80 6069.12 108.827 3.09041 78 6069.9 100.806 2.86877 82 6069.09 97.0611 2.8 83 6069.07 93.4813 2.73358 84 6069.05 86.7841 2.66942 85 6069.05 83.6513 2.54745 87 6069.01 77.7821 2.43338 89 6068.99 75.0327 2.37908 90 6068.98 72.3992.32652 91 6068.97 69.8752 2.27561 92 6068.96 67.4561 2.22629 93 6068.95 65.1367 2.17849 94 6068.94 62.9122 2.13216 95 6068.93 60.7784 2.04364 97 6068.91 56.7655 2.00135 98 6068.9 54.8787 1.9603 99 6068.89 4349.28 18.1917 100 6068.77 2416.27 14.4439 101 6068.71 1721.26 12.1305 102 6068.66 1228.78 10.289 103 6068.63 884.002 8.82019 104 6068.6 639.615 7.62744 105 6068.58 464.84 6.64627 106 6068.56 338.855 247.508 5.14297 108 6068.54 180.879 4.56032109 6068.53 132.084 4.06194 110 6068.52 96.2342 3.63255 111 6068.51 50.3735 2.93541 113 6068.5 36.0205 2.65062 114 6068.5 25.4451 2.39969 115 6068.49 17.6693 2.17764 116 6068.49 1027.39 14.0164 117 6068.48 544.039 5.31369 118 6068.48 113.635 3.73498 120 6068.48 0.518387 1.37048 121 6068.48 4.59506 0.912882 122 6068.48 1.1385 0.432613 124 6068.48 0.297558迭代终止:SSE的相对变化小于期权。TolFun

使用函数句柄或模型语法指定用于估计的非线性回归模型。

加载样例数据。

S =负载(“反应”);X = s .反应物;y = S.rate;a0 = s;

使用函数句柄为速率数据指定Hougen-Watson模型。

mdl = fitnlm(X,y,@hougen,beta0)
mdl =非线性回归模型:y ~ hougen(b,X)估计系数:估计SE tStat pValue ________ ________ ______ _______ b1 1.2526 0.86701 1.4447 0.18654 b2 0.062776 0.043561 1.4411 0.18753 b3 0.040048 0.030885 1.2967 0.23089 b4 0.11242 0.075157 1.4957 0.17309 b5 1.1914 0.83671 1.4239 0.1923观测数:13,误差自由度:8均方根误差:0.193 R-Squared: 0.999,调整R-Squared 0.998 f -统计量vs零模型:3.91e+03, p值= 2.54e-13

或者,您可以使用表达式为速率数据指定Hougen-Watson模型。

myfun =“y ~ (b1 * x2 x3 / b5) / (1 + b2 * x1 + b3 * x2 + b4 * x3)”;mdl2 = fitnlm(X,y,myfun,beta0)
mdl2 =非线性回归模型:y ~ (b1*x2 - x3/b5)/(1 + b2*x1 + b3*x2 + b4*x3)估计系数:估计SE tStat pValue ________ ________ ______ _______ b1 1.2526 0.86701 1.4447 0.18654 b2 0.062776 0.043561 1.4411 0.18753 b3 0.040048 0.030885 1.2967 0.23089 b4 0.11242 0.075157 1.4957 0.17309 b5 1.1914 0.83671 1.4239 0.1923观测数:13,误差自由度:8均方根误差:0.193 R-Squared: 0.999,调整R-Squared 0.998 f统计量与零模型:3.91e+03, p-value = 2.54e-13

从非线性回归模型中生成样本数据

y b 1 + b 2 经验值 - b 3. x + ε

在哪里 b 1 b 2 , b 3. 为系数,误差项正态分布,均值为0,标准差为0.5。

Modelfun = @(b,x)(b(1)+b(2)*exp(-b(3)*x));rng (“默认”再现率%B = [1;3;2];X = extend (2,100,1);Y = modelfun(b,x) + normrnd(0,0.5,100,1);

设置健壮的拟合选项。

Opts = statset(“nlinfit”);选择。RobustWgtFun =“bisquare”

采用鲁棒拟合方法对非线性模型进行拟合。在这里,使用一个表达式来指定模型。

B0 = [2;2;2];modelstr ='y ~ b1 + b2*exp(-b3*x)';MDL = fitnlm(x,y,modelstr,b0,“选项”选择)
mdl =非线性回归模型(稳健拟合):y ~ b1 + b2*exp(- b3*x)估计系数:估计SE tStat pValue ________ _______ ______ __________ b1 1.0218 0.07202 14.188 2.1344e-25 b2 3.6619 0.25429 14.401 7.974e-26 b3 2.9732 0.38496 7.7232 1.0346e-11观测数:100,误差自由度:97均方根误差:0.501 r平方:0.807,调整r平方0.803 f统计量vs常数模型:203,p值= 2.34e-35

加载样例数据。

S =负载(“反应”);X = s .反应物;y = S.rate;a0 = s;

为观察权重指定函数句柄。该函数接受模型拟合值作为输入,并返回一个权重向量。

A = 1;B = 1;权重= @(yhat)/((a + b*abs(yhat)).^2);

使用指定的观测权重函数将Hougen-Watson模型与速率数据拟合。

mdl = fitnlm(X,y,@hougen,beta0,“重量”、重量)
mdl =非线性回归模型:y ~ hougen(b,X)估计系数:估计SE tStat pValue ________ ________ ______ _______ b1 0.83085 0.58224 1.427 0.19142 b2 0.04095 0.029663 1.3805 0.20477 b3 0.025063 0.019673 1.274 0.23842 b4 0.080053 0.057812 1.3847 0.20353 b5 1.8261 1.281 1.4256 0.19183观测数:13,误差自由度:8均方根误差:0.037 r平方:0.998,调整r平方0.998 f统计量vs零模型:1.14e+03, p值= 3.49e-11

加载样例数据。

S =负载(“反应”);X = s .反应物;y = S.rate;a0 = s;

使用组合误差方差模型拟合Hougen-Watson模型到速率数据。

mdl = fitnlm(X,y,@hougen,beta0,“ErrorModel”“组合”
mdl =非线性回归模型:y ~ hougen(b,X)估计系数:估计SE tStat pValue ________ ________ ______ _______ b1 1.2526 0.86702 1.4447 0.18654 b2 0.062776 0.043561 1.4411 0.18753 b3 0.040048 0.030885 1.2967 0.23089 b4 0.11242 0.075158 1.4957 0.17309 b5 1.1914 0.83671 1.4239 0.1923观测数:13,误差自由度:8均方根误差:1.27 R-Squared: 0.999,调整R-Squared 0.998 f统计量vs零模型:3.91e+03, p值= 2.54e-13

输入参数

全部折叠

输入数据,包括预测器和响应变量,指定为表或数据集数组。预测变量和响应变量必须是数字。

  • 如果你指定modelfun使用公式,公式中的模型规范指定预测器和响应变量。

  • 如果你指定modelfun使用函数句柄,默认情况下,最后一个变量是响应变量,其他变量是预测变量。属性将另一列设置为响应变量ResponseVar名称-值对参数。要选择列的子集作为预测器,请使用PredictorVars名称-值对参数。

表中的变量名不必是有效的MATLAB®标识符。但是,如果名称无效,则不能指定modelfun使用公式。

中的变量名可以验证资源描述通过使用isvarname函数。变量名无效,则可以使用matlab.lang.makeValidName函数。

数据类型:表格

预测变量,指定为n——- - - - - -p矩阵,n观察的次数和p是预测变量的数量。的每一列X表示一个变量,每一行表示一个观察结果。

数据类型:|

响应变量,指定为n-by-1向量,其中n是观测的数量。每一项y对应的行是否为响应X

数据类型:|

模型的函数形式,指定为以下任意一种。

  • 函数处理@modelfun@ (b, x)modelfun,在那里

    • b系数向量的元素个数是否等于beta0

    • x矩阵的列数是否与X的预测变量列数资源描述

    modelfunb (x)返回包含相同行数的列向量x.向量的每一行都是求值的结果modelfun的对应行x.换句话说,modelfun是一个向量化函数,它操作所有数据行并在一次函数调用中返回所有求值。modelfun应返回实数以获得有意义的系数。

  • 字符向量或字符串标量公式的形式yf(b1, b2,…,bj, x1, x2,…,xk)”,在那里f表示标量系数变量的标量函数b1、……bj标量数据变量x1、……xk.公式中的变量名必须是有效的MATLAB标识符。

数据类型:function_handle|字符|字符串

非线性模型的系数,指定为数值向量。NonLinearModel开始搜索最优系数beta0

数据类型:|

名称-值参数

的可选逗号分隔对名称,值参数。名字参数名称和价值对应的值。名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“ErrorModel”、“结合”,“排除”,“选项”,选择将误差模型指定为组合模型,从拟合中排除第二个观测值,并使用结构中定义的选项选择控制迭代拟合过程。

模型系数的名称,指定为字符向量的字符串数组或单元格数组。

数据类型:字符串|细胞

误差方差模型的形式,指定为下列之一。每个模型都使用标准的均值零和单位方差变量来定义误差e与独立组件组合:函数值f,和一个或两个参数一个而且b

“不变”(默认) y f + 一个 e
“比例” y f + b f e
“组合” y f + 一个 + b | f | e

使用时唯一允许的错误模型权重“不变”

请注意

选项。RobustWgtFun必须有价值[]当使用其他错误模型时“不变”

例子:“ErrorModel”、“比例”

所选误差模型参数的初始估计ErrorModel,指定为数值数组。

误差模型 参数 默认值
“不变” 一个 1
“比例” b 1
“组合” 一个b [1]

您只能使用“不变”使用时错误模型权重

请注意

选项。RobustWgtFun必须有价值[]当使用其他错误模型时“不变”

例如,如果“ErrorModel”有价值“组合”时,可以指定起始值1一个初始值为2b如下。

例子:“ErrorParameters”,[1,2]

数据类型:|

从拟合中排除的观测值,指定为由逗号分隔的对组成的“排除”以及一个逻辑或数值索引向量,指示哪些观测值应从拟合中排除。

例如,你可以用下面的例子排除观察结果2和3。

例子:“排除”,[2,3]

例子:'Exclude',logical([0 1 1 0 0 0 0])

数据类型:||逻辑

控件控制迭代拟合过程的选项,指定为由创建的结构statset.相关字段是调用返回的结构中的非空字段statset(“fitnlm”)

选项 意义 默认的
DerivStep 有限差分导数计算中的相对差分。一个正标量,或与统计和机器学习工具箱™函数使用选项结构估计的参数向量相同大小的正标量向量。 eps ^ (1/3)
显示

拟合算法显示的信息量。

  • “关闭”—不显示任何信息。

  • “最后一次”—显示最终输出。

  • “通路”-在命令窗口中显示迭代输出。

“关闭”
FunValCheck 字符向量或字符串标量,指示检查无效值,例如,由模型函数得到。 “上”
麦克斯特 允许的最大迭代次数。正整数。 200
RobustWgtFun 鲁棒拟合的权重函数。也可以是一个函数句柄,它接受规范化残差作为输入,并返回健壮的权重作为输出。如果使用函数句柄,则给出调优常数。看到健壮的选项 []
调优 鲁棒拟合中使用的调整常数在应用权重函数之前对残差进行归一化。一个正标量。如果将权重函数指定为函数句柄,则必须。 看到健壮的选项为默认值,这取决于RobustWgtFun
TolFun 目标函数值的终止容差。积极的标量。 1 e-8
TolX 终止公差参数。积极的标量。 1 e-8

数据类型:结构体

拟合中使用的预测变量,指定为逗号分隔的对,由“PredictorVars”以及表或数据集数组中变量名的字符向量的字符串数组或单元格数组资源描述,或逻辑或数字索引向量,指示哪些列是预测变量。

字符串值或字符向量应该在资源描述属性指定的名称“VarNames”名称-值对参数。

默认为所有变量X,或所有变量在资源描述除了ResponseVar

例如,您可以使用以下示例之一指定第二个和第三个变量作为预测变量。

例子:“PredictorVars”,[2,3]

例子:'PredictorVars',logical([0 1 1 0 0 0 0])

数据类型:||逻辑|字符串|细胞

要在拟合中使用的响应变量,指定为逗号分隔的对,由“ResponseVar”和表或数据集数组中的变量名资源描述,或逻辑或数字索引向量,指示哪一列是响应变量。

如果您指定了一个模型,它将指定响应变量。否则,在拟合表或数据集数组时,“ResponseVar”指示哪个变量fitnlm应作为响应使用。

例如,您可以指定第四个变量收益率,作为六个变量中的响应,可以采用以下方法之一。

例子:“ResponseVar”、“收益”

例子:“ResponseVar”,[4]

例子:'ResponseVar',logical([0 0 0 0 1 0 0])

数据类型:||逻辑|字符|字符串

变量名,指定为逗号分隔的对,由“VarNames”和包含列名的字符向量的字符串数组或单元格数组X首先是响应变量的名称y最后的

“VarNames”不适用于表或数据集数组中的变量,因为这些变量已经有名称。

例子:VarNames,{“马力”,“加速”,“Model_Year”,“英里”}

数据类型:字符串|细胞

观察权重,指定为非负标量值或函数句柄的向量。

  • 如果你指定了一个向量,那么它必须n元素,n行数是多少资源描述y

  • 如果指定一个函数句柄,那么该函数必须接受一个预测响应值的向量作为输入,并返回一个实际正权重的向量作为输出。

给定的权重,WNonLinearModel估计观测时的误差方差通过MSE * (1 / W (i)),其中MSE为均方误差。

数据类型:||function_handle

输出参数

全部折叠

表示对数据响应的最小二乘拟合的非线性模型,返回为NonLinearModel对象。

如果选项结构包含非空对象RobustWgtFun字段时,模型不是最小二乘拟合,而是使用RobustWgtFun鲁棒拟合函数。

对于非线性模型对象的性质和方法,mdl,请参阅NonLinearModel类页面。

更多关于

全部折叠

健壮的选项

权函数 方程 默认调优常数
“安德鲁” W = (abs(r) 1.339
“bisquare”(默认) W = (abs(r)<1) .* (1 - r.^2).^2 4.685
“柯西” W = 1 ./ (1 + r.^2) 2.385
“公平” W = 1 ./ (1 + abs(r)) 1.400
“休伯” W = 1 ./ max(1, abs(r)) 1.345
“物流” W = tanh(r) ./ r 1.205
“犯错误” W = 1 * (abs(r)<1) 2.795
“welsch” W = exp(-(r.^2)) 2.985
[] 没有坚固的配件 - - - - - -

算法

  • fitnlm使用相同的拟合算法nlinfit

  • fitnlm认为资源描述X,y丢失的值。在拟合模型时,fitnlm不使用有缺失值的观测值或缺失值的观测值modelfun返回值。的ObservationInfo属性包含关于是否的信息fitnlm在拟合中使用每个观察结果。

参考文献

[1]塞伯,g.a.f.和c.j.怀尔德。非线性回归.霍博肯,新泽西州:Wiley-Interscience, 2003。

[2]杜穆切尔,W. H.和F. L.奥布莱恩。将一个健壮的选项集成到多元回归计算环境中。计算机科学与统计:第21届界面研讨会论文集.亚历山大,弗吉尼亚州:美国统计协会,1989年。

[3]霍兰德,P. W.和R. E.韦尔施。使用迭代重加权最小二乘的稳健回归统计通讯:理论与方法A6, 1977,第813-827页。

在R2013b中引入