简介
非线性回归需要指定模型,然后再采取某种方法计算出模型参数。实际操作过程中可能需要因变量与自变量散点图来分析具体模型形式。
非线性回归
非线性回归工作流程:导入数据,拟合非线性回归,测试其质量,对其进行修改以提高质量以及根据模型进行预测。
例子
clc
clear all
close all
% step1:加载reaction数据,reaction是具有13行3列的矩阵。每一行对应一个观察值,每一列对应一个变量。
load reaction
% step2:hougen.m文件包含反应速率的非线性模型,该模型是三个预测变量的函数。
beta0 = ones(5,1);
mdl = fitnlm(reactants,...
rate,@hougen,beta0)
% step3:检查模型的质量。与观测值范围相比,均方根误差相当低。
[mdl.RMSE min(rate) max(rate)]
plotResiduals(mdl)
plotDiagnostics(mdl,'cookd')
% step4.移除异常值。使用排除名称/值对从拟合中移除异常值。
mdl1 = fitnlm(reactants,...
rate,@hougen,ones(5,1),'Exclude',6)
% step5.检查两个模型的切片图。要查看每个预测变量对响应的影响,请使用plotSlice(mdl)绘制切片图。
plotSlice(mdl)
plotSlice(mdl1)
% step6.预测新数据。创建一些新数据并预测两个模型的响应。
Xnew = [200,200,200;100,200,100;500,50,5];
[ypred yci] = predict(mdl,Xnew)
[ypred1 yci1] = predict(mdl1,Xnew)
结果
mdl =
Nonlinear regression model:
y ~ hougen(b,X)
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ _______
b1 1.2526 0.86702 1.4447 0.18654
b2 0.062776 0.043562 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
Number of observations: 13, Error degrees of freedom: 8
Root Mean Squared Error: 0.193
R-Squared: 0.999, Adjusted R-Squared 0.998
F-statistic vs. zero model: 3.91e+03, p-value = 2.54e-13
ans =
0.1933 0.0200 14.3900
mdl1 =
Nonlinear regression model:
y ~ hougen(b,X)
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ _______
b1 0.619 0.4552 1.3598 0.21605
b2 0.030377 0.023061 1.3172 0.22924
b3 0.018927 0.01574 1.2024 0.26828
b4 0.053411 0.041084 1.3 0.23476
b5 2.4125 1.7903 1.3475 0.2198
Number of observations: 12, Error degrees of freedom: 7
Root Mean Squared Error: 0.198
R-Squared: 0.999, Adjusted R-Squared 0.998
F-statistic vs. zero model: 2.67e+03, p-value = 2.54e-11
ypred =
1.8762
6.2793
1.6718
yci =
1.6283 2.1242
5.9789 6.5797
1.5589 1.7846
ypred1 =
1.8984
6.2555
1.6594
yci1 =
1.6260 2.1708
5.9323 6.5787
1.5345 1.7843
>>
找到误差并移除
这些图看起来非常相似,其对mdl1的置信区间稍宽。 这种差异是可以理解的,因为拟合中的数据点少了,表示观测值减少了7%以上。模型系数虽然不同,但是预测几乎相同。