1、SAS学习系列25非线性回归25.非线性回归现实世界中严格的线性模型并不多见,它们或多或少都带有某 种程度的近似;在不少情况下,非线性模型可能更加符合实际。对变量间非线性相关问题的曲线拟合,处理的方法主要有:(1) 首先确定非线性模型的函数类型,对于其中可线性化问题 则通过变量变换将其线性化,从而归结为前面的多元线性回归问题 来解决;(2) 若实际问题的曲线类型不易确定时,由于任意曲线皆可由 多项式来逼近,故常可用多项式回归来拟合曲线;(3) 若变量间非线性关系式已知 (多数未知),且难以用变量 变换法将其线性化,则进行数值迭代的非线性回归分析。(一)可变换为线性的非线性回归表1典型的函数及线
2、性化方法1 b=盘亠一卫y tI 1V = U = &V Xby = ax av - In y m 二 In 耳崔数巒数y1 - q严 *v - In y n = xy - ae 卡V 二 111 J 川二丄。X対数函議F 二 “ + 占 bnv = y u - Inx*-S型蚩竝H1y* .1 -rV li *y在很多场合,可以对非线性模型进行线性化处理 ,尤其是可变 换为线性的非线性回归,运用最小二乘法进行推断,对线性化后的 线性模型,可以应用REG过程步进行计算。例1有实验数据如下:X1.11.21.31.41.51.61.71.81.922.12.22.32.4Y109.9540.45
3、 :!0.09 24.53 11.02 7.39 4J)5 2.72 1.82 14)0.82:0.3 0).2 0.22试分别采用指数回归(y二aebx)方法进行回归分析代码:dataexam25_1;in putx y;cards;1.1109.951.240.451.320.091.424.531.511.021.67.391.74.951.82.721.91.8221.492.10.822.20.32.30.22.40.22run ;proc sgplot data = exam25_1; scatter x = x y = y;run ;proc corr data = exam25
4、_1;var x y;run ;data n ew1;set exam25_1;v = log(y);run ;proc sgplot data = new1;scatter x = x y = v;title 变量代换后数据;run ;proc reg data = newl;var x v;model v = x;print cli;title 残差图;plot residual. * predicted.;run ;data n ew2;set exam25_1;y1 = 14530.28 *exp(-4.73895 *x); run ;proc gplot data = new2;pl
5、ot y*x= 1 y1*x= 2 / overlay ; symbol v=dot i=none cv=red; symbol2 i=sm color =blue;title 指数回归图;run ;运行结果:CURR过程简单统计帛N均值标准差总和虽小值最大值XI41.750000 4183324 50000L100002. 40000y1116.1392929 4SD37225 KOOO0. 20000103. 95000Pearson相关系数.N = 14Prob |r| under HU: Rho-0KXyL 00000-0.711040. 0044y-0. 711041 (KMX)0.
6、 (JIM4變氏代欣石靶I!读取的观测数14便用的观测数M方差分析源自由度平方和均方F值Pr r1)1.0910651 O910fi756 31 |t|1ntercept19. 563990. 30*4530.07.000IIX1-4. /sa&D. 17232-2J.5D F模型233259416G2S716. 890. 000!)误葢98350193H 56254校正合计114?1195均方根淒差9H.21977R方0. 7895因变阜均值3t)4O. Iflt)/调整R方0 ?429锂异系数2.72609参数怙计值自由度参数怙计值标准 误差t值Pr |t|1nter oepI14117.
7、20136102. 5464940. 15G 000 IIxl1-204. 9366S36. 26837-5.650 0(X)3x2115 786702.715895.810 0003以下列鑫的残弹七回归量:2 5 5 D 7 5 10 0 12 5 fl K 50 75 im 1251 ITOX1 泛GLM过程源自由度平方和均方卜慎丹 卜23325S4. 3259166297. IC3016.890. 000(5g 口旦 Be差988601.06299844. 5625校正合计11421 I9S.3808R h姿异系数根MSt*均值0. 7SS6442.72568999.219773640.
8、 172自由度犁SS均方F值Pr bxl11L005011.00500. 000. 9741*1*x11332583. 3210332563.321033.780. 0003源自由度1 1 1 SS均方卜值Pr 卜xl1314325.5414314325.b4bl31.930. tK)03x1*x113325S3.321033P583.321033, 780. 0003舂数估计憤标准误差t ffiPr |t|1n tor cnpt4117, 201364102 54649054a 15.0001x1-204. 9365783& 那3725-5. 6&U. 0003x1*x115.7855992
9、, 71680776 81J 0003拟合图 y 料匸二1 那 lRl程序说明:(1 )观察数据的散点图,更适合二次多项式拟合,也可以测 试几种不同次数的多项式拟合选择其中最优的 ;(2)将回归系数代入多项式方程得到:y= 4117.20136 -204.93668x1+ 15.78570x1 2三、不能变换为线性的非线性回归该类非线性回归分析就是利用最小二乘准则来估计回归系数 B,使得残差平方和最小。一般来用数值迭代法来进行,先选定回归系数的初值 ,按照 给定的步长和搜索方向逐步迭代,直到残差平方和达到最小。有5种常用的非线性回归迭代方法:高斯-牛顿法(Gauss-Newton )、最速下降
10、法(梯度法)、牛顿法(Newton )、 麦夸特法(Marquardt )、正割法(DUD )。高斯-牛顿法在初值选取适当,且可逆时非常有效,但在其他情 形,其求解较为困难,对此,Marguardt对其中的正则系数阵作适 当修正,得到了改进算法。(二) PROC NLIN 过程步对于不能线性化的非线性模型。其估计不能直接运用经典的最 小二乘法,而需要运用其他估计方法,如加权最小二乘法、直接搜 索法、直接最优法与Taylor级数展开法进行线性逼近。此时,可以 利用NLIN过程步实现相应的计算,它是采用最小误差平方法及迭代 推测法来建立一个非线性模型,估计参数默认采用高斯-牛顿迭代法 NLIN过程
11、不保证一定可以算出符合最小误差平方法之标准的参数估 计值。基本语法:PROC NLIN data = 数据集;PARMS参数名二数值;MODEL因变量二表达式;vOUTPUT out = 输出数据集;说明:(1)NLIN的可选项包括:outest =输出数据集一一输出每步迭代的结果;best = n 只输出最好的n组残差平方和;method = gauss | marquardt | newton| gradient| dud| 设定参数估计的迭代方法,默认为gauss (没有der.语句);(2) PARMS语句指定参数并赋值,一般包括参数名、初始值 (Grid Search可以帮助选择合适
12、的初始值)、迭代准则;例如:parms b0= 0 b1= 1 to 10 b2= 1 to 10 by 2 b3= 1,10,100;(3)bounds语句用于设定参数的约束,主要是不等式约束, 约束间用逗号分隔。例如,bounds a 30, 1=cl E; Uonver gcnce i leriun met.怙计汇&方法Gfiuss-Newt on迭代4R2.55?F-7PPC(bl)1 O2SL SRPC (bl)9.394E-7ObjccL2.5SE-10目标n. 000517读取的观测20便用的观测20缺失的现测0Hotel An intercept was not spec H
13、i edfor this node 1L源白由度平力和均方FVa1ue以F模樂217.67173.8359275733.0001误差180. 000577C 0OC03?未校正合计2017.6723参数估计值近似 标准淇差近似直信限bO0Q 001610 A92SC.hia 04200. OCO398O (J411(J. 042S近似相关矩阵bOblbO1 0000000a 5556957b1-(L fiS5S9S71 * (XIOQOOOy= b0*(1 exp(b1*x)pnoe nlin method = geuiss程序说明:5个值,bi取0.01, 0.02,0.09共9个值,所有可
14、能组合为5 X9=45,选项best=10要求输出残差平方和最小的前10种组合;(2)最好的迭代初始值为 bo=1.0000 , b1=0.0400,此时回归模型残差为ESS=0.00140;从该迭代初始值开始经过4次迭代误差平 方和的变化就满足收敛准则 (ESS值几乎不变),停止迭代;(3)高斯-牛顿迭代算法要求给出模型 y = b0(1-eTx)对参数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)同时还给出bo和b1参数估计的渐近有效标准差和渐近 95%置信区间。