fitnlm
拟合非线性回归模型
语法
描述
例子
表中的非线性模型
建立汽车里程的非线性模型carbig
数据。
加载数据并创建一个非线性模型。
负载carbig台=表(马力、重量、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(资源描述、modelfun beta0)
mdl =非线性回归模型:MPG ~ b1 + b2* hp ^b3 + b4*Weight^b5估计系数:Estimate 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 -平方:0.745,调整后的r -平方0.743 F-statistic对比常数模型: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 -平方:0.745,调整后的r -平方0.743 F-statistic vs. constant模型: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
并报告迭代显示,并使用选项创建模型。
选择= statset (“显示”,“通路”,“TolFun”1平台以及);mdl = fitnlm (X, y, modelfun beta0,“选项”、选择);
迭代SSE梯度步骤的Norm of Norm ----------------------------------------------------------- 0 1.82248e+06 1 678600 788810 1691.07 2 616739e +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 7 6250.32 159719 452.941 8 6172.87 91622.9 268.674 9 6075.75 5199.39 88.1905 11 6075.75 5199.39 69.764 13 6074.91 4235.96 62.9114 14 6074.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 6073.17 2582.15 37.1663 20 6072.43 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 1544.93 21.4338 28 6071.63 22.8011 27 6071.76 1444.93 21.4338 28 6071.63 1351.44 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.98924.389 14.5063 35 6070.89 870.498 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.97115 43 6070.31 553.53 9.55489 44 6070.37 524.703 9.1635 45 6070.19 497.686 8.79506 46 6070.14 472.345 8.44785 47 6070.08 8.12028 48 6070.03 426.21 7.81092 49 6069.99 405.201 7.2417 51 6069.9 366.825 6.97956 52 6069.85 349.293 6.73104 536069.81 332.764 6.49523 54 6069.77 317.171 6.27127 55 6069.74 302.453 6069.7 288.55 5.85591 57 6069.63 262.986 5.47949 59 6069.63 262.986 5.13734 61 6069.54 229.558 4.97784 62 6069.51 219.567 4.82545 63 6069.48 210.094 4.67984 62 6069.51 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.15677 68 6069.33 162.518 3.81855 71 6069.29 149.608 3.71468 726069.26 143.615 3.61486 73 6069.24 137.907 3.3189 74 6069.22 132.339 3.25221 77 6069.17 117.623 3.16981 78 6069.19 122.339 3.09041 79 6069.14 108.827 3.01386 80 6069.12 104.725 2.9.4002 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.60741 86 6069.03 83.6513 2.54745 87 6069.02 77.7821 2.43338 89 6068.99 75.0328 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.08723 96 6068.91 56.7655 2.00135 98 6068.89 4349.28 2.04364 97 6068.91 56.7655 2.00135 98 6068.89 1.9603 99 6068.89 4349.28 18.1917 100 6068.77 2416.27 14.4439 101 6068.71 1721.26 10.82019 104 6068.77 2416.27 14.4439 102 6068.66 1228.26 10.82019 104 6068.86 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.878 4.56032109 6068.53 132.084 4.06194 110 6068.52 96.8342 3.26019 112 6068.51 50.3734 2.93541 113 6068.5 36.0205 2.39962 115 6068.49 17.6693 2.17764 116 6068.49 1027.39 14.0164 117 6068.48 544.039 5.3137 118 6068.48 113.637 3.7503 120 6068.48 0.51834 1.37051 121 6068.48 4.59439 0.912827 122 6068.48 1.13825 0.432567 124 6068.48 0.297532迭代终止:SSE的相对变化小于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 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 -平方:0.999,调整后的r -平方0.998 F-statistic与零模型: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 -平方:0.999,调整后的r -平方0.998 F-statistic与零模型:3.91e+03, p-value = 2.54e-13
利用鲁棒拟合选项估计非线性回归
从非线性回归模型中生成样本数据
在哪里 , , 为系数,误差项呈正态分布,均值为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.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-statistic对比常数模型:203,p值= 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 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.23853 0.057812 1.3847 0.20353 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-statistic与零模型:1.14e+03, p-value = 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 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 -平方:0.999,调整后的r -平方0.998 F-statistic与零模型:3.91e+03, p值= 2.54e-13
输入参数
资源描述
- - - - - -输入数据
表格|数据集的数组
输入数据,包括预测器和响应变量,指定为表或数据集数组。预测变量和响应变量必须是数字。
如果您指定
modelfun
使用公式,公式中的模型规范指定了预测器和响应变量。如果您指定
modelfun
使用函数句柄,默认情况下,最后一个变量是响应变量,其他变量是预测变量。方法可以将不同的列设置为响应变量ResponseVar
名称-值对的论点。要选择列的子集作为预测器,请使用PredictorVars
名称-值对的论点。
表中的变量名不必是有效的MATLAB®标识符,但名称不能包含前导或尾随空格。如果名称无效,则不能指定modelfun
使用一个公式。
中的变量名可以进行验证资源描述
通过使用isvarname
函数。如果变量名无效,则可以使用matlab.lang.makeValidName
函数。
数据类型:表格
X
- - - - - -预测变量
矩阵
预测变量,指定为n——- - - - - -p矩阵,n观察的次数和p是预测变量的数量。每一列的X
表示一个变量,每一行表示一个观察结果。
数据类型:单
|双
y
- - - - - -反应变量
向量
响应变量,指定为n1的向量,n是观察数。中的每个条目y
对应行的响应是X
.
数据类型:单
|双
modelfun
- - - - - -模型的功能形式
函数处理|字符向量或字符串标量公式的形式'y
~
f
(b1, b2,…,bj, x1, x2,…,xk)”
y
f
(b1, b2,…,bj, x1, x2,…,xk)”模型的功能形式,指定为以下任何一种。
函数处理
@
或modelfun
@ (b, x)
,在那里modelfun
b
系数向量的元素个数是否与beta0
.x
矩阵的列数是否与X
或者预测变量列的个数资源描述
.
modelfun
b (x)
返回包含相同行数的列向量x
.向量的每一行都是求值的结果modelfun
的对应行上x
.换句话说,modelfun
是向量化函数,它操作所有数据行并在一个函数调用中返回所有计算。modelfun
应该返回实数以获得有意义的系数。字符向量或字符串标量公式的形式
'
,在那里y
~f
(b1, b2,…,bj, x1, x2,…,xk)”f
表示标量系数变量的标量函数b1
、……bj
标量数据变量x1
、……xk
.公式中的变量名必须是有效的MATLAB标识符。
数据类型:function_handle
|字符
|字符串
beta0
- - - - - -系数
数值向量
非线性模型的系数,指定为数值向量。NonLinearModel
开始寻找最优系数beta0
.
数据类型:单
|双
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“ErrorModel”、“结合”,“排除”,“选项”,选择
将误差模型指定为组合模型,从拟合中排除第二个观测值,并使用结构中定义的选项选择
控制迭代拟合过程。
CoefficientNames
- - - - - -模型系数的名称
{b1, b2,…,”bk
'}
(默认)|字符串数组|字符向量的单元格数组
k
'}模型系数的名称,指定为字符串数组或字符向量的单元格数组。
数据类型:字符串
|细胞
ErrorModel
- - - - - -误差方差模型的形式
“不变”
(默认)|“比例”
|“组合”
误差方差模型的形式,指定为以下之一。每个模型使用标准的均值-零和单位-方差变量定义误差e与独立成分相结合:函数值f,以及一两个参数一个而且b
“不变” (默认) |
|
“比例” |
|
“组合” |
使用时唯一允许的错误模型权重
是“不变”
.
请注意
选项。RobustWgtFun
必须有价值[]
当使用错误模型时“不变”
.
例子:“ErrorModel”、“比例”
ErrorParameters
- - - - - -误差模型参数的初始估计
数字数组
所选误差模型参数的初始估计ErrorModel
,指定为数值数组。
误差模型 | 参数 | 默认值 |
---|---|---|
“不变” |
一个 | 1 |
“比例” |
b | 1 |
“组合” |
一个,b | [1] |
您只能使用“不变”
使用时的错误模型权重
.
请注意
选项。RobustWgtFun
必须有价值[]
当使用错误模型时“不变”
.
例如,如果“ErrorModel”
的值“组合”
,可指定起始值1一个起始值为2b如下。
例子:“ErrorParameters”,[1,2]
数据类型:单
|双
排除
- - - - - -观察排除
逻辑或数字索引向量
从拟合中排除的观察值,指定为逗号分隔的对,由“排除”
以及一个逻辑或数字索引向量,指示哪些观察结果应从拟合中排除。
例如,您可以使用以下任何一个示例排除6个观察结果中的2和3。
例子:“排除”,[2,3]
例子:'Exclude',logical([0 1 1 0 0 0])
数据类型:单
|双
|逻辑
选项
- - - - - -控制迭代拟合过程的选项
[](默认)|结构
控件创建的结构指定的控制迭代拟合过程的选项statset
.相关字段是调用返回的结构中的非空字段statset(“fitnlm”)
.
选项 | 意义 | 默认的 |
---|---|---|
DerivStep |
有限差分微分计算中使用的相对差分。一个正标量,或一个正标量的向量,其大小与统计和机器学习工具箱™函数使用选项结构估计的参数向量相同。 | eps ^ (1/3) |
显示 |
拟合算法显示的信息量。
|
“关闭” |
FunValCheck |
字符向量或字符串标量指示,以检查无效值,例如南 或正 ,由模型函数得到。 |
“上” |
麦克斯特 |
允许的最大迭代次数。正整数。 | 200 |
RobustWgtFun |
鲁棒拟合的权重函数。也可以是一个函数句柄,它接受归一化残差作为输入,并返回稳健权值作为输出。如果使用函数句柄,则给出调优 常数。看到健壮的选项 |
[] |
调优 |
鲁棒拟合中使用调谐常数,在应用权函数之前对残差进行归一化。一个积极的标量。如果将weight函数指定为函数句柄,则必须。 | 看到健壮的选项对于默认值,它取决于RobustWgtFun . |
TolFun |
目标函数值的终止公差。积极的标量。 | 1 e-8 |
TolX |
参数的终止公差。积极的标量。 | 1 e-8 |
数据类型:结构体
PredictorVars
- - - - - -预测变量
字符串数组|字符向量的单元格数组|逻辑或数字索引向量
在拟合中使用的预测器变量,指定为逗号分隔的对,由“PredictorVars”
以及表或数据集数组中变量名的字符向量的字符串数组或单元格数组资源描述
,或指示哪些列是预测变量的逻辑或数字索引向量。
中的名称中应该包含字符串值或字符向量资源描述
方法指定的名称“VarNames”
名称-值对的论点。
默认值是所有变量X
,或所有变量在资源描述
除了ResponseVar
.
例如,您可以使用以下任何一个示例指定第二个和第三个变量作为预测器变量。
例子:“PredictorVars”,[2,3]
例子:'PredictorVars',逻辑([0 1 1 0 0 0])
数据类型:单
|双
|逻辑
|字符串
|细胞
ResponseVar
- - - - - -反应变量
最后一列资源描述
(默认)|变量名|逻辑或数字索引向量
响应变量,指定为逗号分隔的对,由“ResponseVar”
和表或数据集数组中的变量名资源描述
,或指示哪一列是响应变量的逻辑或数字索引向量。
如果您指定一个模型,它将指定响应变量。否则,在拟合表或数据集数组时,“ResponseVar”
显示哪个变量fitnlm
应该用作响应。
例如,您可以指定第四个变量收益率
,作为六个变量的响应,可以采用以下方式之一。
例子:“ResponseVar”、“收益”
例子:“ResponseVar”,[4]
例子:'ResponseVar',逻辑([0 0 0 1 0 0])
数据类型:单
|双
|逻辑
|字符
|字符串
VarNames
- - - - - -变量的名字
{x1, x2,…,‘xn’,‘y’}
(默认)|字符串数组|字符向量的单元格数组
变量名,指定为逗号分隔的对,由“VarNames”
和字符向量的字符串数组或单元格数组,包括的列的名称X
首先,和响应变量的名称y
最后的
“VarNames”
不适用于表或数据集数组中的变量,因为这些变量已经有名称。
例子:VarNames,{“马力”,“加速”,“Model_Year”,“英里”}
数据类型:字符串
|细胞
权重
- - - - - -观察权重
的(n, 1)
(默认)|非负标量值的向量|函数处理
观察权值,指定为非负标量值或函数句柄的向量。
如果你指定了一个向量,那么它一定有n元素,n行数在吗
资源描述
或y
.如果指定函数句柄,则该函数必须接受预测响应值的向量作为输入,并返回实正权重的向量作为输出。
给定的权重,W
,NonLinearModel
估计观察时的误差方差我
通过MSE * (1 / W (i))
,其中MSE为均方误差。
数据类型:单
|双
|function_handle
输出参数
mdl
——非线性模型
NonLinearModel
对象
非线性模型表示对数据响应的最小二乘拟合,返回为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 |
[] |
没有健壮的拟合 | - - - - - - |
算法
参考文献
西伯,g.a.f和c.j.怀尔德。非线性回归.霍博肯,新泽西州:威利- interscience, 2003。
[2]杜穆谢尔,W. H.和F. L.奥布莱恩。将一个健壮的选项集成到多元回归计算环境中。计算机科学与统计:第21届界面研讨会论文集.亚历山大,弗吉尼亚州:美国统计协会,1989年。
[3]霍兰德,P. W.和R. E.韦尔什。使用迭代重加权最小二乘的稳健回归。统计学中的通信:理论与方法,A6, 1977,第813-827页。
版本历史
介绍了R2013b
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。