SAS学习系列25非线性回归.docx

上传人:b****8 文档编号:10532542 上传时间:2023-02-21 格式:DOCX 页数:18 大小:439.55KB
下载 相关 举报
SAS学习系列25非线性回归.docx_第1页
第1页 / 共18页
SAS学习系列25非线性回归.docx_第2页
第2页 / 共18页
SAS学习系列25非线性回归.docx_第3页
第3页 / 共18页
SAS学习系列25非线性回归.docx_第4页
第4页 / 共18页
SAS学习系列25非线性回归.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

SAS学习系列25非线性回归.docx

《SAS学习系列25非线性回归.docx》由会员分享,可在线阅读,更多相关《SAS学习系列25非线性回归.docx(18页珍藏版)》请在冰豆网上搜索。

SAS学习系列25非线性回归.docx

SAS学习系列25非线性回归

25.非线性回归

现实世界中严格的线性模型并不多见,它们或多或少都带有某种程度的近似;在不少情况下,非线性模型可能更加符合实际。

对变量间非线性相关问题的曲线拟合,处理的方法主要有:

(1)首先确定非线性模型的函数类型,对于其中可线性化问题则通过变量变换将其线性化,从而归结为前面的多元线性回归问题来解决;

(2)若实际问题的曲线类型不易确定时,由于任意曲线皆可由多项式来逼近,故常可用多项式回归来拟合曲线;

(3)若变量间非线性关系式已知(多数未知),且难以用变量变换法将其线性化,则进行数值迭代的非线性回归分析。

(一)可变换为线性的非线性回归

在很多场合,可以对非线性模型进行线性化处理,尤其是可变换为线性的非线性回归,运用最小二乘法进行推断,对线性化后的线性模型,可以应用REG过程步进行计算。

例1有实验数据如下:

X

1.1

1.2

1.3

1.4

1.5

1.6

1.7

1.8

1.9

2

2.1

2.2

2.3

2.4

Y

109.95

40.45

20.09

24.53

11.02

7.39

4.95

2.72

1.82

1.49

0.82

0.3

0.2

0.22

试分别采用指数回归(y =aebx )方法进行回归分析。

代码:

dataexam25_1;

inputxy;

cards;

1.1109.95

1.240.45

1.320.09

1.424.53

1.511.02

1.67.39

1.74.95

1.82.72

1.91.82

21.49

2.10.82

2.20.3

2.30.2

2.40.22

;

run;

procsgplotdata=exam25_1;

scatterx=xy=y;

run;

proccorrdata=exam25_1;

varxy;

run;

datanew1;

setexam25_1;

v=log(y);

run;

procsgplotdata=new1;

scatterx=xy=v;

title'变量代换后数据';

run;

procregdata=new1;

varxv;

modelv=x;

printcli;

title'残差图';

plotresidual.*predicted.;

run;

datanew2;

setexam25_1;

y1=14530.28*exp(-4.73895*x);

run;

procgplotdata=new2;

ploty*x=1y1*x=2/overlay;

symbolv=doti=nonecv=red;

symbol2i=smcolor=blue;

title'指数回归图';

run;

运行结果:

程序说明:

(1)调整后的R2=0.9831,说明拟合程度很好;F检验的P值=0.0001<α=0.05,拒绝原假设,故直线回归的斜率不为0;

(2)将线性回归系数代入,得到原回归方程

y=14530.28*e−4.73895x

(3)残差图趋势,符合残差随机正态分布的假设(不带其它明显趋势)。

二、多项式回归

一般函数都可用多项式来逼近,故多项式回归分析可用来处理相当广泛的非线性问题。

对观测数据(xt,yt),t=1,…,N.多项式回归模型为:

则模型可写为:

Y=XB+ε

当X列满秩时,用最小二乘估计

可求得其多项式回归方程。

但由于

的计算既复杂又不稳定,故一般采用正交多项式法来进行多项式回归。

多项式模型可以直接应用GLM(广义线性模型)求解。

例2市种畜场奶牛群1—12月份(x1),产犊母牛平均产奶量(y)

的资料如程序数据步中,试对该资料配置一个合适的回归方程。

代码:

dataexam25_2;

inputx1y;

x2=x1*x1;

datalines;

13833.43

73476.76

23811.58

83466.22

33769.47

93395.42

43565.74

103807.08

53481.99

113817.03

63372.82

123884.52

;

run;

procsgplotdata=exam25_2;

scatterx=x1y=y;

title'原始数据散点图';

run;

procregdata=exam25_2;

modely=x1x2;

run;

运行结果:

程序说明:

(1)观察数据的散点图,更适合二次多项式拟合,也可以测试几种不同次数的多项式拟合选择其中最优的;

(2)将回归系数代入多项式方程得到:

y=4117.20136-204.93668x1+15.78570x12

三、不能变换为线性的非线性回归

