非线性模型拟合

类别:非线性模型

(不推荐)拟合非线性回归模型

非线性模型拟合不推荐。使用fitnlm代替。

语法

mdl=非线性模型拟合(tbl、modelfun、beta0)
mdl=非线性模型拟合(X,y,modelfun,beta0)
mdl=非线性模型.fit(…,modelfun,beta0,名称,值)

描述

mdl=非线性模型拟合(tbl模型乐趣β0符合指定的型号模型乐趣添加到表或数据集数组中的变量tbl,并返回非线性模型mdl非线性模型拟合从中的初始值开始,使用迭代程序估计模型系数β0

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

mdl=非线性模型拟合(。。。,模型乐趣β0名称、值用一个或多个指定的附加选项来拟合非线性回归模型名称、值配对参数。

输入参数

全部展开

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

  • 如果您指定模型乐趣使用公式,公式中的模型规范指定了预测变量和响应变量。

  • 如果您指定模型乐趣默认情况下,使用函数句柄,最后一个变量是响应变量,其他变量是预测变量。您可以使用应答器名称-值对参数。要选择列的子集作为预测器,请使用预测变量名称-值对的论点。

表中的变量名不一定是有效的MATLAB®标识符。但是,如果名称无效,则无法指定模型乐趣使用公式。

您可以在中验证变量名tbl通过使用伊斯瓦名称功能。下面的代码返回逻辑1真的)对于具有有效变量名的每个变量。

cellfun(@isvarname,tbl.Properties.VariableNames)
如果变量名在tbl无效,然后使用matlab.lang.makeValidName函数。
tbl.Properties.VariableNames = matlab.lang.makeValidName (tbl.Properties.VariableNames);

数据类型:桌子

预测变量,指定为n-借-p矩阵,在哪里n是观察次数和p是预测变量的数量。每列X表示一个变量,每行表示一个观察值。

数据类型:单一的|双重的

响应变量,指定为n-by-1向量,其中n为观察次数。中的每个条目y是对应行的响应X

数据类型:单一的|双重的

模型的功能形式,指定为以下任一项。

  • 函数句柄模型乐趣@(b,x)模型乐趣哪里

    • b是一个系数向量,其元素数与β0

    • x矩阵的列数与X或的预测器变量列数tbl

    模型乐趣(b,x)返回一个列向量,该列向量包含的行数与x.向量的每一行都是计算的结果模型乐趣x.换句话说,模型乐趣是一个向量化函数,它对所有数据行进行操作,并在一个函数调用中返回所有求值。模型乐趣应该返回实数以获得有意义的系数。

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

数据类型:function_handle|烧焦|一串

非线性模型的系数,指定为数值向量。非线性模型从开始搜索最佳系数β0

数据类型:单一的|双重的

名称-值对参数

指定可选的逗号分隔的对名称、值论据。名字参数名和价值观是对应的值。名字必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:名称1,值1,…,名称,值

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

数据类型:烧焦|一串|细胞

误差方差模型的形式,指定为以下形式之一。每个模型使用标准平均零和单位方差变量定义误差e结合独立组件:功能值f,以及一个或两个参数一个b

“常数”(默认) y f + 一个 e
“比例” y f + b f e
“合并” y f + 一个 + b | f | e

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

请注意

options.RobustWgtFun必须有价值[]当使用错误模型而不是“常数”

例子:“误差模型”,“比例”

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

误差模型 参数 默认值
“常数” 一个 1
“比例” b 1
“合并” 一个b [1,1]

您只能使用“常数”使用时的错误模型权重

请注意

options.RobustWgtFun必须有价值[]当使用错误模型而不是“常数”

例如,如果“ErrorModel”的值“合并”,可以指定的起始值为1一个起始值是2b具体如下。

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

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

例如,可以使用以下任一示例排除6个观测值中的2个和3个。

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

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

数据类型:单一的|双重的|逻辑

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

选择权 意思 违约
德里夫斯特普 用于有限差分导数计算的相对差分。一个正标量,或一个与Statistics和Machine Learning Toolbox™函数使用选项结构估计的参数向量大小相同的正标量向量。 每股收益^(1/3)
展示

拟合算法显示的信息量。

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

  • “决赛”-显示最终输出。

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

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

数据类型:结构

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

字符串值或字符向量应位于tbl,或使用“VarNames”名称-值对的论点。

默认值为中的所有变量X,或中的所有变量tbl除了应答器

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

例子:‘预测变量’,[2,3]

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

数据类型:单一的|双重的|逻辑|一串|细胞

响应变量要在适合中使用,指定为逗号分隔对组成“响应者”以及在表或数据集数组中包含变量名的字符向量或字符串标量tbl,或指示哪列是响应变量的逻辑或数字索引向量。您通常需要使用“响应者”当拟合表或数据集数组时tbl

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

例子:“ResponseVar”,“收益率”

例子:“ResponseVar”,[4]

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

数据类型:单一的|双重的|逻辑|烧焦|一串

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

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

例子:‘VarNames’、{‘马力’、‘加速’、‘车型年’、‘MPG’}

数据类型:一串|细胞

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

  • 如果指定向量,则它必须具有n元素,在哪里n是中的行数tbly

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

给定权重,W非线性模型估计观测时的误差方差通过MSE*(1/W(i)),其中MSE是均方误差。

数据类型:单一的|双重的|function_handle

输出参数

全部展开

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

如果选择权结构包含一个非空的RobustWgtFun字段中,模型不是最小二乘拟合,而是使用RobustWgtFun稳健的拟合函数。

对于非线性模型对象的性质和方法,mdl,请参阅非线性模型班级网页。

例子

全部展开

基于以下内容创建汽车里程的非线性模型:卡比格数据。

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

负载卡比格tbl=表(马力、重量、英里/加仑);modelfun=@(b,x)b(1)+b(2)*x(:,1)。^b(3)+...b(4)*x(:,2)。^b(5);beta0=[-50500-1500-1];mdl=非线性模型拟合(tbl,modelfun,beta0)
4.5)估算系数:估计系数:估计系数:估计值:估计值:估计值:估计值:估计值:估计值:估计值:估计值:估计值:估计值:估计值:估计值:估计值:估计值:UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0.48325-0.49926 0.61788 obs数量观测值:392,误差自由度:387均方根误差:3.96 R平方:0.745,校正R平方:0.743 F统计量与常数模型:283,p值=1.79e-113

