回归分析---线性回归原理和Python实现

本文主要运用Python进行简单的线性回归,首先是介绍了线性回归的基本理论,而后是运用一些网络爬虫数据进行回归分析。
  • 1
  • 2

1、线性回归的理论

1)线性回归的基本概念

线性回归是一种有监督的学习算法,它介绍的自变量的和因变量的之间的线性的相关关系,分为一元线性回归和多元的线性回归。一元线性回归是一个自变量和一个因变量间的回归,能够当作是多远线性回归的特例。线性回归能够用来预测和分类,从回归方程能够看出自变量和因变量的相互影响关系。 
线性回归模型以下:html

这里写图片描述

对于线性回归的模型假定以下: 
(1) 偏差项的均值为0,且偏差项与解释变量之间线性无关算法

这里写图片描述

(2) 偏差项是独立同分布的,即每一个偏差项之间相互独立且每一个偏差项的方差是相等的。 
(3) 解释变量之间线性无关 
(4) 正态性假设,即偏差项是服从正态分布的 
以上的假设是创建回归模型的基本条件,因此对于回归结果要进行一一验证,若是不知足假定,就要进行相关的修正。api

2) 模型的参数求解

(1)矩估计 
通常是经过样本矩来估计整体的参数,常见是样本的一阶原点矩来估计整体的均值,二阶中心矩来估计整体的方差。 
(2)最小二乘估计 
通常最小二乘估计是适用于因变量是连续型的变量,最经常使用的是普通最小二乘法( Ordinary Least Square,OLS),它的原理是所选择的回归模型应该使全部观察值的残差平方和达到最小。预测值用 表示,对应的实际值 ,残差平方和 ,最小二乘估计是求得参数的值,使得L最小。对于线性回归求得的参数值是惟一的。 
(3)极大似然估计 
极大似然估计是基于几率的思想,它要求样本的几率分布是已知的,参数估计的值是使得大量样本发生的几率最大,用似然函数来度量,似然函数是各个样本的密度函数的乘积,为方便求解对其求对数,加负号求解极小值,获得参数的估计结果。网络

3)模型的优缺点

优势:结果易于理解,计算上不复杂 
缺点:对于非线性的数据拟合很差函数

2、用Python实现线性回归的小例子

数据来源于网络爬虫,武汉市商品房价格为因变量和几个相关关键词的百度指数的搜索量为自变量。 
因为本文的自变量有98个,首先进行自变量的选择,先是经过相关系数矩阵筛选掉不相关的变量,根据Pearson相关系数矩阵进行变量的选取,通常选取相关系数的值大于0.3的变量进行回归分析,因为本文的变量较多,先进行手动筛选而后利用相关系数进行选取,本文选取相关系数大于0.55的变量进行回归分析。学习

通过相关系数的分析选取8个变量进行下一步的分析,分析的Python代码以下:ui

# -*- coding: utf-8 -*-
#### Required Packages
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import statsmodels.api as sm
data = pd.read_csv('Hdata.csv')
print data
dataset = np.array(data)
######相关性分析
X = dataset[:,1:98]
y = dataset[:,0]
cor = np.corrcoef(dataset,rowvar=0)[:,0]
######输出相关矩阵的第一列
print cor
#######筛选后的数据读取
data1 = pd.read_csv('H1data.csv')
dataset1 = np.array(data)
######筛选后的变量######
X1 = dataset1[:,1:8]
Y1 = dataset1[:,0]
est = sm.OLS(Y1,X1).fit()
print est.summary()
  • 贴出线性回归的结果以下:
OLS RegressionResults                           
=======================================================================
Dep. Variable:                      y   R-squared:                       0.978
Model:                            OLS   Adj. R-squared:                  0.974
Method:                 Least Squares  F-statistic:                    287.5
Date:                Sat, 08 Apr 2017   Prob (F-statistic):           9.35e-36
Time:                        15:15:14   Log-Likelihood:                -442.82
No. Observations:                  53   AIC:                             899.6
Df Residuals:                      46   BIC:                             913.4
Df Model:                           7                                        
Covariance Type:            nonrobust                                         
=======================================================================
                 coef    std err          t     P>|t|      [95.0% Conf. Int.]
-----------------------------------------------------------------------
x1            -0.3691      0.494    -0.747      0.0459        -1.364     0.626
x2             0.3249      0.353     0.920      0.0362        -0.386     1.036
x3             1.0987      0.837     1.312      0.0196        -0.587     2.784
x4             0.7613      0.790     0.964      0.0340        -0.829     2.351
x5            -1.5766      1.099    -1.435      0.0158        -3.789     0.636
x6            -0.1572      1.077    -0.146      0.0885        -2.325     2.011
x7             3.2003      1.603     1.997      0.052        -0.026     6.427
=======================================================================
Omnibus:                        0.413   Durbin-Watson:                   1.748
Prob(Omnibus):                  0.814   Jarque-Bera (JB):                0.100
Skew:                           0.097   Prob(JB):                        0.951
Kurtosis:                       3.089   Cond. No.                         95.5
=======================================================================

从回归分析的结果能够看出来,模型的拟合优度R-squared=0.978,说明模型的拟合效果很好,据其大小对拟合效果的优劣性进行断定。对模型总体的显著性能够经过F统计量来看,结果显示的F统计量对应的P值显著小于0.05(0.05是显著性水平,也能够选取0.01),说明模型总体是显著的,它的显著性说明被解释变量能不能由这些解释变量进行解释,F检验是对总体的检验,F检验的经过不表明每个解释变量是显著的。对每个变量的显著性要看t检验统计量的值,t检验统计量对应的P值小于0.05(0.01或者0.1也行,具体看状况分析,通常选取0.05)视为是显著的,从结果能够看出,X6和X7的变量的p是大于0.05的,也就是这两个变量对被解释变量的影响是不显著的要剔除。可是若是你只是关心预测的问题那么能够不剔除。可是若是有研究解释变量对被解释变量的影响的程度的,要作进一步的研究。接下来看DW的值,DW的值为1.748,说明模型不存在自相关性。看JB检验统计量的值,JB检验统计量是对正态性的假设进行检验的,JB的值对应的p值为0.951显著大于0.05,能够认为模型知足正态性的假设的。对于参数的实际意义本文就不作解释了。 
对于DW值判断相关性的依据以下: 
 DW=0时,残差序列存在彻底正自相关, 
  DW=(0,2)时,残差序列存在正自相关, 
  DW=2时,残差序列无自相关, 
  DW=(2,4)时,残差序列存在负自相关, 
  DW=4时,残差序列存在彻底负自相关。 
对于创建模型的通常步骤简单描述以下: 
(1) 根据数据的表现形式选取合适的模型 
(2) 对选取的模型选取适用的参数估计方法 
(3) 对参数的结果进行检验 
(4) 对结果进行解释spa

参考

相关分析 
https://sanwen8.cn/p/3cbCi2d.htmlcode

相关文章
相关标签/搜索