NonLinearModel.fit

类:NonLinearModel

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

NonLinearModel.fit不推荐使用。采用fitnlm代替。

句法

mdl = NonLinearModel.fit(资源描述、modelfun beta0)
mdl = NonLinearModel.fit (X, y, modelfun beta0)
MDL = NonLinearModel.fit(...,modelfun,beta0,名称,值)

描述

mdl= NonLinearModel.fit (TBLmodelfunbeta0适合由指定的型号modelfun指向表或数据集数组中的变量TBL,并返回非线性模型mdlNonLinearModel.fit使用从初始值开始的迭代过程估计模型系数beta0

mdl= NonLinearModel.fit (Xÿmodelfunbeta0用列向量拟合非线性回归模型ÿ作为响应变量和矩阵的列X作为预测变量。

mdl= NonLinearModel.fit (…modelfunbeta0名称,值嵌合的非线性回归模型使用附加选项由一个或多个指定的名称,值对参数。

输入参数

展开全部

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

  • 如果您指定modelfun使用公式,该公式在模型规格指定预测和响应的变量。

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

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

您可以验证的变量名中TBL通过使用isvarname功能。下面的代码返回的逻辑1真正的),每个变量都有一个有效的变量名。

cellfun (@isvarname tbl.Properties.VariableNames)
如果变量名中TBL是无效的,然后使用它们转换matlab.lang.makeValidName功能。
tbl.Properties.VariableNames = matlab.lang.makeValidName(tbl.Properties.VariableNames);

数据类型:

预测变量,指定为ñ-通过-p矩阵,其中ñ是观测值和p是预测变量的数目。的每一列X表示一个可变的,并且每行表示一个观察。

数据类型:|

响应变量,指定为ñ1的向量,ñ是观测值的数量。在每个条目ÿ对于相应行的响应X

数据类型:|

该模型的函数形式,指定为下面的任一。

  • 功能手柄@modelfun@(B,X)modelfun,其中

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

    • X是具有相同的列数为一个矩阵X或预测变量列的数目TBL

    modelfunb (x)返回包含相同行数的列向量X。向量的每一行都是求值的结果modelfun上的相应的行X。换一种说法,modelfun是一种矢量化功能,一个经营上的所有数据行,并返回所有评价中一个函数调用。modelfun应返回实数,以获得有意义的系数。

  • 表示这种形式的公式的字符向量或字符串标量ÿF(B1,B2,...,BJ,X1,X2,...,XK)”,其中F表示标量系数变量的标量函数B1,...,BJ和标量数据变量x1,...,xk。公式中的变量名必须是有效的MATLAB标识符。

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

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

数据类型:|

名称 - 值对参数

指定可选的用逗号分隔的对名称,值参数。的名字是参数的名称和价值是对应的值。的名字必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

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

数据类型:烧焦|字符串|细胞

误差方差模型的形式,指定为下列之一。每个模型都使用一个标准的均值为零和单位方差变量来定义误差Ë与独立分量相结合:函数值F,以及一两个参数一个b

“不变”(默认) ÿ = F + 一个 Ë
“比例” ÿ = F + b F Ë
“组合拳” ÿ = F + 一个 + b | F | Ë

使用时,只允许误差模型权重“不变”

注意

options.RobustWgtFun必须有值[]使用比其他的误差模型时“不变”

例:'ErrorModel', '比例'

对于所选择的误差模型参数的初始估计ErrorModel,指定为数字阵列。

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

你只能使用“不变”当使用误差模型权重

注意

options.RobustWgtFun必须有值[]使用比其他的误差模型时“不变”

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

例:'ErrorParameters',[1,2]

观测到从拟合排除,指定为逗号分隔的一对组成的'排除'和一个逻辑或数字索引向量指示从拟合排除的观测。

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

例:'排除',[2,3]

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

数据类型:||合乎逻辑

控制迭代拟合过程的选项,指定为由statset。相关字段是调用返回的结构中的非空字段statset( 'nlinfit')

选项 含义 默认
DerivStep 在有限差分衍生物计算中使用的相对差。正的标量,或者正标量相同大小的由统计和使用选项结构机器学习工具箱™函数估计的参数的向量的向量。 EPS ^(1/3)
显示

信息显示量由拟合算法。

  • “关”- 不显示信息。

  • '最后'-显示最终输出。

  • 'ITER'- 显示迭代输出到命令窗口。

“关”
FunValCheck 字符向量或标量的字符串表示来检查无效的值,如为NaN天道酬勤,从模型的功能。 '上'
MAXITER 迭代的最大数量允许的。正整数。 200
RobustWgtFun 对于稳健的拟合权函数。也可以是一个功能句柄接受归一化残差作为输入并返回鲁棒权重作为输出。如果您使用的功能句柄,给不变。看到强大的选项 []
在鲁棒嵌合用调谐恒定施加的权重函数之前归一化残差。正标量。如果权重函数指定为函数句柄必需。 看到强大的选项默认,这取决于RobustWgtFun
TolFun 目标函数值的终止公差。正标量。 1 e-8
TolX 终止容忍的参数。正标量。 1 e-8

数据类型:结构

预测变量在配合使用,指定为逗号分隔的一对组成的'PredictorVars'以及一个字符串数组或变量名的字符向量的单元阵列中的表或数据集阵列TBL,或逻辑或数字索引向量指示哪些列预测值变量。

该字符串值或特征向量,应在名称中TBL,或指定的名称'VarNames'名称 - 值对的参数。

默认值是所有变量X,或在所有变量TBL除了ResponseVar

例如,可以指定第二和第三变量如使用以下实施例任一个预测变量。

例:'PredictorVars',[2,3]

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

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

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

例如,您可以指定第四个变量,说,作为响应的六个变量,有以下几种方式之一。

例:'ResponseVar', '产量'

例:'ResponseVar',[4]

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

数据类型:||合乎逻辑|烧焦|字符串

的变量的名称,指定为逗号分隔的一对组成的'VarNames'和一个字符串数组或字符向量包括的列名的单元阵列X第一,和用于响应变量名称ÿ最后一次。

'VarNames'并不适用于表或数据集数组变量,因为这些变量已经有了名字。

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

数据类型:字符串|细胞

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

  • 如果你指定一个向量,那么它必须有ñ元素,ñ行数是多少TBLÿ

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

鉴于权重,w ^NonLinearModel估计观测时的误差方差一世通过MSE * (1 / W (i)),其中MSE是均方误差。

数据类型:||function_handle

输出参数

展开全部

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

如果选项结构包含一个非空RobustWgtFun字段,模型不是一个最小二乘拟合,而是使用RobustWgtFun强大的拟合功能。

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

例子

展开全部

创建基于自动里程非线性模型carbig数据。

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

加载carbig台=表(马力、重量、MPG);modelfun = @(B,X)B(1)+ B(2)* X(:,1)。^ B(3)+b (4) * x (:, 2)。^ b (5);beta0 = [- 50500 -1 500 -1];mdl = NonLinearModel.fit(资源描述、modelfun beta0)
mdl =非线性回归模型:MPG ~ b1 + b2 *马力^ ^ b3 + b4 *重量b5估计系数:估计SE tStat pValue ________ _________说b1 -49.383 119.97 -0.41164 0.68083 b2 376.43 -0.78193 0.47168 -1.6578 0.098177 567.05 0.66384 0.50719 b3 b4 b5 -0.24127 0.48325 -0.49926 0.58656 422.37 776.02 0.54428 0.61788的观测数量:392年,错误自由度:387根均方误差:3.96平方:0.745,调整平方0.743 f统计量与常数模型:p值= 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 = [- 50500 -1 500 -1];mdl = NonLinearModel.fit (X, y, modelfun beta0)
mdl =非线性回归模型:y ~ b1 x1 + b4 * ^ b3 x2 + b2 * ^ b5估计系数:估计SE tStat pValue ________ _________说b1 -49.383 119.97 -0.41164 0.68083 b2 376.43 -0.78193 0.47168 -1.6578 0.098177 567.05 0.66384 0.50719 b3 b4 b5 -0.24127 0.48325 -0.49926 0.58656 422.37 776.02 0.54428 0.61788的观测数量:392年,错误自由度:387根均方误差:3.96平方:0.745,调整平方0.743 f统计量与常数模型:p值= 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 = [- 50500 -1 500 -1];

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

OPTS = statset('显示''ITER''TolFun'1平台以及);mdl = NonLinearModel.fit (X, y, modelfun beta0,“选项”,选择采用);
规范标准的迭代SSE梯度步- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 1.82248 e + 06年1 678600 45.4738 788810 1691.07 616716 6.12739 e + 06年3 249831 3.9532 e + 06年293.557 4 17675 361544 369.284 11746.6 69670.5 169.079 7242.22 6172.87 - 91622.9 343738 394.822 159719 6250.32 452.941 8 9 10 6077 6957.44 100.208 6076.34 6370.39 88.1905 268.674 11 13 12 6075.75 5199.08 77.9694 6075.3 4646.61 69.764 6074.91 4235.96 - 62.9114 6074.23 - 3571.1 6074.55 3885.28 57.0647 15岁了18 52.0036 16 17 6073.93 3286.48 47.5795 6073.66 3028.34 - 43.6844 6073.4 2794.31 40.2352 19 20 6073.17 2582.15 37.1663 6072.95 2389.68 34.4243 21 23 22 6072.74 2214.84 31.9651 6072.55 2055.78 29.7516 6072.37 1910.83 27.753 26 25 24 6072.21 1778.51 25.9428 6072.05 1657.5 24.2986 6071.9 1546.65 22.8011 6071.76 1444.93 21.4338 6071.63 1351.44 20.1822 28日29日27日31日30 6071.51 1265.39 19.0339 6071.39 1186.06 17.978 6071.28 1112.83 17.0052 32 33 6071.17 1045.13 16.107 6071.07 982.465 15.2762 6070.98 3435 924.389 - 14.5063 6070.89 870.498 13.7916 36 38 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 42 44 43 6070.37 584.315 9.97114 6070.31 553.53 9.55489 6070.25 524.703 9.1635 45 47 46 6070.19 497.686 8.79506 6070.14 472.345 8.44785 6070.08 448.557 8.12028 50 49 48 6070.03 426.21 7.81092 6069.99 405.201 7.51845 6069.94 385.435 7.2417 51 52 6069.9 366.825 6.97956 6069.85 349.293 6.73104 5355 54 6069.81 332.764 6.49523 6069.77 317.171 6.27127 6069.74 302.452 6.0584 56 58 57 6069.7 288.55 5.85591 6069.66 275.411 5.66315 6069.63 262.986 5.47949 6069.57 240.1 5.13734 6069.6 251.23 5.3044 61 59 63 62 6069.54 229.558 4.97784 6069.51 219.567 4.82545 6069.48 210.094 4.67977 64 6069.45 201.108 4.5404 65 6069.43 192.578 4.407 66 68 67 6069.4 184.479 4.27923 6069.38 176.785 4.15677 6069.35 169.472 4.03935 6069.33 162.518 3.9267 69 70 71 6069.31 155.903 3.81855 6069.29 149.608 3.71468 7274 73 6069.26 143.615 3.61486 6069.24 137.907 3.5189 6069.22 132.468 3.42658 75 6069.21 127.283 3.33774 76 6069.19 122.339 3.25221 77 79 78 6069.17 117.623 3.16981 6069.15 113.123 3.09041 6069.14 108.827 3.01386 80 6069.12 104.725 2.94002 81 6069.1 100.806 2.86877 82 84 83 6069.09 97.0611 2.8 6069.07 93.4814 2.73358 6069.06 90.0583 2.66942 85 6069.05 86.7842 2.60741 86 6069.03 83.6513 2.54745 87 89 88 6069.02 80.6529 2.48947 6069.01 77.7821 2.43338 6068.99 75.0327 2.37908 6068.98 - 72.399 902.32652 91 6068.97 69.8752 2.27561 92 6068.96 67.4561 2.22629 93 95 94 6068.95 65.1367 2.17849 6068.94 62.9122 2.13216 6068.93 60.7784 2.08723 96 6068.92 58.7308 2.04364 97 6068.91 56.7655 2.00135 98 100 99 6068.9 54.8787 1.9603 6068.89 4349.28 18.1917 6068.77 2416.27 14.4439 101 6068.71 1721.26 12.1305 102 104 103 6068.66 1228.78 10.289 6068.63 884.002 8.82019 6068.6 639.615 7.62745 105 6068.58 464.84 6.64627 106 6068.56 338.878 5.82964 107 6068.54 180.879 4.56032 6068.55 247.508 5.14297 108109 6068.53 132.084 4.06194 110 6068.52 96.2341 3.63254 111 113 112 6068.51 69.8362 3.26019 6068.51 50.3734 2.93541 6068.5 36.0205 2.65062 114 6068.5 25.4451 2.39969 115 6068.49 17.6693 2.17764 116 118 117 6068.49 1027.4 14.0164 6068.48 544.038 5.31368 6068.48 94.057 2.86663 119 6068.48 113.636 3.73502 120 6068.48 0.518548 1.37049 121 123 122 6068.48 4.59432 0.91283 6068.48 1.56363 0.629281 6068.48 1.13811 0.432539 124 6068.48 0.295961 0.297507迭代终止:SSE的相对变化小于期权

指定一个非线性回归模型用于使用功能句柄或字符矢量估计。

加载示例数据。

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

使用功能句柄指定率数据Hougen沃特森模型。

MDL = NonLinearModel.fit(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沃特森模型。

myfun ='Y〜(B1 * X2-X3 / B5)/(1个+ B2 * X1 + B3 * X2 + B4 * X3)';mdl2 = NonLinearModel.fit (X, y, myfun beta0)
MDL2 =非线性回归模型为:y〜(B1 * X2  -  X3 / B5)/(1 + B2 * X1 + B3 * X2 + B4 * X3)估计系数:估计SE TSTAT p值________ ________ ______ _______ B1 1.2526 0.86701 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

产生从非线性回归模型的样本数据

ÿ = 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.5100,1);

集强大的配件选择。

OPTS = statset('nlinfit');opts.RobustWgtFun ='bisquare';

使用强大的安装选项适合非线性模型。在这里,用一个特征向量来指定模型。

B0 = [2; 2; 2];modelstr ='Y〜B1 + B2 * EXP(-b3 * X)';mdl = NonLinearModel.fit (x, y, modelstr b0,“选项”选择)
mdl =非线性回归模型(健壮健康):y ~ b1 + b2 * exp (- b3 * x)估计系数:估计SE tStat pValue ________ ________ _____ b1 e-25 b2 3.6619 0.25429 14.401 2.1344 1.0218 0.07202 14.188 7.974 2.9732 0.38496 7.7232 1.0346 e-11 e-26 b3的观测数量:100年,错误自由度:97根均方误差:0.501平方:0.807,调整平方0.803 f统计量与常数模型:203年,假定值= 2.34 e-35

加载示例数据。

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

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

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

使用指定的观测权重函数拟合Hougen沃森模型的速率数据。

MDL = NonLinearModel.fit(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 = NonLinearModel.fit(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

更多关于

展开全部

算法

NonLinearModel.fit使用相同的拟合算法nlinfit

备择方案

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

参考

[1] Seber,G. A. F.,和J. C.野生。非线性回归。新泽西州霍博肯市:威利 - InterScience的,2003。

[2] DuMouchel, W. H.和F. L. O'Brien。“将健壮的选项集成到多元回归计算环境中。”计算机科学与统计:在接口上21研讨会论文集。弗吉尼亚州亚历山大市:美国统计协会,1989年。

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