基于以下内容创建汽车里程的非线性模型:卡比格数据。

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

负载卡比格X =(功率、重量);y = MPG;Modelfun = @(b,x)b(1) + b(2)*x(:,1).^b(3) +...b(4)*x(:,2)。^b(5);beta0=[-50500-1500-1];mdl=非线性模型拟合(x,y,modelfun,beta0)
(4)估计系数:估计系数:估计数字0.411640.0.411640.411640.680.6883 0.680.680.680 0.680 0.680.680 0.680.6883 b2 376.43 567.05 0.0 0.0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0 0.66388 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 48325-0.49926 0.61788观察次数:392,误差自由度:387均方根误差:3.96 R平方:0.745,调整R平方:0.743 F统计与常数模型:283,p值=1.79e-113

基于以下内容创建汽车里程的非线性模型:卡比格数据。通过降低托尔芬选项,并通过设置展示选项

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

负载卡比格X =(功率、重量);y = MPG;Modelfun = @(b,x)b(1) + b(2)*x(:,1).^b(3) +...b(4)*x(:,2)。^b(5);beta0=[-50500-1500-1];

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

选择= statset (“显示”“通路”“托尔芬”,1e-10);mdl=非线性模型拟合(X,y,modelfun,beta0,“选项”,opts);
迭代SSE梯度步长的范数--------------------------------------------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.827 6250.32 159719 452.941 8 6172.9 6077 6957.44 100.208 106076.34 6370.39 88.1905 11 6075.75 5199.08 77.9694 12 6075.3 4646.61 69.764 13 6074.91 4235.96 62.9114 14 6074.55 3885.28 57.0647 15 6074.23 3571.1 52.0036 16 6073.93 3286.48 47.5795 17 6073.66 3028.34 43.6844 18 6073.4 2794.31 40.2352 19 6073.17 2582.15 37.1663 20 6072.95 2389.68 34.4243 21 6072.74 2214.84 31.9651 22 6072.55 2055.78 29.7516 23 6072.37 1910.83 27.753 24 6072.21 1778.51 25.9428 25 6072.05 1657.5 24.2986 26 6071.9 1546.65 22.8011 27 6071.76 1444.93 21.4338 28 6071.63 1351.44 20.1822 29 6071.51 1265.39 19.0339 30 6071.39 1186.06 17.978 31 6071.28 1112.83 17.0052 32 6071.17 1045.13 16.107 33 6071.07 982.465 15.2762 34 6070.98 924.389 14.5063 35 6070.89 870.498 13.7916 36 6070.8 820.434 13.127 37 6070.72 773.872 12.5081 38 6070.64 730.521 11.9307 39 6070.57 690.117 11.3914 40 6070.5 652.422 10.887 41 6070.43 617.219 10.4144 42 6070.37 584.315 9.97114 43 6070.31 553.53 9.55489 44 6070.25 524.703 9.1635 45 6070.19 497.686 8.79506 46 6070.14 472.345 8.44785 47 6070.08 448.557 8.12028 48 6070.03 426.21 7.81092 49 6069.99 405.201 7.51845 50 6069.94 385.435 7.2417 51 6069.9 366.825 6.97956 52 6069.85 349.293 6.73104 53 6069.81 332.764 6.49523 54 6069.77 317.171 6.27127 55 6069.74 302.452 6.0584 56 6069.7 288.55 5.85591 57 6069.66 275.411 5.66315 58 6069.63 262.986 5.47949 59 6069.6 251.23 5.3044 60 6069.57 240.1 5.13734 61 6069.54 229.558 4.97784 62 6069.51 219.567 4.82545 63 6069.48 210.094 4.67977 64 6069.45 201.108 4.5404 65 6069.43 192.578 4.407 66 6069.4 184.479 4.27923 67 6069.38 176.785 4.15677 68 6069.35 169.472 4.03935 69 6069.33 162.518 3.9267 70 6069.31 155.903 3.81855 71 6069.29 149.608 3.71468 72 6069.26 143.615 3.61486 73 6069.24 137.907 3.5189 74 6069.22 132.468 3.42658 75 6069.21 127.283 3.33774 76 6069.19 122.339 3.25221 77 6069.17 117.623 3.16981 78 6069.15 113.123 3.09041 79 6069.14 108.827 3.01386 80 6069.12 104.725 2.94002 81 6069.1 100.806 2.86877 82 6069.09 97.0611 2.8 83 6069.07 93.4814 2.73358 84 6069.06 90.0583 2.66942 85 6069.05 86.7842 2.60741 86 6069.03 83.6513 2.54745 87 6069.02 80.6529 2.48947 88 6069.01 77.7821 2.43338 89 6068.99 75.0327 2.37908 90 6068.98 72.399 2.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.08723 96 6068.92 58.7308 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.62745 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.2341 3.63254 111 6068.51 69.8362 3.26019 112 6068.51 50.3734 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.4 14.0164 117 6068.48 544.038 5.31368 118 6068.48 94.057 2.86663 119 6068.48 113.636 3.73502 120 6068.48 0.518548 1.37049 121 6068.48 4.59432 0.91283 122 6068.48 1.56363 0.629281 123 6068.48 1.13811 0.2539 124 6068.48终止相对更改2951在SSE中,小于OPTIONS.TolFun

