“文章原创,转载请注明出处”
一、回归分析
在统计分析中,最大的两支应该算是相关分析和回归分析。而回归分析应该是统计学的核心。回归分析,就是研究因变量 y 与自变量 x 之间的关系,存在条件数学期望: f(x)=E(y|x) 。此时有: y=f(x)+ε ,一般假设 ε∼N(0,σ2) 。
回归分析有很多变种:简单线性回归;多项式回归;Logistic回归;非参数回归;非线性回归等等。本篇就介绍最简单的线性回归,首先来看看一元线性回归。
二、一元线性回归
对于一元线性回归来说, f(x) 就是线性的,则有: f(x)=E(y|x)=β0+β1x 。通过已知的数据,可以估计出 β0,β1 的估计值: β^0,β^1 。那么就有 y 的预测值: y^=β^0+β^1x 。
1. 如何计算 β0,β1 的估计值 β^0,β^1 呢?
定义离差平方和:
显然,我们希望 f(xi) 的值与真实值 yi 越接近越好。那么就是需要离差平方和越小越好。则得到目标:
如何寻找 β^0,β^1 使得上面方程达到最小呢?这个就需要对其对 β^0,β^1 求偏导,得到:
令上述两式都等于0,计算得到:
这样就得到 β0,β1 的估计值 β^0,β^1 。这个方法就叫做OLS,即普通最小二乘(ordinary least squares)。
2. R语言实现
在R语言中有自带的函数可以处理线性回归,那就是lm
函数。这里使用自带的数据cars
做演示:
从这里可以得到回归方程: dist^=−17.5791+3.9324×speed 。(对于其它的结果是什么意思,可以去查看线性回归的相关书籍)
另外,得到拟合直线的图像:
三、多元线性回归
对于多元线性回归来说,其计算方式与一元线性回归类似,区别在于,多元的时候需要利用矩阵来处理。首先看一下回归模型:
其中 p 代表自变量的个数。
若取 xT0=[1,1,…,1]1×n ,则可将上述模型改写成: y=Xβ+ε 。其中:
其中 xTi=[x1i,x2i,…,xni] 。
这样我们就可以将离差平方和 ∑ni=1(yi−β0+β1x1+β2x2+⋯+βpxp)2 写成矩阵形式:
求导可得: −2XT(y−Xβ) (这里用到矩阵求导的知识,一般介绍线性模型的书籍中会讲到;当然也可以直接对上面不是矩阵形式的离差平和求导)。令其等于0,可得:
R语言实现
对于R语言的实现,依旧使用lm
函数:
这里就不再用实际数据去演示了。
四、最后
至此,就把线性回归的基础内容介绍完了。但其实线性回归还存在很多其它的问题。比如说回归诊断(就是检查回归的效果),变量选择等等等等。感兴趣的话,可以找本讲线性回归的书看看,有很多!
转自:http://jackycode.github.io/blog/2014/03/30/machine-learning1/