一、摘要
本文主要以商场会计统计的“销售数据”为例,对其进行数据预览与预处理,然后利用线性回归分析的流程与方法,使用Python3软件与SPSS25.0软件分析超市销售收入与各变量之间的关系,并以此份数据为依据使用线性回归建立预测模型,然后利用线性回归相关理论知识,对模型进行优化与检验调整。
分析过程思维导图:

文章最后将指出过程中存在的一些问题与个人思考的优化方式。
附录部分将附上数据集链接与Python部分的代码。
文章分析数据基于kaggle数据网站上的“美国商店销售数据集”,使用的数据分析软件主要为Python 3与SPSS 25.0,参考书籍主要为《应用回归分析(第五版)》———中国人民大学出版社。
二、实例分析与建模预测
1.分析目标:
本文数据分析目标主要有两个。
第一,利用会计统计数据建模预测各变量对Sales(销售收入)的影响;
第二,对比实践几种回归方法,感受线性回归模型的建立优化与检验过程。
2.数据预览:
(1)变量标签:
| 变量 | 标签 |
|---|---|
| AreaCode | 商店编号 |
| State | 商店所在州 |
| Market | 所在方位 |
| MarketSize | 规模大小 |
| Profit | 净利润 |
| *Margin | 毛利润=Sales-GOGS=Profit+TotalExpenses |
| Sales | 销售收入 |
| GOGS | 销售成本 |
| TotalExpenses | 销售产品的总费用 |
| Marketing | 营销费用 |
| Inventory | 销售时刻的库存价值 |
| BudgetProfit | 预算净利润 |
| BudgetCOGS | 预算销售成本 |
| BudgetMargin | 预算毛利润 |
| BudgetSales | 预算销售收入 |
| ProductId | 产品编号 |
| Date | 日期 |
| ProductType | 产品类型 |
| Product | 产品名称 |
| Type | 产品种类 |
*注:此处简单介绍毛利润Margin与净利润Profit的区别,毛利润一般指销售收入与销售成本的差额,而净利润则指代销售收入在减去毛利润后,同时减去税费等各种杂费后的额度。
(2)数据预处理:
a.实际意义:
首先ProductId为产品编号,与产品名称效用重合,故删除ProductId。
考虑到Margin=Sales-GOGS=Profit+TotalExpenses的线性关系,删除Margin和Profit。
Date变量为日期,对Sales预测缺少实际有效信息,删除。
最后,因为BudgetMargin=BudgetSales-BudgetGOGS的等量关系,同时考虑到我们预测Sales,故删除特征中的BudgetSales(预算销售收入)。
b.检查缺失值:
经检查不存在缺失值。
c.描述性统计:
数值型:
| Area Code | Sales | COGS | Total Expenses | Marketing | Inventory | Budget Profit | Budget COGS | Budget Margin | |
|---|---|---|---|---|---|---|---|---|---|
| count | 4248.000000 | 4248.000000 | 4248.000000 | 4248.000000 | 4248.000000 | 4248.000000 | 4248.000000 | 4248.000000 | 4248.000000 |
| mean | 582.278013 | 192.987524 | 84.433145 | 54.063559 | 31.185028 | 749.381356 | 60.913371 | 74.830508 | 100.819209 |
| std | 221.140310 | 151.133127 | 67.249769 | 32.352598 | 27.023264 | 661.031896 | 79.546123 | 66.238145 | 92.602725 |
| min | 203.000000 | 17.000000 | 0.000000 | 10.000000 | 0.000000 | -3534.000000 | -320.000000 | 0.000000 | -210.000000 |
| 25% | 417.000000 | 100.000000 | 43.000000 | 33.000000 | 13.000000 | 432.000000 | 20.000000 | 30.000000 | 50.000000 |
| 50% | 573.000000 | 138.000000 | 60.000000 | 46.000000 | 22.000000 | 619.000000 | 40.000000 | 50.000000 | 70.000000 |
| 75% | 772.000000 | 230.000000 | 100.000000 | 65.000000 | 39.000000 | 910.500000 | 80.000000 | 90.000000 | 130.000000 |
| max | 985.000000 | 912.000000 | 364.000000 | 190.000000 | 156.000000 | 8252.000000 | 560.000000 | 450.000000 | 690.000000 |
观察发现,此处库存价值Inventory存在负数,经过网上资料查询,此变量仅在会计人员出现失误时,会被计算为负数,为异常情况,我们假设不存在这样的特殊人为失误,故将Inventory的负数部分全部转换为0.
分类型:
| State | Market | Market Size | Product Type | Product | Type | |
|---|---|---|---|---|---|---|
| count | 4248 | 4248 | 4248 | 4248 | 4248 | 4248 |
| unique | 20 | 4 | 2 | 4 | 13 | 2 |
| top | Utah | West | Small Market | Espresso | Columbian | Regular |
| freq | 288 | 1344 | 2544 | 1176 | 480 | 2400 |
d.查看数据间person相关性与散点图:
在将分类变量重新编码(按字母先后顺序)后,得到相关性矩阵热图如下:

