目录

一、目的

二、数据来源和相关说明

1、数据来源

2、数据信息

3、变量信息

三、描述性分析

1、描述统计

2、单因素分析

四、数据建模

1、全模型分析

2、模型选择

3、模型预测和评估

五、总结


一、目的

从超市会员消费记录中找出规律,并判断会员次月光顾超市的次数。

二、数据来源和相关说明

1、数据来源

来源于某家超市部分会员的详细消费记录。

import os
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt# 参数设置
plt.rcParams['font.sans-serif']=['SimHei'] #中文
plt.rcParams['axes.unicode_minus'] = False #负号
filePath = r'E:\CH6'
fileName = r'crm.csv'# 读取数据
df_raw =  pd.read_csv(open(os.path.join(filePath, fileName)))

2、数据信息

共3995条样本,包含7个变量。

print(df_raw.info())
print(df_raw.head())

3、变量信息

# 变量列表
str_cols = []
num_cols = ['exp3', 'exp2', 'exp1', 'freq3', 'freq2', 'freq1' ]
x_cols = str_cols + num_cols
y_col = 'freq0'

(1)自变量

  • freq1、freq2、freq3分别为会员第-1月、第-2月、第-3月光顾超市的频数。
  • exp1、exp2、exp3分别为会员第-1月、第-2月、第-3月的消费金额。

(2)因变量

  • freq0为会员第0月光顾超市的频数。

三、描述性分析

df_clean = df_raw.copy()

1、描述统计

从下述指标看,按平均水平来说(以算术平均计),每个月每位会员光顾该超市大约1次,消费金额为5-20元。

# 基本统计量
print(df_clean.describe().T)

2、单因素分析

考虑到因变量为计数变量的特点,因此采用箱状图分析因变量和自变量之间的关系,如下:

  • 第0月光顾频数高的顾客(freq0),其第-1月光顾频数(freq1)(以中位数计)也较高。这表明消费者在第-1月的光顾次数可能是一个对其当月的光顾次数有显著影响的重要变量。
  • 第0月光顾频数高的顾客(freq0),其第-1月消费金额(exp1)(以中位数计)也较高。这表明消费者在第-1月的消费金额也可能是一个对其当月的光顾次数有预测能力的变量。但是,其变化趋势没有freq1那样明显,因此,可猜测exp1的预测能力有限。
  • 第0月光顾频数高的顾客(freq0)在其第-2月(freq2)和第-3月(freq3)光顾频数(以中位数计)也较高,但这种趋势在第0月的光顾频数(freq0)较高时并不稳定。这表明,第-2月(freq2)和第-3月(freq3)光顾频数可能有一定的预测能力,但预测能力很有限。
  • 第0月光顾频数高的顾客(freq0)在其第-2月(exp2)和第-3月(exq3)的消费金额(以中位数计)也较高。第-2月的趋势和第-1月类似,而第-3月的趋势要强于第-1月和第-2月,但这种趋势在第0月的光顾频数较高时也不稳定。这也表明,第-2月和第-3月的消费金额可能有一定的预测能力,但预测能力也比较弱。
# 单因素分析
for i in range(len(num_cols)):col = num_cols[i]df_clean.boxplot(by=y_col, column=col, figsize=(4,3))plt.ylabel(col)plt.xlabel(y_col)plt.title(col)plt.suptitle('')plt.show()

四、数据建模

1、全模型分析

根据因变量为计数变量的特点,因此采用泊松回归的方法建立模型。首先对包含全部自变量的全模型进行估计。从下述估计结果看,对模型显著性的广义似然比检验的P值非常小(P值<0.001),表明该模型是显著的,即所考虑的6个自变量中,至少有一个与因变量显著相关。进一步通过对各自变量所对应的Z检验的考察,可以得到:

  • 6个自变量都和因变量高度正相关。这说明,无论是较高的历史光顾频率,还是较高的历史消费金额,都预示着更高的未来光顾频率。
  • 同样是历史光顾频率,最近一个月的光顾频率的系数明显高于另外两个月,类似的现象也存在于消费金额中。这说明,消费者最近一个月的行为对未来的预测能力最强。
