首页
学习
活动
专区
工具
TVP
发布

项目日销售额线性回归

【上一篇:

数据预测简介

线性关系(例如:正比和反比)是实际工作中最容易理解也是实用性很强的一类关系,也是解释性预测的基础。因此,这里从研究线性关系着手,通过项目客流量、节假日等变量的加入,拟合和研究项目销售额。

我们的基础数据是某个项目2017年全年各日的销售额(单位:万元)和客流量(单位:万人次),并且销售额、客流量都和相应的日期逐一对应,很明显这是一个时间序列,在数据集里我们一共有365组这样的数据组合。随机取出10组数据样本(时间是打乱的),它们是这样的:

【表1. 原始数据示例】

数据分析的编程基于Python3.6环境,采用jupyter notebook在线编译器,并导入相关的扩展模块来实现相关的数据处理功能,例如,使用pandas或者excel对数据进行预处理,使用sklearn以及statsmodels来做数据建模和分析,使用seaborn或者matplotlib做图形可视化输出。由于,我们更关注的是销售额这一商业现象背后的影响因素及规律,而非数学方法、统计理论或编程技术,因此文中不会过多的展开理论知识和编程技术,但会尽量用通俗的语言进行解释。但由于受到限制,文中无法加入超链接,如果需要还请自行搜索相关内容参考阅读。

1

日销售额的简单线性回归

简单线性回归即一元线性回归,也就是只考虑一个因素对项目日销售额的影响,并用线性方程来拟合它们之间的关系。我们最容易想到的当然是客流量对销售额的影响很大,甚至凭经验就可以判断它们之间成正比关系。

首先,不妨先把日销售额和日客流量用图画出来(pandas.Series.plot方法):

【图1. 日销售额(上图)和日客流量(下图)时间序列】

上面一张图显示销售额随时间的变化,下面一张显示每天的客流量。即便粗略的看一下,我们也能发现这两张图很类似:客流量上升销售额也上升,客流量下降销售额也下降。

为了印证销售额和客流量之间是不是线性关系,我们计算出两者之间的相关系数(pandas.Series.corr方法)为0.71,则意味着两者之间纯在着较高的线性关系。接着,不妨并作出散点图(seaborn.regplot方法),可以更为直观地观察到这个线性关系。

【图2. 日销售额-日客流量散点图及线性回归】

上面的散点图不仅罗列出365个“销售额-客流量”数据点,同时也自动画出了他们之间的直线关系以及95%的置信区间。那么,这条直线到底该如何表示呢?利用sklearn.linear_model建立的线性方程如下:

Sales = 71.03 * Passengers + 77.54

上式的方程则是对日销售额的简单线性回归模型。倘若有某个时间点的客流量数据,便可以通过上式求出这个时间点的销售额。当然,必须要注意的是,通过线性方程求出来的值并不是真正的销售额,而只是通过这样一个线性关系拟合(fitting)或者估计(estimating)出的销售额,很显然它和真正的销售额数据(raw value)是有出入的,这个“出入”即构成了所谓的误差。计算这条直线最经典最简便的方法是“最小二乘法”,通俗的讲:有了实际销售额,我们使用一条直线拟合它,并且要求将实际值和拟合值的差值的平方和降低到最少,那么所对应的直线就是最优的拟合直线。

通过这样的简单线性回归拟合出来的销售额和实际销售额的对比如下图:

【图3. 简单线性回归得到的销售额与实际销售额对比】

灰色的线是2017年实际的日销售数据,蓝色的线是通过建模并根据实际的日客流量得到的销售额拟合值。可以观察的出,拟合的效果并不好,尤其出现在呈现峰值的时间点。凭借着行业经验,我们不妨猜想是由于遗漏掉了其他的关联因素而导致了数据拟合的失真(如何判别是否遗漏有用的信息,会在后续提到),所以,有必要加入更多的变量来提高线性回归的精度。那么,日销售额不仅由日客流量决定,它还取决于其他的因素,这就需要用到多元线性回归的方法。

最后,以上的所有步骤其实无需编程,通过我们常用的excel函数和图表就可以实现,有兴趣不妨试一下?

To be continued.

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180718G18NJD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券