广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何用Python进行回归分析与相关分析
  • 636
分享到

如何用Python进行回归分析与相关分析

pythonpython回归分析python相关分析 2023-03-22 17:03:57 636人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、前言1.1 回归分析1.2 相关分析二、代码的编写2.1 前期准备2.2 编写代码2.2.1 相关分析 2.2.2 一元线性回归分析 2.2.3 多元线性

一、前言

1.1 回归分析

是用于研究分析某一变量受其他变量影响的分析方法,其基本思想是以被影响变量为因变量,以影响变量为自变量,研究因变量与自变量之间的因果关系。

1.2 相关分析

不考虑变量之间的因果关系而只研究变量之间的相关关系的一种统计方法。

二、代码的编写

2.1 前期准备

在编写代码之前,我们首先要知道需要用到的库有哪些。分别为:pandas\numpy\statsmodels\patsy。如果没有安装这些库是无法运行代码的 ,因此需要提前安装好这几个库。安装方法我在基础篇的第一章已经写有,可以进行参考:如何在python中导入excel数据

然后便可以导入库和所要处理的数据了。

import pandas as pd
import numpy as np
import statsmodels.api as sm
from patsy import dmatrices
data=pd.read_excel(r'D:\杂货\编码数据.xlsx',sheet_name='编码数据')

展示以下我所导入的数据的样式:

 我准备的excel表格的数据比较多,在Python中输出出来大概就是这个样子,至于这些数字是什么含义不用过多理会,这并不影响本篇方法的介绍。

2.2 编写代码

2.2.1 相关分析

首先介绍最简单的一个数据指标:相关系数

代码如下:

v=data['Q1'].corr(data['Q2'])#相关系数(求某两个变量的相关系数)
print(v)
v=data.corr()#求所有变量之间的相关系数
print(v)

前者是指定求某两个变量间的相关系数,而后者是直接接计算出所有变量的相关系数。

输出结果如下:

前者:

 后者:

 2.2.2 一元线性回归分析

代码如下:

x=np.array(data['Q1'])#一元线性回归分析
y=np.array(data['Q2'])
X=sm.add_constant(x)#向x左侧添加截距列x0=[1,……,1]
model=sm.OLS(y,X)#建立最小二乘估计
fit=model.fit()#拟合模型
print(fit.summary())

该方法是通过矩阵的形式进行运算的,首先将要输入的数据x,y转换为矩阵的形式,然后再给自变量x增加一列截距列,形成X矩阵,再进行最小二乘估计,然后拟合结果。

矩阵形式:Y=X\beta

 输出结果如下:

 2.2.3 多元线性回归分析

vars=['Q1','Q2','Q6','Q7']#多元线性回归分析
df=data[vars]#将输入的数据转换为矩阵(数组)形式
y,X=dmatrices('Q1~Q2+Q6+Q7',data=df,return_type='dataframe')
model=sm.OLS(y,X)
fit=model.fit()
print(fit.summary())

 多元的代码的编写形式与一元的编写形式实质上差别不大,不同的地方在于第三行代码,其形式为 y,X=dmatrices('Q1~Q2+Q6+Q7',data=df,return_type='dataframe'),而该行代码的形式也是固定的,括号中的'Q1~Q2+Q6+Q7'这部分可根据个人想要模拟的方程形式编写,Q1为因变量,Q2,Q6,Q7……等部分为自变量,个数不限;data=df部分是将转换好的矩阵(数组)赋值给data;而return_type='dataframe'部分可以直接使用,一般不需要更改。

model=sm.OLS(y,X)进行最小二乘估计,fit=model.fit()进行模型的拟合,最后输出的fit.summary()即我们所需要的表格。

输出结果如下:

 补充:

在此附上关于多元回归模型的一些内容,可帮助理解矩阵形式的回归模型。(摘自:《计量经济学基础》张晓峒)

2.2.4 广义线性回归分析

广义的线性回归分析包括四种模型,分别为:正态分布拟合;二项分布拟合;泊松分布拟合;伽马分布拟合。

本人常用二项分布,因此本篇以二项分布为例进行介绍。

代码如下:

vars2=['Q1','Q2']#广义线性回归分析
vars1=['Q6','Q7','Q8','Q9']
glm_binom=sm.GLM(data[vars2],data[vars1],family=sm.families.Binomial())
res=glm_binom.fit()
print(res.summary())

