Python社区  »  Python

使用python进行回归分析

计量经济学服务中心 • 5 天前 • 2 次点击  

来源:综合整理自《高级计量经济学及Python应用》系列课程讲义

相关基础操作请回顾《零基础学Python》课程



1
简介

“回归”(Regression)一词最初是由英国生物学家兼统计学家F.Galton(F·高尔顿)在一篇著名的遗传学论文中引入的(1877年)。他在研究中发现,具有较高身躯的双亲,或具有较矮身躯的双亲尔,其子女的身高表现为退回(即回归)到人的平均身高趋势。这一回归定律后来被统计学家K·Pearson通过上千个家庭成员身高的实际调查数据进一步得到证实,从而产生了“回归”这一名称。


然而,现代意义上的“回归”比其原始含义要广得多。一般来说,现代意义上的回归分析是研究一个变量(也称为explained variable或因变量dependent variable)对另一个或多个变量(也称为解释变量explanatory variable或自变量independent variable )的依赖关系,其目的在于通过解释变量的给定值来预测被解释变量的平均值或某个特定值。


具体而言,回归分析所要解决的问题主要有:


(1)确定因变量与自变量之间的回归模型,并依据样本观测值对回归模型中的参数进行估计,给出回归方程。

(2)对回归方程中的参数和方程本身进行显著性检验。

(3)评价自变量对因变量的贡献并对其重要性进行判别。

(4)利用所求得的回归方程,并根据自变量的给定值对因变量进行预测,对自变量进行控制。


回归分析的对数据的要求


要进行回归分析,对数据是有一定的要求的,有学者提出了,在应用多元回归时,所分析的数据必须符合以下基本假定:

(1)正态性假定

(2)因变量的各个观察值之间必须是相互独立的。

(3)各个自变量之间不能有多元共线性关系,也就是说各个自变量彼此之间不能有较高的相关(相关系数大于0.700)。

(4)线性关系

(5)各个残差之间相互独立假定

(6)残差的等分散性假定

 

回归分析的基本步骤

具体地说,回归分析的一般过程分成四步,分别是:

(1)提出回归模型的假设

(2)获取数据

(3)建立回归方程

(4)回归方程的检验

 

一元线性回归分析


(1) 一元线性回归的基本概念

当只探究一个自变量和一个因变量之间的数学关系,同时两变量之间为线性关系时,所建立的回归模型为一元线性回归模型,可用如下公式表示:

Y = bX+a

 

多元线性回归分析


自然界的万事万物都是相互联系和关联的,所以一个因变量往往同时受到很多个自变量的影响。

多元线性回归的基本概念

多元回归模型是指含有两个或者两个以上的自变量的线性回归模型,用于揭示因变量与多个自变量之间的线性关系。

多元回归的方程式为:Y=b0+b1X1+b2X2+…biXi


2
基本操作

1、导入相关库
#导入相关库import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import r2_scoreimport statsmodels.api as sm
2、导入数据
df=pd.read_excel(r'C:\Users\admin\Desktop\data\auto.xls' )df.head()


3、变量描述统计分析


# df.shape
# df.info()
df.describe()



4、相关分析

#  2.1 两两变量之间相关分析df['rep78'].corr(df['mpg'])
# 2.2 多个变量之间相关分析corr=df[['price','mpg','rep78']].corr() corr


5、回归分析


首先导入简单线性回归的求解类LinearRegression ,然后使用该类进行建模,得到lrModel的模型变量


# 应用sklearn工具做一元线性回归分析from sklearn import linear_modelols=linear_model.LinearRegression()
# 并对模型进行拟合ols.fit(x,y)


3
总结

基本操作
# 总结建模流程 # 建立模型ols=linear_model.LinearRegression()
# 训练模型ols.fit(x,y)
# 模型评估ols.score(x,y) # 模型预测ols.predict(x)



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/63182
 
2 次点击  
分享到微博