MATLAB回归之一元非线性回归

用例题对一元非线性回归进行分析

Posted by TkiChus on November 2, 2018

MATLAB回归

一元非线性回归

在一些实际问题中,变量间的关系并不是都是线性的,用非线性胡桂首先要解决的问题是回归方程中的参数如何估计。我们再通过一个实例来说明如何利用非线性回归技术解决实例问题

【例】为了解百货商贷销售额x与流通率(这是反应商业活动的一个质量指标,指每元上平流转所分摊的流通费用)y之间的关系,收集了九个商店的有关数据(表二)。请建立2他们关系的数学模型:

之后先得到数据之间的散点图 ,如图:

这也是得到x与y之间关系的第一步,由上图判断他们之间的关系可以近似为对数关系或者指数关系,为此可以利用这俩种函数形式进行非线性的拟合,具体步骤如下:

(1)输入数据

clc, clear all, close all
x=[1.5, 4.5, 7.5,10.5,13.5,16.5,19.5,22.5,25.5];
y=[7.0,4.8,3.6,3.1,2.7,2.5,2.4,2.3,2.2];
plot(x,y,'*','linewidth',2);
set(gca,'linewidth',2);
xlabel('销售额x/万元','fontsize', 12)
ylabel('流通费率y/%', 'fontsize',12)

(2) 对数形式非线性回归

m1 = @(b,x) b(1) + b(2)*log(x);
nonlinfit1 = fitnlm(x,y,m1,[0.01;0.01])
b=nonlinfit1.Coefficients.Estimate;
Y1=b(1,1)+b(2,1)*log(x);
hold on
plot(x,Y1,'--k','linewidth',2)

运行结果如下:

nonlinfit1 =
Nonlinear regression model:
    y ~ b1 + b2*log(x)
Estimated Coefficients:
          Estimate      SE        tStat       pValue
    b1    7.3979      0.26667     27.742    2.0303e-08
    b2    -1.713      0.10724    -15.974    9.1465e-07
R-Squared: 0.973,  Adjusted R-Squared 0.969
F-statistic vs. constant model: 255, p-value = 9.15e-07

(3)指数形式非线性回归

m2 = 'y ~ b1*x^b2';
nonlinfit2 = fitnlm(x,y,m2,[1;1])
b1=nonlinfit2.Coefficients.Estimate(1,1);
b2=nonlinfit2.Coefficients.Estimate(2,1);
Y2=b1*x.^b2;
hold on
plot(x,Y2,'r','linewidth',2)
legend('原始数据','a+b*lnx','a*x^b')

运行结果如下:

nonlinfit2 =
Nonlinear regression model:
    y ~ b1*x^b2
Estimated Coefficients:
          Estimate       SE        tStat       pValue
    b1      8.4112     0.19176     43.862    8.3606e-10
    b2    -0.41893    0.012382    -33.834    5.1061e-09
R-Squared: 0.993,  Adjusted R-Squared 0.992
F-statistic vs. zero model: 3.05e+03, p-value = 5.1e-11

在该案例中,选择俩种形式的函数进行非线性回归,从回归的结果来看,对数形式的决定系数为0.973,而指数形式的为0.993,显然优于前者,所以可以认为指数形式的函数形式更符合y与x之间的关系,这样就可以确定这些数据之间的关系 了。

##