需要注意的是:若在广义线性回归分析中的vars2的数据换成0-1形式的,则其结果与logistic回归分析的结果一致,即可以说0-1形式的因变量的广义线性回归为逻辑回归。

输出结果如下:

 2.2.5 logistic回归分析

代码如下:

vars1=['Q6','Q7','Q8','Q9']
logit_mod=sm.Logit(data['Q13|3'],data[vars1])#logistic回归分析,注意:data['Q13|3']的位置里的数据必须是0-1形式!!!
logit_res=logit_mod.fit(disp=0)
print(logit_res.summary())

logistic回归的代码的编写形式与前面几个回归差别不大,理解起来不难,就不再重复讲述。但需要注意的是,在使用逻辑回归时,sm.Logit(data['Q13|3'],data[vars1])中的data['Q13|3']的数据必须为0-1形式,亦可说必须为虚拟变量的形式,否则程序会报错。这是逻辑回归本身的含义,具体可自行查找逻辑回归的资料学习

输出结果如下:

 三、代码集合

import pandas as pd
import numpy as np
import statsmodels.api as sm
from patsy import dmatrices
data=pd.read_excel(r'D:\杂货\编码数据.xlsx',sheet_name='编码数据')
pd.set_option('display.max_columns',1000)
pd.set_option("display.width",1000)
pd.set_option('display.max_colwidth',1000)
pd.set_option('display.max_rows',1000)
print(data)
 
v=data['Q1'].corr(data['Q2'])#相关系数
print(v)
 
x=np.array(data['Q1'])#一元线性回归分析
y=np.array(data['Q2'])
X=sm.add_constant(x)#向x左侧添加截距列x0=[1,……,1]
model=sm.OLS(y,X)#建立最小二乘估计
fit=model.fit()#拟合模型
print(fit.summary())
 
vars=['Q1','Q2','Q6','Q7']#多元线性回归分析
df=data[vars]
y,X=dmatrices('Q1~Q2+Q6+Q7',data=df,return_type='dataframe')
model=sm.OLS(y,X)
fit=model.fit()
print(fit.summary())
 
vars2=['Q1','Q2']#广义线性回归分析
vars1=['Q6','Q7','Q8','Q9']
glm_binom=sm.GLM(data[vars2],data[vars1],family=sm.families.Binomial())
res=glm_binom.fit()
print(res.summary())
 
logit_mod=sm.Logit(data['Q13|3'],data[vars1])#logistic回归分析,注意:data['Q13|3']的位置里的数据必须是0-1形式!!!
logit_res=logit_mod.fit(disp=0)
print(logit_res.summary())
#若在广义线性回归分析中的vars2的数据换成0-1形式的,则其结果与logistic回归分析的结果一致。

到此这篇关于如何用Python进行回归分析与相关分析的文章就介绍到这了,更多相关python 数据分析 回归 数据挖掘内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 如何用Python进行回归分析与相关分析

