主要内容

fitnlm

拟合非线性回归模型

描述

例子

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

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

例子

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

例子

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

例子

全部收缩

建立非线性模型的汽车里程基于carbig数据。

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

负载carbig台=表(马力、重量、MPG);Modelfun = @(b,x)b(1) + b(2)*x(:,1).^b(3) +...b (4) * x(:, 2)。^ b (5);β = [-50 500 -1 500 -1];mdl = fitnlm(资源描述、modelfun beta0)
mdl =非线性回归模型:MPG ~ b1 + b2*马力^b3 + b4*权重^b5Estimate 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.743 F-statistic vs. constant model: 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);β = [-50 500 -1 500 -1];mdl = fitnlm (X, y, modelfun beta0)
mdl =非线性回归模型:y ~ b1 + b2*x1^b3 + b4*x2^b5 Estimated Coefficients: Estimated 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-statistic vs. constant model: 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);β = [-50 500 -1 500 -1];

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

选择= statset (“显示”“通路”“TolFun”1平台以及);mdl = fitnlm (X, y, modelfun beta0,“选项”、选择);
标准规范SSE梯度的迭代步骤  ----------------------------------------------------------- 0 1.82248 e + 06 1 678600 788810 1691.07 249831 3.9532 616716 6.12739 e + 06 45.4738 3 e + 06 293.557 - 4 17675 361544 369.284 11746.6 69670.5 169.079 7242.22 343738 394.822 6250.32 159719 452.941 6077 6957.44 - 100.208 6172.87 91622.9 268.674 9 1012 11 6076.34 6370.39 88.1905 6075.75 5199.08 77.9694 6075.3 4646.61 69.764 13 14 6074.91 4235.96 62.9114 6074.55 3885.28 57.0647 15 16 6074.23 3571.1 52.0036 6073.93 3286.48 47.5795 17 18 6073.4 2794.31 40.2352 6073.66 3028.34 43.6844 19 20 6073.17 2582.15 37.1663 6072.95 2389.68 34.4243 21 22 6072.74 2214.84 31.965 6072.55 2055.78 29.7516 2325 24 6072.21 1778.51 25.9428 6072.37 1910.83 27.753 6072.05 1657.5 24.2986 6071.9 1546.65 22.8011 26日27日6071.63 1351.44 20.1822 6071.76 1444.93 21.4338 28 29 30 6071.51 1265.39 19.0339 6071.39 1186.06 17.978 6071.28 1112.83 17.0052 31日32 33 6071.17 1045.13 16.107 6071.07 982.465 15.2762 34 35 6070.98 924.389 14.5063 6070.89 870.498 13.7916 3638 37 6070.8 820.434 13.127 6070.72 773.872 12.5081 6070.64 730.521 11.9307 39 41 40 6070.57 690.117 11.3914 6070.5 652.422 10.887 6070.43 617.219 10.4144 6070.37 584.315 9.97114 42 43 45 44 6070.31 553.53 9.55489 6070.25 524.703 9.1635 6070.19 497.686 8.79506 46 48 47 6070.14 472.345 8.44785 6070.08 448.557 8.12028 6070.03 426.21 7.81092 4951 50 6069.99 405.201 7.51845 6069.94 385.435 7.2417 6069.9 366.825 6.97956 6069.85 349.293 6.73104 52 53 55 54 6069.81 332.764 6.49523 6069.77 317.171 6.27127 6069.74 302.453 6.0584 56 57 6069.7 288.55 5.85591 6069.66 275.411 5.66315 58 59 6069.63 262.986 5.47949 6069.6 251.23 5.3044 6069.57 240.1 5.13734 61 6069.54 229.558 4.97784 6069.51 62219.567 - 4.82545 63 6069.48 210.094 4.67977 64 6069.45 201.108 4.5404 65 67 66 6069.43 192.578 4.407 6069.4 184.479 4.27923 6069.38 176.785 4.15678 68 6069.35 169.472 4.03935 69 6069.33 162.518 3.9267 70 72 71 6069.31 155.903 3.81855 6069.29 149.608 3.71468 6069.26 143.615 3.61486 73 6069.24 137.907 3.51889 74 6069.22 132.468 3.42658 75 6069.21127.283 - 3.33774 76 6069.19 122.339 3.25221 77 6069.17 117.623 3.16981 78 80 79 6069.15 113.123 3.09041 6069.14 108.827 3.01386 6069.12 104.725 2.94002 81 6069.1 100.806 2.86877 82 6069.09 97.0611 2.8 83 85 84 6069.07 93.4814 2.73358 6069.06 90.0584 2.66942 6069.05 86.7842 2.60741 86 6069.03 83.6513 2.54745 87 6069.02 80.6528 2.48947 88 6069.0177.7821 - 2.43338 89 6068.99 75.0328 2.37908 90 6068.98 72.399 2.32652 91 93 92 6068.97 69.8752 2.27561 6068.96 67.4561 2.22629 6068.95 65.1366 2.17849 94 6068.94 62.9123 2.13216 95 6068.93 60.7784 2.08723 96 98 97 6068.92 58.7308 2.04364 6068.91 56.7655 2.00135 6068.9 54.8787 1.9603 99 6068.89 4349.28 18.1917 100 6068.77 2416.27 14.4439 101 6068.711721.26 12.1305 102 6068.66 1228.78 10.289 103 6068.63 884.002 8.82019 104 6068.56 639.615 7.62744 105 6068.58 464.84 6.64627 106 6068.56 338.878 5.82964 107 6068.55 247.508 5.14297 108 6068.54 180.879 4.56032 109 6068.53 132.084 4.06194 110 6068.52 96.2343 3.63255 111 6068.51 69.8361 3.26019 112 6068.51 50.3734 2.93541 113 6068.5 36.0206 2.65062114 6068.48 113.636 3.7503 120 6068.48 0.518966 1.37045 121 6068.48 4.59364 0.912763 122 6068.48 1.56354 0.629252 123 6068.48 1.13804 0.432522 124 6068.48 0.295873 0.297481 relative change in SSE less than OPTIONS.TolFun

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

