回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
如果只有一个自变量,则称之为一元回归分析;如果具有多个自变量,则称之为多元回归分析。
如果自变量与因变量之间的函数关系是线性函数,则称之为线性回归分析,否则称之为非线性回归分析。
线性回归的函数表达式一般表示为:
对于非线性回归分析,需要根据实际情况来确定函数类型,再根据已知的数据来估计非线性函数中的参数。常见的回归函数有幂函数、指数函数、对数函数、S型曲线函数,S型曲线函数中常见的是Logistic回归模型,其函数表达式为:
对于非线性回归,往往需要根据已知的数据绘制散点图,以此分析出数据的变化趋势,进而确定回归模型。
基于Matlab的非线性回归分析1.函数nlinfit语法:
[beta,r,j] = nlinfit(x,y,@function,b0)
x表示自变量
y表示因变量
function表示回归函数的函数名
b0表示回归函数中参数的初值
beta表示回归参数的最优值
r表示残差
j表示雅克比矩阵
2.案例:
现有某地区1971—2000年的人口数据,试对该地区的人口变化进行曲线拟合。
年份
时间变量x=年份-1970
人口y(人)
1971
1
33 815
1972
2
33 981
1973
3
34 004
1974
4
34 165
1975
5
34 212
1976
6
34 327
1977
7
34 344
1978
8
34 458
1979
9
34 498
1980
10
34 476
1981
11
34 483
1982
12
34 488
1983
13
34 513
1984
14
34 497
1985
15
34 511
1986
16
34 520
1987
17
34 507
1988
18
34 509
1989
19
34 521
1990
20
34 513
1991
21
34 515
1992
22
34 517
1993
23
34 519
1994
24
34 519
1995
25
34 521
1996
26
34 521
1997
27
34 523
1998
28
34 525
1999
29
34 525
2000
30
34 527
Matlab实现如下:
1)首先绘制散点图如下 :
根据此图,可以 看出两组数据走势满足Logistic模型,因此选择Logistic回归模型。
2)新建一函数文件,文件名为ModelFunction.m,文件内容如下:
function y = ModelFunction( beta, x )
y = 1 ./ (beta(1) + beta(2) * exp(-x));
3)再创建一个新的M文件,文件名为TestData.m,其内容如下:
x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30];
y=[33815 33981 34004 34165 34212 34327 34344 34458 34498 34476 34483 34488 34513 34497 34511 34520 34507 34509 34521 34513 34515 34517 34519 34519 34521 34521 34523 34525 34525 34527];
b0=[0.0001 0.00001];
[ beta, r, j ] = nlinfit( x, y, @ModelFunction, b0 )
4)运行结果如下:
beta的输出值为
beta =
1.0e-004 *
0.2902 0.0184
即回归分析方程为:
最后执行命令:plot( x, ModelFunction( beta, x ) ),得到拟合之后的结果:
作者:yydqd