一、回归的概念;
回归(Regression)这一概念最早由英国生物统计学家高尔顿和他的学生皮尔逊在研究父母亲和子女的身高遗传特性时提出。
“子女的身高趋向于高于父母的身高的平均值,但一般不会超过父母的身高。”--《遗传的身高向平均数方向的回归》
如今,我们做回归分析时所讨论的"回归"和这种趋中效应已经没有任何瓜葛了,它只是指源于高尔顿工作的那样——用一个或多个自变量来预测因变量的数学方法。
在一个回归模型中,我们需要关注或预测的变量叫做因变量,我们选取的用来解释因变量变化的变量叫做自变量。其特征是:一个变量随着其它变量的确定而确定。另一类关系叫相关关系,变量之间的关系很难用一种精确的方法表示出来。例如,通常人的年龄越大血压越高,但人的年龄和血压之间没有确定的数量关系,人的年龄和血压之间的关系就是相关关系。
二、线性回归模型:
1.一元线性回归模型:
基本假设 y = w0 + w1x + ε ,其中w0 和w1为回归系数,ε为随机误差项,假设 ε~N(0,σ2),则随机变量 y~N(w0 + w1x , σ2)。面对一个具体问题,给定样本集合 D={(x1,y1) , ... , (xn,yn) },我们的目的是找到一条直线 y = w0 + w1x 使得所有样本点尽可能落在它的附近。
数据模型为:
2.多元线性回归模型:
基本假设 y = WT x + ε ,其中 x = (x1 , x2 , ... , xd )为自变量,w = (w1 , w2 , ... , wd )为回归系数。假设训练集的自变量部分纪委 n * d 的矩阵 X ,因变量部分记为y = (y1 , y2 , ... , yd )。
数据模型为:
- 非线性回归:
方法:样条回归,径向基回归,SVR: SVM for regression,Regression Tree,Gaussian process等方法。
三、代码实现:
1. 对于线性回归和多项式回归,可以使用 polyfit 函数,语法为:
参数意义:
注:使用polyval函数可以计算拟合多项式的值,语法为:
参数意义:
2.对于多元线性回归,可以使用 regress 函数,语法为:
参数意义:
3.对于非线性回归,可以使用 nlinfit 函数,语法为:
参数意义:
四、举例:
- 人口与年份关系:
年份 | 1790 | 1800 | 1810 | 1820 | 1830 | 1840 | 1850 | 1860 | 1870 | 1880 | 1890 |
人口/百万 | 3.9 | 5.3 | 7.2 | 9.6 | 12.9 | 17.1 | 23.2 | 31.4 | 38.6 | 50.2 | 62.9 |
年份 | 1900 | 1910 | 1920 | 1930 | 1940 | 1950 | 1960 | 1970 | 1980 | 1990 | 2000 |
人口/百万 | 76.2 | 92.2 | 106.5 | 123.2 | 132.2 | 151.3 | 179.3 | 203.2 | 226.5 | 249.6 | 281.4 |
代码如下:
结果如下:
我们可以发现,该散点图与一次函数并不拟合,所以可以尝试二次函数。
代码如下:(将阶数1改成2即可)
结果如下:
我们发现,使用二次函数拟合的结果要更好。
2.加载 carsmall 数据集。使用加速度 Acceleration、和排量 Displacement 来预测每加仑里程数 MPG:
代码如下:
结果如下:
欢迎多多指正!