聊完方差分析,就不得不说回归分析。
回归分析是一种应用广泛的统计分析方法,在金融,医学等领域都已经成功应用,而且是比较简单也比较常用的算法了,是经得起考验的,结果解读也很友好。
这次我们就先以最常见的Excel表格来做回归分析,Excel表格的功能远比我们想的强大(一般的回归分析,只要是数据量不是很大,Excel完全可以搞得定,而且上手十分容易,不需要一行代码,就可以轻松搞定)一般是利用最小二乘法来计算出回归模型的参数值。但是得到的回归方程到底有没有统计学意义,还需要对回归方程进行各种检验,主要是回归方程显著性检验,回归系数显著性检验,残差分析等。
数据集:波士顿房价数据
波士顿房价数据已被用于许多涉及回归问题的机器学习论文中,所有我们拿这个成熟的数据集来预测房价练练手!数据如下:
CRIM 城镇人均犯罪率
ZN 占地面积超过2.5万平方英尺的住宅用地比例
INDUS 城镇非零售业务地区的比例
CHAS 查尔斯河虚拟变量 (= 1 如果土地在河边;否则是0)
NOX 一氧化氮浓度(每1000万份)
RM 平均每居民房数
AGE 在1940年之前建成的所有者占用单位的比例
DIS 与五个波士顿就业中心的加权距离
RAD 辐射状公路的可达性指数
TAX 每10,000美元的全额物业税率
PTRATIO 城镇师生比例
B 1000(Bk - 0.63)^2 其中 Bk 是城镇的黑人比例
LSTAT 人口中地位较低人群的百分数
MEDV 以1000美元计算的自有住房的中位数
做回归分析前,先看下特征的相关性,如下:
注:Excel内置的相关系数是pearson相关系数
好像和价格的相关性都差不多,那我们做一个回归拟合看看,Excel界面如下:
得到结果如下:
残差图
特征残差拟合图
注:回归方程的显著性检验是F检验也就是方差分析,回归方程系数检验是T检验
结果说明:
1,回归统计:R Square表示拟合度,就是方程对数据的拟合程度,当然是越大越好,此时为0.74
2,方差分析:F=108.057,这个F是啥?是F统计量,回归方程的显著性检验是用的F检验,sig F=6.9468E-135 <0.05,所有这个方程是显著的,有意义的!
3,回归系数coefficient显著性,看T——Start值,看特征对于的P值,如图:特征INDUS,AGE对应的T统计量均小于1,P值大于0.05,说明这两个系数与y(price)的线性关系不显著,不应该保留在回归方程中,也可以再结合特征残差拟合图来看一下特征的有效性
看来得把这两个线性关系不显著的特征去掉之后再重新做回归!
这一次的回归方程和回归系数都有显著性,但是这个R Square=0.740545,好像和不剔除变量没什么差别,甚至还小一点,这就有点尴尬了。
整体的方程拟合度才0.74,效果不是很好。
我们用python来做一下看看首先来筛选特征,有两种方法SelectKBest和f_regression
注:f_regression 是单因素线性回归F检验,SelectKBest方法可以调用检验方法,如:卡方检验chi2,还有针对分类的方差分析的f_classif,当然也可以调用f_regression方法,还可以选择前k个分数较高的特征,去掉其他的特征。所以这个方法更强大,推荐使用这个。
结果如下:
这两种方法得到的结果一样,对应的特征的P值都小于0.05,没法去掉一些特征
再注:目前python提供的有方差分析,卡方检验的方法,但是一直没有发现T检验的方法。可能是因为T检验其实也算是一种F检验的缘故吧,至于是不是因为这,我也不知道,这只是我猜的!但是用Excel做的时候即使去掉两个不显著的特征,好像对回归结果没有什么大的影响,所有在python中干脆都显著了,
数据分成训练集和测试集,通过在训练集和测试集上的得分对比来判断是否过拟合还是欠拟合,可以直接得到回归系数和截距,如下如:
从结果看,回归方程的拟合度在0.73左右,和用Excel做的差不多,没有提高,反而略微降低了。
绘制交叉验证预测图
从结果看,拟合的并不是很好。
后记:
结合Excel和python做的回归方程拟合度都是在0.74左右,效果只能是一般,看来得换一种方法来做。
我们接下来准备用K近邻回归算法来做预测。
,