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 )方法进行回归分析。 代码: data exam25_1; input x y; cards; 1.1 109.95 1.2 40.45 1.3 20.09 1.4 24.53 1.5 11.02 1.6 7.39 1.7 4.95 1.8 2.72 1.9 1.82 2 1.49 2.1 0.82 2.2 0.3 2.3 0.2 2.4 0.22 ; run; proc sgplot data = exam25_1; scatter x = x y = y; run; proc corr data = exam25_1; var x y; run; data new1; set exam25_1; v = log(y); run; proc sgplot data = new1; scatter x = x y = v; title '变量代换后数据'; run; proc reg data = new1; var x v; model v = x; print cli; title '残差图'; plot residual. * predicted. ; run; data new2; set exam25_1; y1 = 14530.28*exp(-4.73895*x); run; proc gplot data = new2; plot y*x=1 y1*x=2 /overlay; symbol v=dot i=none cv=red; symbol2 i=sm color=blue; title '指数回归图'; run; 运行结果: 程序说明: (1)调整后的R2=0.9831,说明拟合程度很好;F 检验的P 值=0.0001<α=0.05,拒绝原假设,故直线回归的斜率不为 0; (2)将线性回归系数代入,得到原回归方程 y =14530.28*e−4.73895x (3)残差图趋势,符合残差随机正态分布的假...