数据分析实习-业务题准备
想挑战一下自己能不能做一做数据相关的工作,准备在暑期尝试投一投数据分析相关的实习。
虽然希望不大,但还是要努力准备一下,整理了一部分面试/笔试时可能会考的业务题(来源各处的面经、笔经),尽量考虑面试和自己能掌握的实际,梳理了自己的思维模板,并非是很专业的整理,总结如下:
一、费米(估算)问题
总体原则:自上而下拆解,自下而上计算。
涉及分析方法:逻辑树分析、多维度拆解分析。
目标:估算结果上下浮动范围不超过10倍即可。(from《这也能想到?——巧妙解答无厘头问题》)
(一)确认估算对象
确认是否需要 细化对象 or 转换对象 。
eg1:估算一个星巴克门店的销售额。
eg2:估算芝加哥有多少名钢琴调音师。
对于eg1,可以根据二八原则细化,星巴克的销售产品主要以饮品为主,而饮品主要以咖啡为主,因此估算对象确定为咖啡的销售额;
对于eg2,将芝加哥的钢琴调音师数量转换为:芝加哥每年需要调音的钢琴数量 / 每个调音师每年能调多少台钢琴。
(二)拆解估算对象
从 需求层 and 供给层 展开考虑。
1. 需求维度
需求值 =市场总需求规模 = 需求单位数 × 单位需求量 × 单位需求频次
需求单位数 = 需求人群 × 人群转化率
eg3:估算北京市一日卖出的油条数量。
需求单位数 = 北京市吃油条的人数 = 需求人群 × 人群转化率 = 北京市人口 × 选择吃油条的比例 = 约2000万人 × 约5% ≈ 100 万人
需求值 = 北京市一日卖出的油条数量 =需求单位数 × 单位需求量 × 单位需求频次 = 北京市吃油条的人数 × 每次吃几根 × 一天吃几次 = 100万人 × 1根/次 × 每天只早餐吃1次 ≈ 100万根油条
2. 供给维度
供给值 = 市场总供给能力 = 供给单位数 × 单位供给量 × 供给时段
供给单位数 = 市场总区域 / 单位平均辐射区域
供给时段 = SUM(不同时段时间,主要用在区分 闲时忙时、淡季旺季 的场景)
eg3:估算北京市一日卖出的油条数量。
供给单位数 = 北京油条店的数目 = 市场总区域 / 单位平均辐射区域 = 北京市面积 / (五环内每1平方千米有2家油条店,五环外每2平方千米有1家油条店) = 约735万平方千米*2 + 约15700平方千米 / 2 ≈ 9320家店
供给时段 = SUM(不同时段时间) = 1天
供给值 = 北京市一日卖出的油条数量 = 供给单位数 × 单位供给量 × 供给时间 = 9320家店 × 100根/天 × 1天 ≈ 93.2万根油条
(三)对比估算结果
因为供需是会动态平衡的,因此若需求层和供给层算出的估计值相差在合理范围内(不要差得太离谱就可以),则可以得出一个大致的估计值or估计范围。
对比可知,北京市一日卖出的油条数量大约在93.2万~100万根油条(or大约96.5万根)。
若相差太离谱,可能需要重新考虑上述计算的过程,或者直接进入下一环节。
(四)关注可能的误差
最后需要列出可能出现误差的影响因素,比如:需求人群可以再进一步细分、供给单位的平均辐射区域大小有待考证……
比如eg3估算过程中的“五环内每1平方千米有2家油条店,五环外每2平方千米有1家油条店”,需要进一步调研,又比如“北京市选择吃油条的比例”也可能需要问卷调查之类。
同时,还可以根据实际情况给出一些未来的改进办法,比如:抽样调查、观测历史数据……
二、A/B测试问题
没有在网上找到很多结合具体场景的A/B测试问题,因此这部分还是好好地把A/B测试的概念都梳理一遍。
涉及分析方法:对比分析、假设检验分析、群组(同期群)分析。
(一)定义
A/B test,又称分组隔离实验,简单来讲,A/B测试是一种比较手段:通过分析同一总体下,由于某些不同的策略导致样本数据表现出的差异,来推断某些策略的效果。
个人理解:为了同一个目标,制定多个方案并行测试,每个方案只有1个变量不同。让相似的用户群组使用各个不同的方案,收集每种方案的数据后,以某种规则选出最优方案。
本质:假设检验的一种实际应用。
(二)应用场景
① 产品迭代:如界面优化(改字体、增弹窗等)、功能增加、流程增加……
② 策略优化:如算法策略、运营策略、营销策略……
科学量化各个方案的效果(如ROI<投资回报率>等),衡量决策收益,避免拍脑袋决定。
不适用的场景:用户体验的制约(如价格调整)、样本数量制约(如防止侵害的安全类事件)、AB组间存在干扰(如滴滴司机间有司机群)。
(三)科学依据
科学的实验设计;科学的采样(随机化);科学的流量分割;科学的统计学原理(假设检验)。
(四)步骤
1. 分析现状,提出假设
分析业务数据,确定当前最关键的改进点/最可能的问题,根据问题提出假设。
假设有A、B两个方案,想确定A、B之间是否客观存在差异,还是这种差异仅由某种误差引起。因此假定:
H0(原假设/零假设):A、B没有本质差异
H1(备择假设):A、B确实存在差异
2. 设定目标,制定方案
设定主要的目标(重点关注的指标),用来衡量各种方案的优劣。
收集了一些经验贴以及相关网站(如华为开发者联盟和字节火山引擎上的A/B测试产品)里提到的指标,然后利用用户生命周期(User Lifetime)梳理如下:
① 引入期:PV(Page View)、UV(Unique Visitor)、点击率;
② 成长期:转化率、互动时长(观看时长等);
③ 成熟期:GMV(Gross Merchandise Volume);
④ 休眠期 + ⑤ 流失期:留存率。
PS:这么分主要是为了熟悉和巩固下这个周期。
3. 算样本量,设计投放
很重要的一步,需要计算所需样本量,并根据样本量确定投放时长,最后还要确定投放城市。
① 样本量计算公式(通过σ和β确定):
N
=
2
σ
2
(
z
1
−
α
/
2
+
z
1
−
β
)
2
Δ
2
N = \frac{2\sigma^2(z_{1-\alpha/2}+z_{1-\beta})^2}{\Delta^2}
N=Δ22σ2(z1−α/2+z1−β)2
N为样本量;
α是第Ⅰ类错误的概率(弃真错误),也称显著性水平,一般取0.05;
β是第Ⅱ类错误的概率(取伪错误),一般取0.2,**(1-β)**是统计功效(power),一般而言设(1-β) ≥ 80%;
Δ是所想要指标预期的变化量(μ₁-μ₂),eg:点击率从5%上升到10%,那么Δ为5%,(在其他样本量计算公式中,此处为预期的抽样误差)。
σ²是指标的样本方差,如果没有可以采用最大值0.5。
注意事项:如果有多个指标,则选用最大的指标所需要的样本量;计算结果是每个分组所需要的样本量,有几个分组就需要乘几;样本量可以是累积一段时间的最终样本量。
样本量的选取,从网上找到了一张图👇
② 确定投放时间:
根据上面注意事项的最后一点可知:实验时间 = 实验需要样本量 / 每天产生的样本量;
此外,另一个判断标准是:当统计显著性达到95%或以上并且维持一段时间,实验可以结束。
如果统计显著性在95%以下,则可能需要延长测试时间;
如果很长时间统计显著性不能达到95%甚至90%,则需要决定是否中止试验。
③ 实验城市的选取:
**原因:**有些实验可能存在负向影响,为了控制实验范围,要找部分城市做试点;也有可能每个城市的特性差异较大,全国上线时,城市之间的差异被平均化了,不能看到真实的策略效果,因此需要选择部分城市做实验。
**原则:**一是尽量选择大体量城市,样本充足,实验周期更短;二是要选择不同类型的城市,观察方案是否具有普适性。
4. 分配流量和分流时机
首先根据实验目标和 用户属性(地域、活跃/流失用户……)确定实验的受众群体;然后再确定每个方案的分流比例,即确定有多少用户/多少流量给到这个实验。流量的设置可以根据情况从初始阶段开始逐渐增加流量。
分流方法:
① 将业务逻辑互斥的环节分为多“层”,每一层都共享一批用户;
② 在每一层内将用户随机切割进不同的“桶”,一个用户只能在一个桶内;
③ 只要多层之间互不影响,就能确保每个实验都能实现全流量切割。
分流时机:
实验分流的触发点,是且只能是策略/方案的生效点。
PS:一切目的都是为了让策略/方案之间的唯一变量是策略/方案之间效果差异的唯一来源。
简略补充:A/B测试的访问流程:
从左到右,3条较粗的竖线代表了 A/B 测试中的3个关键角色:客户端(Client)、服务器(Server)、数据层(Data)。从上到下代表了3种访问形式:
无 A/B 测试的普通访问流程(Non AB test)
基于后端分流的 A/B 测试访问流程(Back-end AB test)
传统的A/B测试方式。当用户的请求到达服务器时,服务器根据一定的规则,给不同的用户返回不同的版本,同时记录数据的工作也在服务端完成。基于后端的 A/B 测试技术实现上稍微简单一些,不过缺点是收集到的数据通常是比较宏观的PV(Page View)信息。
基于前端分流的 A/B 测试访问流程(Front-end AB test)
可以比较精确地记录下用户在页面上的每一个行为。它的特点是,利用前端 JavaScript 方法,在客户端进行分流,同时,可以用 JavaScript 记录下用户的鼠标行为(甚至键盘行为,如果需要的话),直接发送到服务器记录。
5. 数据收集,定统计量
收集每种方案产生的数据后,需要分析数据,也就是开始进行假设检验。
个人理解,假设检验是个很庞大的概念,包括参数检验(有依赖分布的检验和方差分析等)和非参数检验(分类数据分析)。一般A/B测试里用到的都是依赖分布的检验。
确定用什么统计量,即是在选择用什么样的 概率分布/方法 进行检验。以下是一些基本的检验方法:
① z检验(正态性检验,正态分布):用于 样本量较大 的 均值类 指标数据;(均值的检验)
② t检验(t分布):用于 样本量较小 的 均值类 指标数据;(均值的检验)
③ 卡方检验(卡方分布,Χ²分布,Chi-squared):留存率、渗透率等 漏斗类 指标;(方差的检验)
- 单个总体的检验统计量是 卡方值,两个总体的检验统计量是 F统计量(方差比的检验)。
6. 分析数据,做出决策
判断步骤:
① 根据显著性水平确定拒绝域(拒绝域:由显著性水平α围城的区域)的临界值,该临界值为原假设的接受域与拒绝域的分界值。
② 根据样本计算出的 |检验统计量| < |拒绝域的临界值| 时,落入置信区间(1-α),满足原假设;
③ 在第②步的前提下,若P-value > α,则不能否定原假设H0;若P-value < α,则拒绝H0,接受备择假设H1。
小概率原理反证法的思想是假设检验的基本思想。小概率原理:“小概率事件在单次试验中基本不可能发生,但在多次重复实验中是必然发生的。”
因此,假设检验的过程可以举例理解:如果P值很小(P<0.05:原假设H0为真时,出现偏离原假设观测值的概率<0.05),那么出现目前这个观测值概率就越小,根据小概率原理,它就不应该出现。但现在出现了这个事件,那么就说明它不是小概率事件,其前提有问题,因此要拒绝H0。
注意事项:
① 若效果不理想,可以考虑以下几点原因:样本量不足、实验时间太短、实验人群≠上线人群、实验前后外部环境发生变化。改进方法:优化策略、优化实验(增加样本量、减少离群值、更换指标)。
② 统计学意义上有显著性差异,并不能代表优化方案带来的效果提升有业务价值/商业价值。(当样本量足够大的时候,任何策略都会在统计学意义上显著,因此要提前设置好指标预期的变化量)
三、指标搭建/选取问题
这部分有点复杂,或者说考得更加灵活,实在找不到什么能够全部框住的思路,然后最近也有点摆的心态,所以仅能当做一个简单梳理。
(一)业务指标体系搭建
1. 明确产品阶段,定北极星指标
北极星指标(North Star Metric),也叫做第一关键指标(One Metric That Matters),是指在产品的当前阶段与业务/战略相关的绝对核心指标。概念与KPI(Key Performance Indicator,)类似。
① 初创期:关注用户,注重 注册类 指标。
② 成熟期:注重 活跃类 指标。
- 内容型APP:关注DAU(Daily Active User,日均活跃用户数量)
- 交易型APP:关注GMV。
2. 结合业务特征,拆解主要指标
① 用户维度:
-
用户生命周期
-
AARRR模型
AARRR模型即“海盗指标”,将创业公司最需要关注的指标分为五大类: 简称AARRR。它描述了用户/客户/访客须经历的五个环节,以便企业获取价值。用户激活、用户留存、用户推荐、商业收入
-
Acquisition 获取用户 (用户如何找到我们?)
方法:精准投放,选择合适渠道;引导用户分享;病毒营销,推荐奖励;做好留存。
-
Activation 激活用户 (用户的首次体验如何?)
Aha时刻:用户情不自禁地喜欢上产品亮点、发出赞叹的时刻。要想激活用户,需要绘制一幅通往“Aha时刻”的路径图。
方法:活动激励;增加提示(消息推送);优化产品(优化核心功能);功能开发(糅合高频功能)。
-
Retention 用户留存 (用户会回来吗?)
留存的核心目标是让用户养成使用习惯,这一环节需要关注留存率指标(有次日留存、周留存、月留存等)。
-
Revenue 商业收入 (如何赚到更多钱?)
收入分为服务、广告收入,目标是如何赚到更多钱,同时需要关注“夹点”(损失潜在收益的地方)。
-
Referral 用户推荐 (用户会告诉其他人吗?)
也叫病毒营销或者自传播,需要关注的指标有转发率、转化率、K因子。
-
② 商品角度:
- “人-货-场”思维:
- 人:买方、买方、员工
- 货:商品、供应链
- 场:市场环境、平台运营、活动策划
3. 理清逻辑线索,总结归纳指标
将拆解出来的指标,以清晰的逻辑线串起来总结。
4. 落地业务场景,指标数据应用
可能的数据应用:判断走势、定位异常、驱动迭代、监测指标(趋势、对比、分布)。
(二)选取预警/预测指标
根据产品及业务的具体内容,选择某些指标可能的偏离情况。
(三)APP分类及其关注指标
这部分实在不想再写了,所以就简单地按个人感觉把APP划分一下类别,然后列出一下各类APP中可能重点关注的指标。
1. 交易类APP
含 电商、外卖、生鲜、直播带货……
① 商品类指标:
- 存货量、品类数
- 评价率、好/差评数
② 流量类指标:
- 流量规模(PV、UV)
- 流量质量(跳出率、互动时长)
- 流量成本(CAC,单位访客成本)
③ 客户类指标:
- 新客户(客单价、订单价)
- 老客户(客单价、消费频率、RFM<最近一次消费(Recency)、消费频率(Frequency)、消费金额(Monetary)>)
④ 转化类指标:
- 购物车
- 订单
- 支付率
2. 内容类APP
含 社区、问答平台、工具类、娱乐类……
- 用户规模与质量
- 用户参与度
- 推广渠道分析
- 功能使用/转化分析
- 用户画像(游戏需要 精细化运营)
- 营收分析(GMV、付费率、付费用户数、ARPU<Average Revenue Per User,每用户平均收入>)
四、异常归因问题
“异常归因类问题建议有逻辑有结构的回答,体现基本严谨的分析思路。”
(一)确认异常发生
第一步需要确认真的有异常,而不是其他问题导致的异常。
1. 背景确认
确定指标的来源:
- 来源 A/B测试:异常归因的目的是改进实验;
- 来源 日常数据监控:异常归因的目的是解决业务问题。
2. 检查数据
① “点”:
- 确定采样范围,避免取数问题;
- 确定指标的计算口径是否一致;
- 确保数据来源可靠。
② “线”(拉长时间轴):
- 同比、环比,看异常是否在合理区间;
- 判断是否属于周期性波动(如淡/旺季等)。
(二)定位异常原因
1. 排外
即 排除外部因素,采用 PEST宏观环境分析。
- Political 政治:国家/行业政策;
- Economic 经济:宏观经济走势、竞品活动;
- Social 社会:媒体舆论、用户生活方式变化、消费心理变化、价值观变化;
- Technological 技术:创新技术的应用、分销渠道的变化。
2. 拆内
① 用户角度:
部分用户出现的问题,可以去细分找出问题的用户,然后针对性解决:
-
新、老用户
-
不同渠道的用户
补充:渠道分析方法(QQM,“QQ妹”模型)
- Quality 数量:各类用户的数量;
- Quantity 质量:日活跃、DAU;
- Money 收入:付费率、ARPU、ARPPU<Average Revenue per Paying User,平均每付费用户收入>、GMV、付费人数。
-
不同地域的用户
-
其他(性别、年龄、职业……)
② 产品角度:
产品上出现了问题:
- 功能变化/产品改版;
- 产品品类变化;
- 产品价格变化;
- 供应链问题。
③ 平台角度:
平台部分处理问题:
- 运营活动发生变化;
- 广告投放发生变化;
- 技术问题;
- 时间变化(如:特殊事件、节日前后等)。
(三)结合具体业务,提出解决方案
这部分没有内容啦,可以根据需要思考。
小结
总的来说,只是重新梳理了一遍出现频率比较高的业务题,真遇到相关问题还是要认真思考,结合自己能想到的回答,也许自己的思路也是一个比较好的角度。
PS:文章是先发在LeetCode上了,然后再放的知乎。
- Money 收入:付费率、ARPU、ARPPU<Average Revenue per Paying User,平均每付费用户收入>、GMV、付费人数。
-
不同地域的用户
-
其他(性别、年龄、职业……)
② 产品角度:
产品上出现了问题:
- 功能变化/产品改版;
- 产品品类变化;
- 产品价格变化;
- 供应链问题。
③ 平台角度:
平台部分处理问题:
- 运营活动发生变化;
- 广告投放发生变化;
- 技术问题;
- 时间变化(如:特殊事件、节日前后等)。
(三)结合具体业务,提出解决方案
这部分没有内容啦,可以根据需要思考。
小结
总的来说,只是重新梳理了一遍出现频率比较高的业务题,真遇到相关问题还是要认真思考,结合自己能想到的回答,也许自己的思路也是一个比较好的角度。
PS:文章是先发在LeetCode上了,然后再放的CSDN。