热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

常用统计学回归模型应用场景与python实现方法

常用统计学回归模型应用场景与python实现方法在信息管理、数据科学或fintech等研究中,有时会遇到统计学回归模型,那么这些基本统计回归模型的使用场景是什么?该如何用python快捷的实现统计回归
常用统计学回归模型应用场景与python实现方法

在信息管理、数据科学或fintech等研究中,有时会遇到统计学回归模型,那么这些基本统计回归模型的使用场景是什么?该如何用python快捷的实现统计回归呢?本文从数据类型出发对统计回归模型进行了分类整理,并基于python的statsmodel库(类R语言),给出了这些模型的一种实现方案。

一、理清数据类型:横截面数据、时间序列数据、分层数据or面板数据 为了下文表达清晰,构造一张经典表如下:
Table 1 2000 2001 2002 2000 2001 2002 2000 2001 2002
北京 9 10 11 12 13 14 15 16 17
上海 8 9 10 11 12 13 14 15 16
天津 5 6 7 8 9 10 11 12 13
  • 横截面数据:同一时间,不同统计单位相同统计指标组成的数据列,按照统计单位排列。如:
Table 2 2000
北京 9
上海 8
天津 5
  • 时间序列数据:某事物、现象随时间的变化状态,即它在不同时间点的数据。如:
Table 3 2000 2001 2002 2000 2001
北京 9 10 11 12 13
  • 分层数据: 不仅有描述个体的变量,而且有个人组成的更高一层的变量(可以包括若干层具有层次结构的变量)。如Table 4:
2000 2001 2002 2000
北京 海淀 2 3 4 5
北京 朝阳 1 2 3 4
  • 面板数据: 由截面数据和时间序列数据综合而来的数据类型。如Table 1所示。

二、明确因变量类型:连续变量、计数变量、分类变量
  • 连续变量:数值是连续不断的
  • 计数变量:变量值只能取非负整数{0,1,2,3,...}。这个变量来自计数(count)而非排名。
  • 分类变量:变量值是定性的,表现为互不相容的类别或属性。如类别1、属性2。分为无需变量和有序变量两类。

三、选择统计回归模型:

四、常用回归模型的python实现:
  • 使用http://www.scipy-lectures.org/_downloads/brain_size.csv脑容量数据举例,样例如下:
  • 1、利用pandas读取数据并保存成dataframe:

import pandasdata = pandas.read_csv('brain_size.csv', sep=';', na_values=".")
  • 2、利用线性模型比较男女IQ值(其中类别"Gender"被自动识别为分类变量)

model = ols("VIQ ~ Gender + 1", data).fit()
print(model.summary())


 OLS Regression Results                           ==============================================================================Dep. Variable:                    VIQ   R-squared:                       0.015Model:                            OLS   Adj. R-squared:                 -0.010Method:                 Least Squares   F-statistic:                    0.5969Date:                Tue, 09 May 2017   Prob (F-statistic):              0.445Time:                        17:45:59   Log-Likelihood:                -182.42No. Observations:                  40   AIC:                             368.8Df Residuals:                      38   BIC:                             372.2Df Model:                           1                                         Covariance Type:            nonrobust                                         ==================================================================================                     coef    std err          t      P>|t|      [0.025      0.975]----------------------------------------------------------------------------------Intercept        109.4500      5.308     20.619      0.000      98.704     120.196Gender[T.Male]     5.8000      7.507      0.773      0.445      -9.397      20.997==============================================================================Omnibus:                       26.188   Durbin-Watson:                   1.709Prob(Omnibus):                  0.000   Jarque-Bera (JB):                3.703Skew:                           0.010   Prob(JB):                        0.157Kurtosis:                       1.510   Cond. No.                         2.62==============================================================================
  • 3、线性多元回归模型探究体重、身高、性别对IQ值(连续值)的影响

model = ols('VIQ ~ Gender + Weight + Height', data).fit()print(model.summary())
 OLS Regression Results                           ==============================================================================Dep. Variable:                    VIQ   R-squared:                       0.108Model:                            OLS   Adj. R-squared:                  0.029Method:                 Least Squares   F-statistic:                     1.369Date:                Tue, 09 May 2017   Prob (F-statistic):              0.269Time:                        17:52:24   Log-Likelihood:                -170.29No. Observations:                  38   AIC:                             348.6Df Residuals:                      34   BIC:                             355.1Df Model:                           3                                         Covariance Type:            nonrobust                                         ==================================================================================                     coef    std err          t      P>|t|      [0.025      0.975]----------------------------------------------------------------------------------Intercept        261.8374     88.157      2.970      0.005      82.680     440.995Gender[T.Male]    20.4303     10.822      1.888      0.068      -1.562      42.423Weight            -0.1012      0.230     -0.441      0.662      -0.568       0.366Height            -2.1059      1.490     -1.414      0.167      -5.134       0.922==============================================================================Omnibus:                        7.582   Durbin-Watson:                   2.159Prob(Omnibus):                  0.023   Jarque-Bera (JB):                2.540Skew:                          -0.231   Prob(JB):                        0.281Kurtosis:                       1.820   Cond. No.                     4.03e+03==============================================================================
  • 4、利用medpar数据集进行负二项式回归例子(因变量为计数变量)