import statsmodels.formula.api as smf
base_formula = 'freq0 ~ 1 + freq1 + freq2 + freq3 + exp1 + exp2 + exp3'
model = smf.poisson(base_formula, df_clean).fit()
print(model.summary())

2、模型选择

由全模型分析得出,所选取的自变量确实对因变量有一定的解释能力。但是全模型过于复杂,为了得到一个尽量简单同时又具有良好的预测能力的模型,采用AIC和BIC的模型选择标准来选择一个最优的模型。对于本报告所使用的数据,AIC和BIC得到了相同的结论,它们都认为全模型就是最优的模型。这表明,这6个自变量确实都有一定的预测能力,也就是说,前三个月中消费者的购买行为确实影响着当月的购买行为。

def step(model_eval, baseFormula, data, scoreTyp='aic'):f = baseFormula.replace(' ', '')response = f.split('~')[0]remaining = [i for i in f.split('~')[1].split('+') if i != '1']selected = []current_best_score, best_score = np.PINF, np.PINF # 初始值k = 1while remaining and current_best_score == best_score:
#        print('\n[INFO] No. %d'%k)k += 1scores_with_candidates = []for candidate in remaining:formula = "{} ~ {} + 1".format(response, ' + '.join(selected + [candidate]))score = eval(model_eval + '.' + scoreTyp)scores_with_candidates.append((score, candidate))scores_with_candidates.sort()current_best_score, current_best_candidate = scores_with_candidates[0]if current_best_score <= best_score:remaining.remove(current_best_candidate)selected.append(current_best_candidate)best_score = current_best_scoreelse:break    formula = "{} ~ {} + 1".format(response,' + '.join(selected))model = eval(model_eval)print('\n[INFO] FINAL')  print('%s, %.1f' % (formula, eval('model.' + scoreTyp)))return modelmodel_eval = "smf.poisson(formula, data).fit()"
print('\n\n[AIC]')
model_aic = step(model_eval, base_formula, df_clean, scoreTyp='aic')
print('\n\n[BIC]')
model_bic = step(model_eval, base_formula, df_clean, scoreTyp='bic') 

3、模型预测和评估

根据所得到的模型,可以利用它进行消费者当月的光顾频数预测。通过对测试集数据进行预测,并计算预测值与真实值之间的误差,得到该模型的绝对预测精度(RMSE)为1.34,表明该模型有一定的预测能力。

test_fileName = r'new.csv'
df_test =  pd.read_csv(open(os.path.join(filePath, test_fileName)))
#预测
df_test['pred'] = list(model_aic.predict(df_test))
#计算MSR
print('\n均方根误差(RMSE): %.2f' % (np.mean((df_test[y_col] - df_test['pred'])**2)**0.5))

五、总结

从上述的分析结果可知,消费者在前三个月的光顾频数和消费金额都影响着其未来的光顾频数,其中前三个月的光顾频数对未来的光顾频数的影响要大于消费金额。因此,对超市的管理者而言,能够使消费者经常光顾超市对超市的经营具有很重要的意义,而不要过于关注消费金额。还发现消费者最近一个月的行为对未来的预测能力最强,因而超市的管理者要特别关注近期的经营状况,而不是更长期的情形。

另外,根据本报告的模型及结论,超市管理者可以利用会员的历史消费记录,对会员未来的光顾频数进行合理的预测,并根据预测结果来制定相应的营销策略。具体来说,如果预测结果表明消费者未来的光顾频数较小,那么超市需要通过某些促销活动来增加消费者的光顾次数,进而提高超市的经营业绩。

