﻿功能:多元线性回归(Linear regression)

格式:
[a,r,er] = LineReg(x,y)
x:为行数与y一致,每一列对应一个拟合系数的矩阵变量
y:为行数与x一致,列数为1的矩阵变量

a:求解得到的解
R:求解结果的R相关系数
er:求解结果的均方和误差


原理:

1、本函数求解这么一类问题,已知一组数据 x1,x2,……,xn,y 且它们满足如下关系式
$$
\begin{aligned}
    y &= \sum_{i=1}^na_ix_i
\end{aligned}
$$
2、本函数内部先调用{SolveEquationLSM2<矩阵运算\SolveEquationLSM2>}函数进行求解,如果求解失败,再调用{SolveEquationGauss<矩阵运算\SolveEquationGauss>}函数进行求解。在计算R系数时调用函数{DataPearson<矩阵运算\DataPearson>}函数进行计算。因为调用{SolveEquationLSM2<矩阵运算\SolveEquationLSM2>}等函数计算,因此回归原则以残差均方和最小来进行求解!

3、如果涉及到复数的求解请使用函数{PluralSolveEquation<矩阵运算\PluralSolveEquation>}


例子:

//已经采集到5组自变量数据x以及1组因变量数据y,如下,且y与x有线性关系 y = a1*x1+a2*x2+a3*x3+a4*x4+a5*x5，请回归出最佳系数a1,a2,a3,a4,a5

x =
[ 7.25860753434645    11.8711130190041    10.8990779104173    3.54904953555625    8.36840614134837
  10.6833587543496    6.68895688219413    11.8564310445713    9.59743257127583    15.1590162772494
  4.58008126568984    17.7553743392953    12.4129601253257    14.9155775154548    8.44915807640606
  4.88469731290112    14.6641315960624    8.23969226714209    19.7309386728941    5.81601213934646
  12.7231038793563    1.73430387011464    2.04101430347237    15.0479974667765    15.4209944211976
  0.39680907521248    5.77776734986239    12.2305688598336    5.68227502782004    4.18616335102644
  15.0849748193682    3.79267333252014    10.0048833666392    18.3855409353904    7.13778812770629
  16.6984320323441    12.8521020211522    3.81526733926277    14.4671658587023    11.4063715615339
  13.1241677203794    4.65085626796393    0.48147455811569    19.2874754868855    18.6448247631289
  14.0938467132365    18.7950908945851    13.3189187540295    7.92019056525090    11.8881027269587
  16.9536774498195    0.71445836718867    15.4290819426203    6.14754488977955    11.2646011036190
  5.52430366423181    9.83009871553169    15.8510804436407    8.12805511435869    7.97159706613589
  4.90559140448719    14.4583880223606    6.17415601675127    5.41126922024939    0.07404145788123
  0.78740793316970    7.75049097265605    14.0274191899353    7.77778938774848    11.7507260440619
  12.0325952917489    10.8488642567996    13.7725264084397    8.32456711136017    12.6918444189671
  8.07224761139240    1.25282931199895    2.75353881658685    16.4031727036476    1.32714770796110
  1.60171818062743    12.4588485958329    4.31037829458265    13.7941723008613    7.23248590120696
  14.3705164521795    8.36359138989988    3.85733847685966    7.12093983177139    1.61348446347447
  6.86833331681245    17.0010215775115    15.6872122249041    6.49556879256646    6.50078015704676
  18.6657796980188    18.4767002512127    15.0702053378663    19.2134340290043    17.8574168299592 ];
y =
[ 105.936552612824
  106.678738740463
  143.201311610836
  117.277776324237
  70.8033552481675
  63.7728254205579
  80.0068707797347
  131.490474163516
  95.1712658569679
  159.765543885905
  78.0728778043084
  103.909362050874
  93.7485677966887
  89.7070140296744
  120.087753560087
  38.6943666590986
  93.5820770149605
  86.6202914052878
  140.040920690300
  187.469357165249 ];
//假如程序之前已经有上面x、y两个变量的数据

[a,r,er] = LineReg(x,y)//回车得到如下结果,如果把x拆分 x = [x1,x2,x3,x4,x5],其中x1,x2,x3,x4,x5分别对应x的1、2、3、4、5列数据,则根据拟合结果有 y = 1.61042494268983*x1+5.05136622436205*x2+1.50410383143733*x3+0.72240897548221*x4+1.78690449661517*x5，其中回归结果的R系数为0.99690581250500(非常接近1),残差平方和为20.2562422736366
a =
[ 1.61042494268983
  5.05136622436205
  1.50410383143733
  0.72240897548221
  1.78690449661517 ]
r =
[ 0.99690581250500 ]
er =
[ 20.2562422736366 ]

// 修改于 2014/12/01 15:56:00