杨奉山:R语言中文社区专栏作者,R语言小学生,和我一起为成为优秀的商业数据分析师努力吧
知乎专栏:https://zhuanlan.zhihu.com/YFSbda
往期回顾
经个人的经验摸索,数据分析不应是对数据进行分析。
数据分析应是通过数据对实际业务场景进行分析。
也就是说数据分析应当出业务问题出发,结合业务逻辑需要选择一定的方法(统计学、统计学习方法,数学建模)及工具(SQL,EXCEL,Tableau,R等),最终根据分析结论解决我们的问题,有时会提出相关决策建议。
所以关键是,你的问题是什么,为此你要用哪些方法与工具,最后你得出什么样的结论。
在工具的选择上要熟悉各工具的优劣与应用场景,结合业务结合使用。个人比较偏向于:SQL与EXCEL——数据预处理及数据存储;Tableau与R语言——探索性数据分析;R语言——建模与验模;EXCEL、Tableau、R语言——形成报告。(是的,R语言是万能的)
下面是一个简单案列,这个案列的分析步骤是这样的:
第一步,定义我们的业务问题;
第二步,结合问题清洗与处理数据;
第三步,探索性数据分析(加上第二步也可理解为特征工程);
第四步,提出设想,并进行建模与验模;
第五步,回归我们的第一步,得出结论及给出建议。
第一步
我们的业务问题是分析以道奇队为主场的比赛(即比赛均在道奇体育场)上座率受哪些因素影响,特别是门票是否附赠摇头娃娃的影响(因为体育馆考虑是否要推出新的摇头娃娃)。通过百度百科发现道奇体育馆容纳人数为56000。
第二步:使用SQL进行数据预处理
1.介绍一下字段的含义:
month——比赛的月份。
day——比赛的日期。
attend——比赛出席人数。
day_of_week——比赛是星期几。
opponent——客场对手是谁。
temp——比赛当天的气温。
skies——比赛当天是多云还是晴朗。
day_night——比赛是白天还是夜晚。
cap,shirt——比赛是否存在宣传帽与T恤。
fireworks——是否有烟火。
bobblehead——比赛是否附赠摇头娃娃。
2.将CSV格式的数据导入SQL Sever数据库。
3.去掉与我们分析目的无关的day,cap,shirt字段,将attend与temp数据类型改为整数,并将月份与星期的值从英文改为中文(分析结果相对会直观一点)。T-SQL脚本为:
use yfs
go
alter table dbo.dodgers alter column attend int;
alter table dbo.dodgers alter column temp int;
alter table dbo.dodgers drop column day,cap,shirt;
update dbo.dodgers set month=
case month
when 'APR' then '四月'
when 'MAY' then '五月'
whEN 'JUN' THEN '六月'
WHEN 'JUL' THEN '七月'
WHEN 'AUG' THEN '八月'
WHEN 'SEP' THEN '九月'
WHEN 'OCT' THEN '十月'
end
update dbo.dodgers set day_of_week=
case day_of_week
when 'Monday' then '星期一'
when 'Tuesday' then '星期二'
when 'Wednesday' then '星期三'
when 'Thursday' then '星期四'
when 'Friday' then '星期五'
when 'Saturday' then '星期六'
when 'Sunday' then '星期日'
end
4.将结果导出为新csv文件(dodgers_new.csv)方便使用R语言建模。
现在使用Tableau进行探索性数据分析(这里也可以用R语言)。由于Tableau的特点就是简单直接、方便高效,因此这里以视频的形式给出,让我们来体会一下$840/年(学生可以申请免费试用一年)的商业软件的便利:
视频地址:https://www.zhihu.com/video/930832729499566080
根据第三步提出设想,使用R语言建立模型与验证模型。
由于本文重点是介绍数据分析的基本思路及过程,所以这里只进行了简单的回归分析,并未进行回归诊断及多重共线性处理(可参考之前文章2.3 R商业分析3:广告投入是怎样提高新用户数的(岭回归及主成分回归)),并且这里并未将数据分为train和test组,有兴趣的可以尝试。
dog <- read.csv("dodgers_new.csv",header = T) str(dog) head(dog) dog <- dog[,c(-4,-5,-6,-7,-8)] mod <- lm(attend~.,data=dog) summary(mod) mod_step=step(mod)
> summary(mod_step)
Call:
lm(formula = attend ~ month + day_of_week + skies + bobblehead,
data = dog)
Residuals:
Min 1Q Median 3Q Max
-9346 -3753 -602 2216 15662
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 44575 2608 17.093 < 2e-16 ***
month九月 -1775 2469 -0.719 0.47464
month六月 4916 2574 1.910 0.06052 .
month七月 1250 2448 0.511 0.61134
month十月 -2473 3972 -0.623 0.53575
month四月 -982 2567 -0.383 0.70325
month五月 -4601 2150 -2.140 0.03605 *
day_of_week星期六 -1523 2532 -0.602 0.54951
day_of_week星期日 -2066 2642 -0.782 0.43698
day_of_week星期三 -5196 2684 -1.936 0.05721 .
day_of_week星期四 -7360 3261 -2.257 0.02730 *
day_of_week星期五 -3200 2666 -1.200 0.23437
day_of_week星期一 -8294 2692 -3.081 0.00301 **
skiesCloudy -2706 1850 -1.463 0.14822
bobbleheadYES 10556 2402 4.395 4.11e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 6069 on 66 degrees of freedom
Multiple R-squared: 0.5587, Adjusted R-squared: 0.4651
F-statistic: 5.968 on 14 and 66 DF, p-value: 2.17e-07
模型的各个参数显著性不高,R方也不够高。但我们本身的业务重点就是在是否推出新的摇头娃娃,因此我们关心的是是bobblehead的显著性与系数。这里明显看出门票是否附赠摇头娃娃对上座率影响是正的并且显著性很高,因此建议体育馆门票附赠摇头娃娃,但是基于什么价格附赠,那就是另外一个数据模型了。
数据地址:云盘链接:https://pan.baidu.com/s/1nuFKRln 密码:s4ww
往期精彩内容整理合集:
公众号后台回复关键字即可学习
回复 R R语言快速入门免费视频
回复 统计 统计方法及其在R中的实现
回复 用户画像 民生银行客户画像搭建与应用
回复 大数据 大数据系列免费视频教程
回复 可视化 利用R语言做数据可视化
回复 数据挖掘 数据挖掘算法原理解释与应用
回复 机器学习 R&Python机器学习入门