指定一个非线性回归模型,使用函数句柄或字符向量进行估计。

加载样本数据。

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

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

mdl=非线性模型拟合(X,y,@hougen,beta0)
1.2007 2007年4.47 0 0.4447 0.0 0 0.47 0.47 0.47 0.0 0 0.4847 0.18654 b2 0.062776 0.043561 1.11 11 0.1873 3 3 3 3 3 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.414141411.0 0 0 0.0 0 0 0 0 0.413561 1 1.11 11 11 0.0 0 0.414141418 8 8 8 8 0 0 0 0 0 0 0.414141414111 0 0 0 0 0 0 0 0 0 0.11 11 0 0 0 0 0 0 0 0 0.414141418 8 8 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0.414141418 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.41414141418 8 8 8 8 8 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0.10,误差自由度:8均方根误差:0.193 R平方:0.999,调整R平方:0.998 F统计与零模型:3.91e+03,p值=2.54e-13

或者,可以使用字符向量为速率数据指定Hougen Watson模型。

我的乐趣=‘y~(b1*x2-x3/b5)/(1+b2*x1+b3*x2+b4*x3)’;mdl2=非线性模型拟合(X,y,myfun,beta0)
mdl2=非线性回归模型:y~(b1*x2-x3/b5)/(1+b2*x1+b3*x2+b4*x3)估计系数:估计值为P值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.1730.1913.419观察值的数量:1924.673,误差自由度: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)+b(2)*exp(-b(3)*x));rng(“默认”%的再现性b=[1;3;2];x=exprnd(2100,1);y=modelfun(b,x)+normrnd(0,0.5100,1);

设置稳健的拟合选项。

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

使用鲁棒拟合选项拟合非线性模型。在这里,使用字符向量来指定模型。

b0 = (2; 2; 2);modelstr ='y~b1+b2*exp(-b3*x)';mdl=非线性模型拟合(x,y,modelstr,b0,“选项”,选项)
mdl=非线性回归模型(稳健拟合):y~b1+b2*exp(-b3*x)估计系数:估计净现值(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuub1 1.028 0.07202 14.1344e-25 b2 3.6619 0.25429 14.401 7.974e-26 b3.9732 0.386.721-4611观察次数:,误差自由度:97均方根误差:0.501 R平方:0.807,调整R平方:0.803 F统计与常数模型:203,p值=2.34e-35

加载样本数据。

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

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

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

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

mdl=非线性模型拟合(X,y,@hougen,beta0,“重量”,重量)
mdl=非线性回归模型:y~hougen(b,X)估计系数:估计值为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 B40.0801 0.053 0.0801.381.831.831.831观察值的数量:,误差自由度: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=非线性模型拟合(X,y,@hougen,beta0,“ErrorModel”“合并”
1.2526 0.86702 1.4447 0.0 0 0.47 0.47 0.47 0.18654 0 0.0 0 0.062776 0.043561 1.11 11 0.1873 3 3 3 0.0 0 0 0.0 0 0 0.043561 1.11 11 11 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0.414141414111 11 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4141414141414141414141414111 11 11 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.11 11 11,误差自由度:8均方根误差:1.27 R平方:0.999,调整R平方:0.998 F统计与零模型:3.91e+03,p值=2.54e-13

更多关于

全部展开

算法

非线性模型拟合使用与相同的拟合算法nlinfit

选择

您还可以使用构造非线性模型fitnlm

工具书类

[1] Seber、G.A.F.和C.J.Wild。非线性回归. 新泽西州霍博肯:威利国际科学出版社,2003年。

[2] 将稳健的期权集成到多元回归计算环境中计算机科学与统计:第21届界面学术研讨会论文集. 弗吉尼亚州亚历山大:美国统计协会,1989年。

[3] 使用迭代加权最小二乘法的稳健回归统计学通讯:理论与方法A6,1977年,第813-827页。