非线性回归分析及其Matlab实现

  • 回归分析简介

回归分析(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)首先绘制散点图如下 :

非线性回归分析及其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 ) ),得到拟合之后的结果:

非线性回归分析及其Matlab实现_第2张图片

作者:YangYF 

你可能感兴趣的:(智能钻完井,油田大数据,Matlab在石油工程中应用)