nlinfit
非线性回归
语法
描述
返回响应的非线性回归估计系数的向量β
= nlinfit (<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-X" class="intrnllnk">X
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-Y" class="intrnllnk">Y
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-modelfun" class="intrnllnk">modelfun
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-beta0" class="intrnllnk">beta0
)Y
在预测器上X
所指定的模型modelfun
.系数估计使用迭代最小二乘估计,与初始值指定beta0
.
利用算法对结构中的控制参数进行非线性回归拟合β
= nlinfit (<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-X" class="intrnllnk">X
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-Y" class="intrnllnk">Y
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-modelfun" class="intrnllnk">modelfun
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-beta0" class="intrnllnk">beta0
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-options" class="intrnllnk">选项
)选项
.您可以返回前面语法中的任何输出参数。
使用由一个或多个名-值对参数指定的其他选项。例如,您可以指定观察权重或非常数误差模型。您可以使用前面语法中的任何输入参数。β
= nlinfit (___,<一个href="//www.tatmou.com/ch/help/stats/#namevaluepairarguments" class="intrnllnk">名称,值
)
[<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-beta" class="intrnllnk">
另外返回残差,β
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-R" class="intrnllnk">R
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-J" class="intrnllnk">J
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-CovB" class="intrnllnk">CovB
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-MSE" class="intrnllnk">均方误差
,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-ErrorModelInfo" class="intrnllnk">ErrorModelInfo
= nlinfit(___)R
的雅可比矩阵modelfun
,J
,估计系数的估计方差-协方差矩阵,CovB
,误差项方差的估计,均方误差
,以及包含误差模型细节的结构,ErrorModelInfo
.
例子
使用默认选项的非线性回归模型
加载样例数据。
S =负载(“反应”);X = s .反应物;y = S.rate;a0 = s;
中初始值拟合Hougen-Watson模型与速率数据beta0
.
beta = nlinfit(X,y,@hougen,beta0)
β=5×11.2526 0.0628 0.0400 0.1124 1.1914
使用稳健选项的非线性回归
从非线性回归模型中生成样本数据 ,在那里 , , 为系数,误差项正态分布,均值为0,标准差为0.1。
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.1100,1);
设置健壮的拟合选项。
Opts = statset(“nlinfit”);选择。RobustWgtFun =“bisquare”;
采用鲁棒拟合方法对非线性模型进行拟合。
Beta0 = [2;2;2];Beta = nlinfit(x,y,modelfun,beta0,opts)
β=3×11.0041 3.0997 2.1483
利用观测权的非线性回归
加载样例数据。
S =负载(“反应”);X = s .反应物;y = S.rate;a0 = s;
指定一个已知观测权重的向量。
W = [8 2 1 6 12 9 12 10 10 12 2 10 8]';
使用指定的观测权重将Hougen-Watson模型与速率数据拟合。
[beta,R,J,CovB] = nlinfit(X,y,@hougen,beta0,“重量”, W);β
β=5×12.2068 0.1077 0.0766 0.1818 0.6516
显示系数标准误差。
√诊断接头(CovB))
ans =5×12.5721 0.1251 0.0950 0.2043 0.7735
使用权重函数句柄的非线性回归
加载样例数据。
S =负载(“反应”);X = s .反应物;y = S.rate;a0 = s;
为观察权重指定函数句柄。该函数接受模型拟合值作为输入,并返回一个权重向量。
A = 1;B = 1;权重= @(yhat)/((一个+b*一个bs(yhat)).^2);
使用指定的观测权重函数将Hougen-Watson模型与速率数据拟合。
[beta,R,J,CovB] = nlinfit(X,y,@hougen,beta0,“重量”、重量);β
β=5×10.8308 0.0409 0.0251 0.0801 1.8261
显示系数标准误差。
√诊断接头(CovB))
ans =5×10.5822 0.0297 0.0197 0.0578 1.2810
使用非常数误差模型的非线性回归
加载样例数据。
S =负载(“反应”);X = s .反应物;y = S.rate;a0 = s;
利用组合误差模型将Hougen-Watson模型与速率数据进行拟合。
[beta,R,J,CovB,MSE,ErrorModelInfo] = nlinfit(X,y,@hougen,beta0,“ErrorModel”,“组合”);β
β=5×11.2526 0.0628 0.0400 0.1124 1.1914
显示错误模型信息。
ErrorModelInfo
ErrorModelInfo =带字段的结构:ErrorModel: 'combined' ErrorParameters: [0.1517 5.6783e-08] ErrorVariance: [function_handle] MSE: 1.6245 ScheffeSimPred: 6 WeightFunction: 0 FixedWeights: 0 RobustWeightFunction: 0
输入参数
X
- - - - - -预测变量
矩阵
非线性回归函数的预测变量,用矩阵表示。通常情况下,X
是一个预测器(自变量)值的设计矩阵,其中每个值有一行<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-Y" class="intrnllnk">Y
,每个预测器对应一列。然而,X
可以是任何数组吗<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-modelfun" class="intrnllnk">modelfun
可以接受。
数据类型:单
|双
Y
- - - - - -响应值
向量
拟合非线性回归函数的响应值(因变量),指定为具有相同行数的向量<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-X" class="intrnllnk">X
.
数据类型:单
|双
modelfun
- - - - - -非线性回归模型函数
函数处理
非线性回归模型函数,指定为函数句柄。modelfun
必须接受两个输入参数,一个系数矢量和一个数组X
然后返回一个由拟合响应值组成的向量。
例如,指定<一个href="//www.tatmou.com/ch/help/stats/hougen.html">hougen
非线性回归函数,使用函数句柄@hougen
.
数据类型:function_handle
beta0
- - - - - -初始系数值
向量
最小二乘估计算法的初始系数值,指定为一个向量。
请注意
较差的初始值可能导致具有较大残余误差的解决方案。
数据类型:单
|双
选项
- - - - - -估计算法选项
使用statset
估计算法选项,指定为创建时使用的结构<一个href="//www.tatmou.com/ch/help/stats/statset.html">statset
.以下statset
参数适用于nlinfit
.
DerivStep
-有限差分梯度的相对差分
eps ^ (1/3)
(默认)|正标量值|向量
相对差为梯度的有限差分计算,指定为正标量值,或大小相同的矢量<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-beta" class="intrnllnk">β
.使用矢量来指定每个系数的不同相对差值。
显示
-输出显示级别
“关闭”
(默认)|“通路”
|“最后一次”
估计期间的输出显示级别,指定为之一“关闭”
,“通路”
,或“最后一次”
.如果你指定“通路”
,在每次迭代时显示输出。如果你指定“最后一次”
,最后一次迭代后显示输出。
FunValCheck
—是否检查无效值的指示器
“上”
(默认)|“关闭”
指示器,用于是否检查无效值,例如南
或正
从目标函数,指定为“上”
或“关闭”
.
麦克斯特
-最大迭代次数
One hundred.
(默认值)|正整数
估计算法的最大迭代次数,指定为正整数。迭代继续进行,直到估计值在收敛公差范围内,或指定的最大迭代数麦克斯特
是达到了。
RobustWgtFun
-权重函数
字符向量|字符串标量|函数句柄|[]
用于鲁棒拟合的权重函数,指定为有效的字符向量、字符串标量或函数句柄。
请注意
RobustWgtFun
必须有价值[]
当你使用观察权重时,W
.
下表描述了可能的字符向量和字符串标量。让r表示标准化残差和w表示健壮的权重。指标函数I[x如果表达式为x为真,否则为0。
权函数 | 方程 | 默认调优常数 |
---|---|---|
'' (默认) |
没有坚固的配件 | - - - - - - |
“安德鲁” |
|
1.339 |
“bisquare” |
|
4.685 |
“柯西” |
|
2.385 |
“公平” |
|
1.400 |
“休伯” |
|
1.345 |
“物流” |
|
1.205 |
“犯错误” |
|
2.795 |
“welsch” |
|
2.985 |
您还可以指定一个函数句柄,该函数句柄接受规范化残差向量作为输入,并返回稳健权重向量作为输出。如果使用函数句柄,则必须提供<一个href="//www.tatmou.com/ch/help/stats/#d124e692878" class="intrnllnk">调优
常数。
调优
-调优常数
正标量值
用于稳健拟合的调优常数,指定为正标量值。在应用鲁棒权重函数之前,调谐常数用于归一化残差。的函数指定默认调优常数<一个href="//www.tatmou.com/ch/help/stats/#d124e692703" class="intrnllnk">RobustWgtFun
.
如果使用函数句柄来指定RobustWgtFun
,则必须指定值调优
.
TolFun
-残差平方和的终止公差
1 e-8
(默认)|正标量值
残差平方和的终止容差,指定为正标量值。迭代继续进行,直到估计值在收敛公差范围内,或指定的最大迭代数麦克斯特
是达到了。
TolX
-估计系数的终止公差
1 e-8
(默认)|正标量值
对估计系数的终止公差,β
,指定为正标量值。迭代继续进行,直到估计值在收敛公差范围内,或指定的最大迭代数麦克斯特
是达到了。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“ErrorModel”、“比例”,“ErrorParameters”,0.5
指定比例误差模型,误差参数估计的初始值为0.5
ErrorModel
- - - - - -误差项的形式
“不变”
(默认)|“比例”
|“组合”
错误项的形式,指定为逗号分隔的对,由“ErrorModel”
而且“不变”
,“比例”
,或“组合”
错误模型。每个模型都使用标准的均值零和单位方差变量来定义误差e与独立组件组合:函数值f,和一个或两个参数一个而且b.
“不变” (默认) |
|
“比例” |
|
“组合” |
使用时唯一允许的错误模型<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-Weights" class="intrnllnk">权重
是“不变”
.
请注意
选项。RobustWgtFun
必须有价值[]
当使用其他错误模型时“不变”
.
ErrorParameters
- - - - - -误差模型参数的初始估计
1
或[1]
(默认)|标量值|双元素向量
对所选误差模型参数的初始估计<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-ErrorModel" class="intrnllnk">ErrorModel
,指定为逗号分隔的对,由“ErrorParameters”
和一个标量值或两元向量。
误差模型 | 参数 | 默认值 |
---|---|---|
“不变” |
一个 | 1 |
“比例” |
b | 1 |
“组合” |
一个,b | [1] |
例如,如果“ErrorModel”
有价值“组合”
时,可以指定起始值1一个初始值为2b如下。
例子:“ErrorParameters”,[1,2]
您只能使用“不变”
使用时错误模型<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-Weights" class="intrnllnk">权重
.
请注意
选项。RobustWgtFun
必须有价值[]
当使用其他错误模型时“不变”
.
数据类型:双
|单
权重
- - - - - -观察权重
向量|函数处理
观察权重,由逗号分隔的对组成“重量”
一个实权向量或者一个函数句柄。您可以使用观测权重来降低您希望对拟合模型影响较小的观测值的权重。
如果
W
是向量,那么它的大小一定和<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-Y" class="intrnllnk">Y
.如果
W
是函数句柄,则它必须接受预测响应值的向量作为输入,并返回实际正权重的向量作为输出。
请注意
选项。RobustWgtFun
必须有价值[]
当你使用观察权重时。
数据类型:双
|单
|function_handle
输出参数
β
-估计回归系数
向量
估计的回归系数,作为向量返回。元素的数量β
等于其中的元素数<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-beta0" class="intrnllnk">beta0
.
让
表示所指定的非线性函数<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-modelfun" class="intrnllnk">modelfun
,在那里
是观察的预测因子吗我,我= 1,…,N,
是回归系数。返回的系数向量β
使加权最小二乘方程最小,
对于非加权非线性回归,所有的权重项都等于1。
R
-残差
向量
拟合模型的残差,作为向量返回。
如果使用名称-值对参数指定观察权重<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-Weights" class="intrnllnk">
权重
,然后R
包含<一个href="//www.tatmou.com/ch/help/stats/nlinfit.html" class="intrnllnk">加权残差一个>.如果指定的错误模型不是
“不变”
使用名称-值对参数<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-ErrorModel" class="intrnllnk">ErrorModel
,那么你就不能再解释了R
作为模型拟合残差。
J
- - - - - -雅可比矩阵
矩阵
非线性回归模型的雅可比矩阵,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-modelfun" class="intrnllnk">modelfun
,作为N——- - - - - -p矩阵,N观察的次数和p是估计系数的个数。
如果使用名称-值对参数指定观察权重<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-Weights" class="intrnllnk">
权重
,然后J
是<一个href="//www.tatmou.com/ch/help/stats/nlinfit.html" class="intrnllnk">加权模型函数雅可比矩阵一个>.如果指定的错误模型不是
“不变”
使用名称-值对参数<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-ErrorModel" class="intrnllnk">ErrorModel
,那么你就不能再解释了J
作为模型函数雅可比矩阵。
CovB
-估计方差-协方差矩阵
矩阵
拟合系数的估计方差协方差矩阵,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-beta" class="intrnllnk">β
,作为p——- - - - - -p矩阵,p是估计系数的个数。如果模型是雅可比矩阵,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-J" class="intrnllnk">J
,则具有满列秩CovB = inv(J'*J)*MSE
,在那里<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-MSE" class="intrnllnk">均方误差
是均方误差。
均方误差
-均方误差
标量值
拟合模型的均方误差(MSE),以标量值返回。MSE是误差项方差的估计。如果模型是雅可比矩阵,<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-J" class="intrnllnk">J
,则具有满列秩MSE = (R'*R)/(N-p)
,在那里N
是观察数,和p
是估计系数的个数。
ErrorModelInfo
-错误模型拟合信息
结构
关于错误模型拟合的信息,作为具有以下字段的结构返回:
ErrorModel |
选择误差模型 |
ErrorParameters |
估计误差参数 |
ErrorVariance |
函数句柄N——- - - - - -p矩阵,X ,并返回一个N-by-1误差方差向量,使用估计误差模型 |
均方误差 |
均方误差 |
ScheffeSimPred |
Scheffé参数用于使用估计误差模型时的同时预测间隔 |
WeightFunction |
有价值的逻辑真正的 中使用自定义权重函数nlinfit |
FixedWeights |
有价值的逻辑真正的 如果你之前使用固定的权重nlinfit |
RobustWeightFunction |
有价值的逻辑真正的 如果你之前使用了稳健拟合nlinfit |
更多关于
加权残差
一个加权残差是残差乘以对应观测权值的平方根。
给定估计的回归系数, 用于观察的残差我是
在哪里y我观察到的反应和 拟合反应是否在预测因子上
当你用权重拟合加权非线性回归时w我,我= 1,…,N,nlinfit
返回加权残差,
加权模型函数雅可比矩阵
的加权模型函数雅可比矩阵为非线性模型雅可比矩阵乘以观测权重矩阵的平方根。
给定估计的回归系数, 估计模型雅可比矩阵, 对于非线性函数 有元素
在哪里bj是j的第Th元素
当你用对角权重矩阵拟合加权非线性回归时
nlinfit
返回加权雅可比矩阵,
提示
要对预测产生误差估计,请使用可选输出参数
R
,J
,CovB
,或均方误差
作为输入<一个href="//www.tatmou.com/ch/help/stats/nlpredci.html">nlpredci
.为了对估计的系数进行误差估计,
β
,使用可选输出参数R
,J
,CovB
,或均方误差
作为输入<一个href="//www.tatmou.com/ch/help/stats/nlparci.html">nlparci
.如果您使用坚固的拟合选项,<一个href="//www.tatmou.com/ch/help/stats/#d124e692703" class="intrnllnk">
RobustWgtFun
,你必须使用CovB
-可能需要均方误差
-作为输入nlpredci
或nlparci
确保置信区间充分考虑了稳健拟合。
算法
nlinfit
对待南
值<一个href="//www.tatmou.com/ch/help/stats/#btk7ign-Y" class="intrnllnk">Y
或modelfun (beta0 X)
作为缺失的数据,并忽略相应的观察。对于非鲁棒估计,
nlinfit
采用Levenberg-Marquardt非线性最小二乘算法<一个href="//www.tatmou.com/ch/help/stats/nlinfit.html" class="intrnllnk">[1]一个>.对于鲁棒估计,
nlinfit
采用的算法<一个href="//www.tatmou.com/ch/help/stats/robust-regression-reduce-outlier-effects.html" class="a">迭代重加权最小二乘一个>(<一个href="//www.tatmou.com/ch/help/stats/nlinfit.html" class="intrnllnk">[2]一个>,<一个href="//www.tatmou.com/ch/help/stats/nlinfit.html" class="intrnllnk">[3]一个>).在每次迭代中,鲁棒权值都是基于前一次迭代中每个观测值的残差重新计算的。这些权重降低了离群值,从而降低了它们对拟合的影响。迭代继续进行,直到权重收敛为止。当您为观察权重指定函数句柄时,权重取决于拟合模型。在这种情况下,
nlinfit
采用迭代广义最小二乘算法拟合非线性回归模型。
参考文献
[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页。
版本历史
R2006a之前介绍
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
选择网站
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。