该类非线性回归分析就是利用最小二乘准则来估计回归系数β,使得残差平方和最小。

一般来用数值迭代法来进行,先选定回归系数的初值β0,按照给定的步长和搜索方向逐步迭代,直到残差平方和达到最小。

有5种常用的非线性回归迭代方法:

高斯-牛顿法(Gauss-Newton)、最速下降法(梯度法)、牛顿法(Newton)、麦夸特法(Marquardt)、正割法(DUD)。

高斯-牛顿法在初值选取适当,且可逆时非常有效,但在其他情形,其求解较为困难,对此,Marguardt对其中的正则系数阵作适当修正,得到了改进算法。

(二)PROCNLIN过程步

对于不能线性化的非线性模型。

其估计不能直接运用经典的最小二乘法,而需要运用其他估计方法,如加权最小二乘法、直接搜索法、直接最优法与Taylor级数展开法进行线性逼近。

此时,可以利用NLIN过程步实现相应的计算,它是采用最小误差平方法及迭代推测法来建立一个非线性模型,估计参数默认采用高斯-牛顿迭代法。

NLIN过程不保证一定可以算出符合最小误差平方法之标准的参数估计值。

基本语法:

PROCNLINdata=数据集;

PARMS参数名=数值;

MODEL因变量=表达式;

;>

说明:

(1)NLIN的可选项包括:

outest=输出数据集——输出每步迭代的结果;

best=n——只输出最好的n组残差平方和;

method=gauss|marquardt|newton|gradient|dud|——设定参数估计的迭代方法,默认为gauss(没有der.语句);

(2)PARMS语句指定参数并赋值,一般包括参数名、初始值(GridSearch可以帮助选择合适的初始值)、迭代准则;例如:

parmsb0=0b1=1to10b2=1to10by2b3=1,10,100;

(3)bounds语句用于设定参数的约束,主要是不等式约束,约束间用逗号分隔。

例如,boundsa<=20,b>30,1<=c<=10;

(4)der.语句用于计算模型关于各参数的偏导数,相应格式为:

一阶偏导数:

der.参数名=表达式;

二阶偏导数:

der.参数名.参数名=表达式;

例如,对于模型modely=b0*(1-exp(-b1*x));二阶偏导数表达式:

der.b0.b1=x*exp(-b1*x);

例3根据对已有数据的XY散点图的观察和分析,发现Y随X增长趋势是减缓的,并且Y趋向一个极限值,我们认为用负指数增长曲线来拟合模型较为合适。

代码:

dataexpd;

inputxy;

datalines;

0200.570300.720400.810500.870600.910700.94

0800.950900.971000.981100.991201.001300.99

1400.991501.001601.001700.991801.001901.00

2000.992101.00

;

procnlindata=expdbest=10method=gauss;

parmsb0=0to2by0.5b1=0.01to0.09by0.01;

modely=b0*(1-exp(-b1*x));

der.b0=1-exp(-b1*x);

der.b1=b0*x*exp(-b1*x);

outputout=expoutp=ygs;

run;

goptionsreset=globalgunit=pctcback=whiteborder

htitle=6htext=3ftext=swissbcolors=(back);

procgplotdata=expout;

ploty*xygs*x/haxis=axis1vaxis=axis2overlay;

symbol1i=nonev=pluscv=redh=2.5w=2;

symbol2i=joinv=nonel=1h=2.5w=2;

axis1order=20to210by10;

axis2order=0.5to1.1by0.05;

title1'y=b0*(1-exp(-b1*x)';

title2'procnlinmethod=gauss';

run;

运行结果:

程序说明:

(1)parms语句设置了初始值网格值为b0取0,0.5,1,1.5,2共5个值,b1取0.01,0.02,…,0.09共9个值,所有可能组合为5×9=45,选项best=10要求输出残差平方和最小的前10种组合;

(2)最好的迭代初始值为b0=1.0000,b1=0.0400,此时回归模型残差为ESS=0.00140;从该迭代初始值开始经过4次迭代误差平方和的变化就满足收敛准则(ESS值几乎不变),停止迭代;

(3)高斯-牛顿迭代算法要求给出模型

对参数b0和b1的一阶偏导数表达式:

der.语句用来表示上面两个一阶偏导数表达式;

(4)output语句输出一个新数据集expout,包括原数据集和非线性回归模型的预测值ygs;gplot过程的主要作用是绘制输出数据集expout中的原始数据的散点图及回归曲线的平滑线;

(5)方差分析表,给出了回归平方和为17.6717,残差平方和为0.000577,总平方和为17.6723.

(6)参数估计表,给出了b0和b1的渐近估计值,得到的非线性回归模型为

y=1.0000000*[1-exp(0.5558957x)]

同时还给出b0和b1参数估计的渐近有效标准差和渐近95%置信区间。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1