本文链接: https://www.lsjlt.com/news/200936.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何用Python进行回归分析与相关分析
    目录一、前言1.1 回归分析1.2 相关分析二、代码的编写2.1 前期准备2.2 编写代码2.2.1 相关分析 2.2.2 一元线性回归分析 2.2.3 多元线性...
    99+
    2023-03-22
    python python回归分析 python相关分析
  • 使用Python进行数据分析——线性回归分析
    大家好,线性回归是确定两种或两种以上变量之间互相依赖的定量关系的一种统计分析方法。根据自变量的个数,可以将线性回归分为一元线性回归和多元线性回归分析。 一元线性回归:就是只包含一个自变量,且该自变量与因变量之间的关系是线性关系。例如通过广...
    99+
    2023-10-04
    python 数据分析 Powered by 金山文档
  • 怎样用Python进行相关性分析
    今天就跟大家聊聊有关怎样用Python进行相关性分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.相关和因果是一回事吗相关性不等于因果。用x1和x2作为两个变量进行解释,相关意味...
    99+
    2023-06-16
  • 如何用Python对数据进行相关性分析
    这期内容当中小编将会给大家带来有关如何用Python对数据进行相关性分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在进行数据分析时,我们所用到的数据往往都不是一维的,而这些数据在分析时难度就增加了不少...
    99+
    2023-06-16
  • 使用SPSS进行相关性分析的相关步骤
    ...
    99+
    2016-11-12
    使用SPSS进行相关性分析的相关步骤
  • Netty分布式Future与Promise执行回调相关逻辑剖析
    目录Future和Promise执行回调首先我们看一段写在handler中的业务代码这里关注newPromise()方法, 跟进去我们继续跟write方法跟进tryFailure方法...
    99+
    2022-11-13
  • 如何进行Ruby线程相关知识点分析
    这期内容当中小编将会给大家带来有关如何进行Ruby线程相关知识点分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Ruby语言一款完全面向对象的解释型脚本语言。对于这样的一款新型编程语言,其特性对于程序员...
    99+
    2023-06-17
  • 如何分析python字符串相关str
    今天给大家介绍一下如何分析python字符串相关str。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。1:访str单个字符#for循环迭代name =...
    99+
    2023-06-26
  • python进行相关性分析并绘制散点图详解
    目录 需要用到的库数据读取总结近期,有小伙伴问我关于怎么使用python进行散点图的绘制,这个东西很简单,但是怎么讲相关性的值标注在图形上略显麻烦,因此,在这里记录一下,将...
    99+
    2022-11-12
  • 如何解析Python源码分析的相关操作步骤
    今天就跟大家聊聊有关如何解析Python源码分析的相关操作步骤,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python是一种动态的脚本语言。具体的我就不多介绍了,源代码链接在这里:...
    99+
    2023-06-17
  • 详解Python进行数据相关性分析的三种方式
    目录相关性实现NumPy 相关性计算SciPy 相关性计算Pandas 相关性计算线性相关实现线性回归:SciPy 实现等级相关排名:SciPy 实现等级相关性:NumPy 和 Sc...
    99+
    2022-11-10
  • 如何用python进行数据分析
    Python是一个非常强大的数据分析工具,它提供了丰富的库和函数来处理、分析、可视化数据,并在各个领域得到了广泛应用。本文将介绍如何使用Python进行数据分析。以下按照流程简述如下: 数据预处理 数据预处理通常是数据分析的第一步,这个过程...
    99+
    2023-09-08
    信息可视化
  • 用Python进行简单的文本相似度分析
    学习目标: 利用gensim包分析文档相似度 使用jieba进行中文分词 了解TF-IDF模型 环境: Python 3.6.0 |Anaconda 4.3.1 (64-bit) 工具: jupyter notebook 注:...
    99+
    2023-01-31
    文本 简单 Python
  • python如何使用cProfile针对回测进行性能分析
    这篇文章主要讲解了“python如何使用cProfile针对回测进行性能分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python如何使用cProfile针对回测进行性能分析”吧!安装不...
    99+
    2023-06-02
  • 如何进行null与index的分析
    这期内容当中小编将会给大家带来有关如何进行null与index的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 今天在测试过程中遇到一问...
    99+
    2022-10-19
  • 如何进行HttpHandler与HttpModule的分析与应用
    这篇文章将为大家详细讲解有关如何进行HttpHandler与HttpModule的分析与应用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。神秘的HttpHandler与HttpModule大...
    99+
    2023-06-17
  • Python进行数据相关性分析的三种方式是什么
    本文小编为大家详细介绍“Python进行数据相关性分析的三种方式是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python进行数据相关性分析的三种方式是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。相...
    99+
    2023-06-30
  • 如何进行SQLite数据库管理相关命令的使用分析
    这篇文章将为大家详细讲解有关如何进行SQLite数据库管理相关命令的使用分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  1.创建数据库  启动命令行,...
    99+
    2022-10-19
  • 如何进行C#递归算法理解的分析
    如何进行C#递归算法理解的分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#递归算法的理解并不是紧紧感觉很好用,那么C#递归算法的使用是要用递归的思路去解决...
    99+
    2023-06-17
  • 如何使用Python对NetCDF数据做空间相关分析
    引言:我一直想理解空间相关分析的计算思维,于是今天又拿起Python脚本和数据来做练习。首先需要说明的是,这次实验的数据和Python脚本均来自于[好久不见]大佬,在跟大佬说明之后,...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作