加载示例数据。

S =负载(“反应”);X = S.reactants;y = S.rate;beta0 = S.beta;

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

mdl = fitnlm(x,y,@ hougen,beta0)
MDL =非线性回归模型为:y〜hougen(B,X)的估计系数:估计SE TSTAT p值________ ________ ______ _______ 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断层:0.999,调整R线0.998 F统计与零型号: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.18601 1.4447 0.18601 1.4447 0.18654 B20.062776 0.043561 1.4411 0.18753 0.040048 B3 0.030885 1.2967 0.23089 0.11242 B4 0.075157 1.4957 0.17309 1.1914 B5 0.83671 1.4239 0.1923观测数:13,自由的误差度:8均方根误差:0.193 R平方:0.999,调整R平方0.998 F-统计与零模型:3.91E + 03,P值= 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) + (2) * exp (- b (3) * x));rng ('默认'%的再现性b = [1; 3; 2);x = exprnd (2100 1);Y = modelfun(b,x) + normrnd(0,0.5,100,1);

设置可靠的装配选项。

选择= 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.1344 e-25 b2 e-26 b3 2.9732 0.38496 7.7232 7.974 3.6619 0.25429 14.401 1.0346 e-11观测数量:100年,错误自由度:97根均方误差:F-statistic vs. constant model: 203, p-value = 2.34e-35

加载示例数据。

S =负载(“反应”);X = S.reactants;y = S.rate;beta0 = S.beta;

指定用于观察权重的函数句柄。该函数接受模型拟合值作为输入,返回权重矢量。

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

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

mdl = fitnlm(x,y,@ hougen,beta0,“重量”,重量)
MDL =非线性回归模型为:y〜hougen(B,X)的估计系数:估计SE TSTAT p值________ ________ ______ _______ 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统计与零型号:1.14E + 03,P值= 3.49E-11

加载示例数据。

S =负载(“反应”);X = S.reactants;y = S.rate;beta0 = S.beta;

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

mdl = fitnlm(x,y,@ hougen,beta0,“ErrorModel”“组合”
MDL =非线性回归模型为:y〜hougen(B,X)的估计系数:估计SE TSTAT p值________ ________ ______ _______ 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线:0.999,调整R线0.998 F统计与零型号:3.91E + 03,P值= 2.54E-13

输入参数

全部收缩

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

  • 如果您指定modelfun通过一个公式,公式中的模型规范指定了预测器和响应变量。

  • 如果您指定modelfun默认情况下,使用函数句柄,最后一个变量是响应变量,其他变量是预测变量。控件可以将不同的列设置为响应变量ResponseVar名称-值对的论点。要选择列的子集作为预测器,请使用PredictorVars名称-值对的论点。

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

您可以验证变量名称资源描述通过使用isvarname.函数。下面的代码返回逻辑的1真正的),以获取每个具有有效变量名的变量。

cellfun (@isvarname tbl.Properties.VariableNames)
如果变量名在资源描述无效,然后使用它来转换它们matlab.lang.makevalidname.函数。
tbl.Properties.VariableNames = matlab.lang.makeValidName (tbl.Properties.VariableNames);

数据类型:桌子

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

数据类型:|

响应变量,指定为n1的向量,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]

数据类型:|

要从匹配中排除的观察值,指定为由逗号分隔的对组成'排除'以及逻辑或数字索引向量,指示要从拟合中排除哪些观测值。

例如,您可以使用以下任一实施例排除6个中的观察2和3。

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

例子:'排除',逻辑([0 1 1 0 0 0])

数据类型:||逻辑

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

选项 意义 默认
DerivStep 用于有限差分导数计算的相对差分。一个正标量,或一个与Statistics和Machine Learning Toolbox™函数使用选项结构估计的参数向量大小相同的正标量向量。 EPS ^(1/3)
显示

拟合算法显示的信息量。

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

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

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

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

数据类型:塑造

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

中的名称应包含字符串值或字符向量资源描述,或使用“VarNames”名称-值对的论点。

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

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

例子:'predictorvars',[2,3]

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

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

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

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

例如,您可以指定第四个变量屈服,作为对六个变量的响应,以下列方式之一。

例子:“ResponseVar”、“收益”

例子:“ResponseVar”,[4]

例子:'ResponseVar',逻辑([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.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] SEBER,G.A.F.和C. J. Wild。非线性回归.Hoboken,NJ:Wiley-Interscience,2003。

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

荷兰,P. W.和R. E.韦尔什。“使用迭代加权最小二乘的稳健回归”统计学通讯:理论与方法A6, 1977,第813-827页。

介绍了R2013b