一方面比较各个变量与sales的相关性,我们发现Market、Product Type、Product、Type四个变量与Sales变量相关性较低。另一方面观察各变量间关系,由于中间存在大片绿色部分,所以其他变量间或多或少存在线性相关性,于是可能有多重共线性问题的存在。
散点图:

通过散点图,同样能发现诸多分类变量如Market、Product、Product Type、Type等均相对于Sales分布均匀,没有特别明显的正负相关关系。
e.前进法、后退法与步进法筛选变量:
前进法:

后退法:

步进法:
设置aentry=0.05,aremoval=0.1a_{entry}=0.05,a_{removal}=0.1aentry=0.05,aremoval=0.1,得到变量表:

综合上述三种方法,均选择删除了Budget Profit(预算净利润)与Area Code(地区编号)。
综合上述可视化图像和三种变量筛选方法,并考虑到变量的实际意义,我们删除Area Code、Budget Profit、Product Type。最后本次建模选取的特征有:
| 变量 | 标签 |
|---|---|
| State | 商店所在州 |
| Market | 所在方位 |
| MarketSize | 规模大小 |
| GOGS | 销售成本 |
| TotalExpenses | 销售产品的总费用 |
| Marketing | 营销费用 |
| Inventory | 销售时刻的库存价值 |
| BudgetCOGS | 预算销售成本 |
| BudgetMargin | 预算毛利润 |
| Product | 产品名称 |
| Type | 产品种类 |
3.建模分析与优化检验:
(1)普通最小二乘法回归:

调整后R方为0.986,说明线性拟合度很高。

方差分析中显著性为0,表明回归方程显著。

普通最小二乘法得到回归方程。
首先考察系数的显著性,在0.05的置信度下,所有变量的系数均显著
接下来考察与实际经济意义是否符合,其中COGS(销售成本)标准化系数为0.874>0,而BudgetCOGS(预算销售成本)标准化系数为-0.402<0,两个同性质变量却对Sales影响不同,也就是说,营业人在预算准备投入更多销售成本后,销售收入却会变低,这是违反直觉的。
最后由方差因子分析,存在四个变量的VIF>10。同时由共线性诊断:

条件指标最后为30.732,显然大于10,说明存在较强的多重共线性。
考虑到存在多重共线性与模型的简化,本文使用“岭回归法”和“PCA主成分回归法”尝试减轻多重共线性的影响并对模型作出合适的简化。
(2)多重共线性处理:
a.Ridge岭回归:
利用Python绘制岭迹图:

通过观察岭迹图,我们首先选取岭参数为exp(6)\exp(6)exp(6),其次观察发现变量Product、Type、State均在0附近,对变量Sales的影响较小,将他们剔除后再次进行岭回归。得到输出结果:
Market : 1.9517236594813392
Market Size : -2.7622294182487788
COGS : 52.202977804203684
Total Expenses : 6.817442648939644
Marketing : 8.86483801142167
Inventory : -3.712837264493617
Budget COGS : 16.429106772703364
Budget Margin : 66.96984433107806
截距:192.70699037254082
均方误差: 1277.4518794910975
y的均值: 199.72647427854454
训练集得分: 0.9541736486545781
验证集得分: 0.9447228813564216
此时模型的拟合能力虽然降低,但调整后R方依然有0.95,线性拟合度依然很高,并且COGS和Budget COGS的系数得到了统一。
b.PCA主成分回归分析:
首先检验是否合适进行PCA降维:

得到显著性为0,说明原数据适合PCA降维。
考察方差解释信息量:

使选取的变量解释85%以上的方差信息量,于是选取前6个变量做线性回归分析:

调整后R方比较于最小二乘法降低,但线性拟合能力依然很高。

系数显著性均为0,与Sales显著相关。结合得分矩阵:

最后利用python计算得到各项标准化系数:
State : 0.0792
Market : 0.0836
MarketSize : -0.3002
COGS : 0.3619
TotalExpenses : 0.3146
Marketing : 0.2956
Inventory : -0.3003
BudgetCOGS : 0.4295
BudgetMargin : 0.7783
Product : 0.0369
Type : -0.0517
此时系数被集中于COGS(销售成本)、BudgetCOGS(预算销售成本)和BudgetMargin(预算毛利润),说明Sales(销售收入)与营业人实际销售过程中的COGS(销售成本)、包括预算准备中的BudgetCOGS(预算销售成本)和BudgetMargin(预算毛利润)在数值上有很大关联。并且此时COGS与BudgetCOGS的系数也均以同时为正,两者系数得到了统一,符合经济实际。
(3)模型自相关性和异方差性检验:
a.自相关性:
在对维数进行合适处理后,这里我们选择PCA主成分分析筛选的6个特征(分别命名为x1,x2,x3,x4,x5,x6x_1,x_2,x_3,x_4,x_5,x_6x1,x2,x3,x4,x5,x6

本文通过线性回归分析美国商店销售数据,探讨销售收入与各变量间的关系。在预处理阶段,删除了无关或冗余变量。分析发现,库存价值、预算销售成本和预算毛利润与销售收入关联性强。模型构建过程中,识别并处理了多重共线性问题,使用岭回归和主成分分析优化模型,最终模型展示了一定的预测能力。
最低0.47元/天 解锁文章
2124

被折叠的 条评论
为什么被折叠?