数据样例: los  hmo  white  died  age80  type  type1  type2  type3  provnum 0    4    0      1     0      0     1      1      0      0    30001 1    9    1      1     0      0     1      1      0      0    30001 2    3    1      1     1      1     1      1      0      0    30001 3    9    0      1     0      0     1      1      0      0    30001 4    1    0      1     1      1     1      1      0      0    30001
#example for Negative Binomial Regression for Count Datamedpar = sm.datasets.get_rdataset("medpar", "COUNT", cache=True).data

y = medpar.losX = medpar[["type2", "type3", "hmo", "white"]].copy()X["constant"] = 1
res_nbin = NegativeBinomial(y, X).fit(disp=0)print(res_nbin.summary())


 NegativeBinomial Regression Results                     ==============================================================================Dep. Variable:                    los   No. Observations:                 1495Model:               NegativeBinomial   Df Residuals:                     1490Method:                           MLE   Df Model:                            4Date:                Tue, 09 May 2017   Pseudo R-squ.:                 0.01215Time:                        18:13:53   Log-Likelihood:                -4797.5converged:                       True   LL-Null:                       -4856.5                                        LLR p-value:                 1.404e-24==============================================================================                 coef    std err          z      P>|z|      [0.025      0.975]------------------------------------------------------------------------------type2          0.2212      0.051      4.373      0.000       0.122       0.320type3          0.7062      0.076      9.276      0.000       0.557       0.855hmo           -0.0680      0.053     -1.277      0.202      -0.172       0.036white         -0.1291      0.069     -1.883      0.060      -0.263       0.005constant       2.3103      0.068     34.001      0.000       2.177       2.443alpha          0.4458      0.020     22.495      0.000       0.407       0.485==============================================================================
  • 5、利用medpar数据集进行Poisson回归例子

#poisson regression modelpoisson = Poisson(y, X).fit()print(poisson.summary())
Optimization terminated successfully.         Current function value: 4.634721         Iterations 21                          Poisson Regression Results                         ==============================================================================Dep. Variable:                    los   No. Observations:                 1495Model:                        Poisson   Df Residuals:                     1490Method:                           MLE   Df Model:                            4Date:                Tue, 09 May 2017   Pseudo R-squ.:                 0.05189Time:                        18:21:46   Log-Likelihood:                -6928.9converged:                       True   LL-Null:                       -7308.1                                        LLR p-value:                7.600e-163==============================================================================                 coef    std err          z      P>|z|      [0.025      0.975]------------------------------------------------------------------------------type2          0.2217      0.021     10.529      0.000       0.180       0.263type3          0.7095      0.026     27.146      0.000       0.658       0.761hmo           -0.0715      0.024     -2.988      0.003      -0.118      -0.025white         -0.1539      0.027     -5.613      0.000      -0.208      -0.100constant       2.3329      0.027     85.744      0.000       2.280       2.386==============================================================================

更多模型,可自行参考python statsmodels doc:http://www.statsmodels.org/stable/。
参考:
  1. 常用回归模型:https://wenku.baidu.com/view/1b124799daef5ef7ba0d3cee.html
  2. http://www.scipy-lectures.org/packages/statistics/index.html
  3. http://www.statsmodels.org/stable/
  4. python中的统计学:https://wizardforcel.gitbooks.io/scipy-lecture-notes/content/14.html

推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • DSP中cmd文件的命令文件组成及其作用
    本文介绍了DSP中cmd文件的命令文件的组成和作用,包括链接器配置文件的存放链接器配置信息、命令文件的组成、MEMORY和SECTIONS两个伪指令的使用、CMD分配ROM和RAM空间的目的以及MEMORY指定芯片的ROM和RAM大小和划分区间的方法。同时强调了根据不同芯片进行修改的必要性,以适应不同芯片的存储用户程序的需求。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 在编写业务代码时,常常会遇到复杂的业务逻辑导致代码冗长混乱的情况。为了解决这个问题,可以利用中间件模式来简化代码逻辑。中间件模式可以帮助我们更好地设计架构和代码,提高代码质量。本文介绍了中间件模式的基本概念和用法。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Python中sys模块的功能及用法详解
    本文详细介绍了Python中sys模块的功能及用法,包括对解释器参数和功能的访问、命令行参数列表、字节顺序指示符、编译模块名称等。同时还介绍了sys模块中的新功能和call_tracing函数的用法。推荐学习《Python教程》以深入了解。 ... [详细]
author-avatar
金色阳光CC
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有