《应用商务统计分析》第六章 泊松回归相关推荐

  1. 第六章 逻辑回归-机器学习老师板书-斯坦福吴恩达教授

    第六章 逻辑回归 6.1 分类器 6.2 假设陈述 6.3 决策边界 6.4 代价函数 6.5 简化代价函数与梯度下降 6.6 高级优化 6.7 多元分类:一对多 6.1 分类器 6.2 假设陈述 6 ...

  2. R语言基础题及答案(六)——R语言与统计分析第六章课后习题(汤银才)

    R语言与统计分析第六章课后习题(汤银才) 题-1 有一批枪弹, 出厂时, 其初速v∼N(950,σ2)v\sim N(950,\sigma^2)v∼N(950,σ2)(单位:m/sm/sm/s). 经 ...

  3. 《应用商务统计分析》第一章 线性回归(报告)

    说明:本报告仅供学习参考,不代表任何投资建议.同时欢迎各位大佬指点交流~ 报告地址:因为博客里面的编辑界面不太友好(本人懒),所以将报告上传至了github:

  4. 调整泊松回归中的过度分散

    广义线性模型(Generalized Linear Models) The Poisson regression model naturally arises when we want to mode ...

  5. 吴恩达《机器学习》第六章:逻辑回归

    文章目录 六.逻辑回归 6.1 Sigmoid 函数 6.2 决策边界 6.2.1 线性决策边界 6.2.2 非线性决策边界 6.3 代价函数 6.4 高级优化 6.5 多类别分类 六.逻辑回归 逻辑 ...

  6. 机器学习-第六章 支持向量机(SVM)

    机器学习-第六章 支持向量机(SVM) D系鼎溜关注 2020.02.09 21:19:41字数 1,131阅读 458 6.1 间隔与支持向量 开倍速观看视频之后,对课本所说的会更加了解. 支持向量 ...

  7. 吴恩达机器学习(第六章)——正则化

    第六章-正则化 文章目录 第六章-正则化 过拟合问题 代价函数 线性回归的正则化 Logistic回归的正则化 过拟合问题 如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代 ...

  8. 机器学习理论《统计学习方法》学习笔记:第六章 逻辑斯谛回归与最大熵模型

    机器学习理论<统计学习方法>学习笔记:第六章 逻辑斯谛回归与最大熵模型 6 逻辑斯谛回归与最大熵模型 6.1 逻辑斯谛回归模型 6.1.1 逻辑斯谛分布 6.1.2 二项逻辑斯蒂回归模型 ...

  9. 广义线性模型_广义线性模型(第六章补充)

    上一篇文章(第六章)主要介绍了最大熵模型,并从中推导出逻辑斯谛回归,感觉意犹未尽.在复习了CS229 Lecture note之后,我决定重新整理思路:从广义线性模型的角度来看逻辑斯谛回归.最后,基于 ...

最新文章

  1. 如何为Oracle配置多个监听器
  2. linux查看并发量的命令
  3. ios动态获取UILabel的高度和宽度
  4. [BZOJ2429][HAOI2006]聪明的猴子(最小生成树)
  5. android support design library eclipse,Eclipse下使用Android Design Support Library中的控件
  6. MySQL中int、char、varchar的性能浅谈
  7. 织梦cms提交熊掌号php,织梦cms熊掌号历史数据提交教程
  8. MCMC 和 Gibbs采样
  9. 学生管理系统c语言代码实验报告,C语言学生信息管理系统实验报告(含源代码).doc...
  10. 时尚达人必备的潮流壁纸桌面!
  11. 【广告技术】隐私集合交集运算结合同态加密,在保障数据安全的同时追踪广告效果
  12. Halcon PDF文档(hdevelop_users_guide)学习总结之五——关于图形窗口
  13. R语言︱用excel VBA把xlsx批量转化为csv格式
  14. 关于Apache与Nginx的优势比较
  15. 3.修改和编译XposedBridge.jar 和 api.jar
  16. 线性代数科学出版社课后练习题答案
  17. 【Web安全笔记】之【11.0 其他】
  18. 最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几
  19. 佐切的第四天学习分享
  20. 量化交易-回测调参-神龙摆尾

热门文章

  1. pyqt5 GUI实战开发,eric6的安装以及eric6与Qt Designer的使用
  2. findIndex()方法
  3. 数据分析报告入门(2)
  4. EOS开发1:EOS计算RAM价格
  5. centos7挂载硬盘
  6. jquery 获取tr里的值_jquery遍历table的tr获取td的值实现方法
  7. 什么是SVG格式?如何制作?
  8. 重磅:分享Matlab GUI和App计算器源代码(后续)
  9. Activity 的 36 大难点,你会几个?,安卓面试2020
  10. Ubuntu如何安装python虚拟环境