实际问题中,变量之间常常不是直线。这时,通常是选配一条比较接近的曲线,通过变量替换把非线性方程加以线性化,然后按照线性回归的方 法进行拟合。

#常见的可转化一元线性回归的模型#

  • 倒幂函数曲线为什么把非线性回归转换成线性回归 非线性回归方程的转化_为什么把非线性回归转换成线性回归
    为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_02, 则得为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_03.
  • 双曲线为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_04
    为什么把非线性回归转换成线性回归 非线性回归方程的转化_为什么把非线性回归转换成线性回归_05, 则得为什么把非线性回归转换成线性回归 非线性回归方程的转化_非线性回归_06.
  • 幂函数曲线为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_07
    为什么把非线性回归转换成线性回归 非线性回归方程的转化_非线性回归_08, 则得为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_09.
  • 指数曲线为什么把非线性回归转换成线性回归 非线性回归方程的转化_机器学习_10
    为什么把非线性回归转换成线性回归 非线性回归方程的转化_为什么把非线性回归转换成线性回归_11, 则得为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_12.
  • 倒指数曲线为什么把非线性回归转换成线性回归 非线性回归方程的转化_为什么把非线性回归转换成线性回归_13
    为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_14, 则得为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_09.

综上所述,许多曲线都可以通过变换化为直线,于是可以按直线拟合的方法来处理。对变换后的数据进行线性回归分析,之后将得到的结果再代回原方程。因而,回归分析是对变换后的数据进行的,所得结果仅对变换后的数据来说是最佳拟合,当再变换回原数据坐标时,所得的回归曲线严格地说并不是最佳拟合,不过,其拟合程度通常是令人满意的。

#一元多项式回归模型#
不是所有的一元非线性函数都能转换成一元线性方程,但任何复杂的一元连续函数都可用高阶多项式近似表示,因此对于那些较难直线化的一元函数,可用下式来拟合。

分析
为什么把非线性回归转换成线性回归 非线性回归方程的转化_为什么把非线性回归转换成线性回归_16
如果令为什么把非线性回归转换成线性回归 非线性回归方程的转化_机器学习_17,则上式可以转化为多元线性方程。
为什么把非线性回归转换成线性回归 非线性回归方程的转化_机器学习_18
这样就可以用多元线性回归分析求出系数为什么把非线性回归转换成线性回归 非线性回归方程的转化_非线性回归_19。(求解方法是最小二乘法)

虽然多项式的阶数越高,回归方程与实际数据拟合程度越高,但阶数越高,回归计算过程中的舍入误差的积累也越大,所以当阶数为什么把非线性回归转换成线性回归 非线性回归方程的转化_为什么把非线性回归转换成线性回归_20过高时,回归方程的精确度反而会降低,甚至得不到合理的结果。故一般取为什么把非线性回归转换成线性回归 非线性回归方程的转化_机器学习_21

下面我们看一个例子。

已知某种半成品在生产过程中的废品率为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_22与它的某种化学成分为什么把非线性回归转换成线性回归 非线性回归方程的转化_为什么把非线性回归转换成线性回归_23有关,试验数据如下表所示。试根据散点图特点选配一条合适的拟合曲线关系。
| 为什么把非线性回归转换成线性回归 非线性回归方程的转化_为什么把非线性回归转换成线性回归_23 | 34 | 36 | 37 | 38 | 39 | 39 | 39 | 40 | 40 | 41 | 42 | 43 | 43 | 45 | 47 | 48 |
| ------------- |:-------------? -----?
| 为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_22 | 1.30 | 1.00 | 0.73 | 0.90 | 0.81 | 0.70 | 0.60 | 0.50 | 0.44 | 0.56 | 0.30 | 0.42 | 0.35 | 0.40 | 0.41 | 0.60 |
解:二次多项式回归模型为
为什么把非线性回归转换成线性回归 非线性回归方程的转化_为什么把非线性回归转换成线性回归_26
为什么把非线性回归转换成线性回归 非线性回归方程的转化_机器学习_27,则上式可以转化为二元线性方程:
为什么把非线性回归转换成线性回归 非线性回归方程的转化_非线性回归_28
##参数估计:选用最小二乘法##
根据表中数据,得
为什么把非线性回归转换成线性回归 非线性回归方程的转化_非线性回归_29
为什么把非线性回归转换成线性回归 非线性回归方程的转化_拟合_30程序求得
为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_31
所以回归方程为
为什么把非线性回归转换成线性回归 非线性回归方程的转化_拟合_32
##方差分析表及相关性检验##
假设为什么把非线性回归转换成线性回归 非线性回归方程的转化_拟合_33
由方差检验,及为什么把非线性回归转换成线性回归 非线性回归方程的转化_拟合_30程序求得

为什么把非线性回归转换成线性回归 非线性回归方程的转化_机器学习_35

由于为什么把非线性回归转换成线性回归 非线性回归方程的转化_机器学习_36,说明回归方程在为什么把非线性回归转换成线性回归 非线性回归方程的转化_为什么把非线性回归转换成线性回归_37水平上是高度显著的。

下面是求解的一些统计量:

为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_38


拟合的图像如下图所示。

为什么把非线性回归转换成线性回归 非线性回归方程的转化_数据_39


显然,从拟合的图像可以看出,拟合的效果比较好。

##Matlab代码

clear all;
clc

X1=[34;36;37;38;39;39;39;40;40;41;42;43;43;45;47;48];
x1=X1;
x2=X1.*X1;
X=[ones([size(X1,1),1]),x1,x2];
Y=[1.30;1.00;0.73;0.90;0.81;0.70;0.60;0.50;0.44;0.56;0.30;0.42;0.35;0.40;0.41;0.60];

beta=inv((X'*X))*X'*Y;  %回归系数
disp('偏回归系数');
disp(beta);

%回归分析
z1=X;
z1(:,1)=[];
n=size(Y,1);    %观察单位数
m=size(X,2);    
p=m-1;          %自变量个数

alpha=0.05;  
yhat=X*beta;


%方差分析表(F检验)
SSR=(yhat-mean(Y))'*(yhat-mean(Y));  %回归平方和
SSE=(yhat-Y)'*(yhat-Y);        %残差平方和
SST=(Y-mean(Y))'*(Y-mean(Y));    %总平方和
Fb=(SSR/(m-1))/(SSE/(n-m));       %显著性检验的统计量
Fa=finv(1-0.01,2,13);
Falpha=2*(1-fcdf(abs(Fb),m-1,n-m));   %P值

table1=cell(4,7);    %创建元胞
table1(1,:)={'模型','偏差平方和','自由度','均方','F值','Fa','F.Sig'};
table1(2,1:7)={'回归',SSR,m-1,SSR/(m-1),Fb,Fa,Falpha};
table1(3,1:7)={'残差',SSE,n-m,SSE/(n-m),[],[],[]};
table1(4,1:3)={'总和',SST,n-1};

%决定系数检验
R2=SSR/SST;   %决定系数
R=sqrt(R2);   %复相关系数
disp('复相关系数');
disp(R);
Sy=sqrt(SSE/(n-m));      %剩余标准差
disp('估计的标准误差');
disp(Sy);

disp('方差分析表');
disp(table1);

xl=min(X1);xr=max(X1);
xx=linspace(xl,xr,1000);
yy=polyval(fliplr(beta'),xx);
plot(X1,Y,'k*',xx,yy,'-k');