python graphics 清空 图_Python数据科学实践 | 统计建模4

6ab908c2dd0b3eca290f0e46383cc03e.gif 995db5befc6a19491240d6b39f4b747d.png a1ba0ee2ce0cc1d60529c2fd5616f237.png 大家好,基于Python的数据科学实践课程又到来了,大家尽情学习吧。本期内容主要由春艳与政委联合推出。

探索分析

通过前面的介绍,相信大家对于如何应用statsmodels拟合统计模型得到参数估计以及进行假设检验已经有了一定的了解。接下来就进入statsmodels第三个功能的介绍——进行探索性数据分析。

statsmodels的数据探索功能主要体现在其可视化上,但其可视化功能并不仅仅只能用于进行数据探索,还可以用于模型结果的测试。在第四章中,本书已经介绍了Python中绘图的探索性数据分析的工具。本节的介绍将会是对上一章的一个补充,特别是对于模型结果的可视化诊断。

764c5763893e0afe268382ccc4993848.gif 1 箱线图 a6a12cca43841e98ebad68c01a5dc528.gif

statsmodels的箱线图主要有两种类型:小提琴图和豆形图。

e072d3ea5e8ff2c15e0749181752ea91.png

这里以西安和郑州两座城市团购的购买人数为例,绘制小提琴图进行相应的数据探索和描述。

例1 绘制小提琴图

import statsmodels.graphics.api as smg

city = ['xa', 'zz']          #创建城市列表

buyer = [np.log(model_data['购买人数'][model_data.城市 == c] + 1) for c in city]                     #生成两座城市购买人数列表

labels = ['xa', 'zz']        #设定标签

fig = plt.figure()           #创建画布

smg.violinplot(buyer, labels = labels)  #绘制小提琴对比图

plt.xlabel("城市")            #设置x轴标签

plt.ylabel("log_购买人数")    #设置y轴标签

plt.title('西安和郑州购买人数的小提琴图对比')    #设置标题

plt.show()                   #输出图像

8050a0c12b27092be67a11f04b77f681.png

图1 绘制小提琴图

通过小提琴图的对比我们可以得到以下的结论:

  • 通常来说,郑州的火锅团购购买人数比西安的更大;

  • 西安火锅团购购买人数相对郑州来说更分散,团购“爆款”更多且“爆款”团购的销量更大;

  • 西安火锅团购购买人数对数化后在2.5-5的区间最为集中,郑州则是在5-7.5最集中。

2 相关图 a6a12cca43841e98ebad68c01a5dc528.gif

通过statsmodels的相关图可以快速直观地探索和描述多个变量之间的相关性。

a4994eedc1890f7beafdec2e233041cd.png

我们以火锅团购的数值变量为例,进行各数值变量之间相关性的探索和描述。

例2  绘制数值变量的相关图

num_cols = ['评分', '评价数', '人均', '购买人数', '团购价']    #定义数值变量所在列

corr_matrix = np.corrcoef(model_data.loc[:, num_cols].T)    #计算数值变量之间的相关系数

smg.plot_corr(corr_matrix, xnames = num_cols)    #绘制数值变量之间的相关图

plt.show()    #输出图像

95fca4defcd6385066aa824b0c318495.png

图2  数值变量相关图

从相关图中可以看出:除了评价数与购买人数之间的相关性略强之外,其他各变量之间的相关性都比较弱。

3 拟合图 a6a12cca43841e98ebad68c01a5dc528.gif

statsmodels可以绘制QQ图来对模型的拟合结果进行诊断。Q-Q图(Q代表分位数)在统计学里是一个概率图,用图形的方式比较两个概率分布,把他们的两个分位数放在一起比较。

QQ图主要用于检验数据分布的相似性。例如利用Q-Q图来对数据进行正态分布的检验,则可以令x轴为正态分布的分位数,y轴为样本分位数。如果这两者构成的点分布在一条直线上,就证明样本数据与正态分布存在线性相关性,即服从正态分布。

c1c134502fc36fe1a268add0c1c6e0f8.png

这里我们可以针对模型的拟合结果,针对模型的残差来进行正态分布的检验,以此来对模型的拟合情况进行评估。

例3  绘制模型拟合参数的QQ图

import scipy.stats as stats

res = results.resid    #获取最小二乘回归拟合模型的残差数据

sm.qqplot(res, stats.t, fit = True, line = '45')    #绘制模型残差的qq图,自动确定t分布的参数,包括均值和标准差

811a5de213fc1e6e0ed55218692f40f3.png

图3  模型残差正态分布检验的QQ图

从图中可以看出:模型残差与正态分布所构成的点几乎除了在两端有些许的异常点之外,几乎都分布在一条直线上,因此认为模型残差通过了正态分布检验,模型满足正态性要求。

4 回归图 a6a12cca43841e98ebad68c01a5dc528.gif

利用回归图可以通过偏差图看到在拟合模型下自变量与因变量之间的关系。

bd8c868bee917220ba0f35217e3d0397.png

这里我们针对前面的最小二乘回归模型,为每个自变量创建一个子图。偏差图中会显示模型中每个变量在去掉其他解释变量的影响后,与对数购买人数的关系。

例4  绘制模型的回归图

fig = plt.figure(figsize=(8, 12))    #设定画布大小

smg.plot_partregress_grid(results_f, fig = fig)    #绘制模型中每个自变量与对数购买人数的回归图

21c8d36812dd4d43ae0478e436bc2776.png

图4  模型回归图

除了以上介绍的四种可视化图形之外,statsmodels还可以提供函数图、时序图、因子水平交互图等多种数据探索以及模型检验的可视化图表,这里就不一一介绍了,如果想要了解更多的话,大家可以去官方文档进行进一步的学习和挖掘。

好了,今天就讲到这里。

▼往期精彩回顾▼初步搭建数据科学工作环境

Conda的使用

Spyder入门

Jupyter入门

Markdown

简单读写数据

数据类型

数据结构

控制流

函数与模块

Numpy

pandas1

pandas2

pandas3

pandas4

绘图模块1

绘图模块2

绘图模块3

绘图模块4

统计建模1

统计建模2

统计建模3

a1317213648a95a4d89e349d3b58d8d8.png

8a22b4610490bd49bd04c3a01f13b2b8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值