购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 指标异动分析

一般来讲,数据指标都有固定的波动周期,而且每个周期内数据的变化应该趋于稳定。如果发现某数据指标出现不符合预期的变化,这就是人们所说的指标异常波动,此时需要分析指标出现异常的原因,指标异常波动也是数据分析工作中最常见的分析场景之一。

1.指标波动的几种类型

先来明确指标波动的几种类型。

一次性波动:只在某个时间节点发生波动。一次性上升/下跌背后一般都是短期/突发事件,例如系统更新导致数据统计错误,突发的渠道投放冻结等。

周期性波动:即周期性发生上升/下跌,例如“双11”、周末、节假日等因素。一般业务开展都有周期性,例如考勤工具类App,工作日和周末就是有明显差异。

持续性波动:从某时间点开始,一直出现上升/下降趋势。持续上升/下跌的原因往往都是深层次的,例如用户需求转移、渠道投放长期暂停、大环境等。

以上3种波动对应着不同的严重程度和处理方式。周期性下跌一般都不需要做特殊处理;一次性下跌往往来比较突然,要关注事件的持续性;持续性下跌,特别是不见好转的,持续的时间越长问题越严重,需要重点关注,后两种情况也是人们通常所说的指标异常波动或者指标异动,是需要进一步分析的。

2.指标异动分析的基本思路

下面以“某App的日活显著下降”为例,进行指标异动分析。

第一步:确认数据源的准确性

数据真实是根基。在实际工作中,很多指标异常都是因为数据源出了问题,如客户端埋点出错、服务接口报错请求失败等。因此,开始分析前,要先和产品研发部门确认数据源是否有问题。

第二步:评估指标异常程度及影响

明确以下问题。

①日活究竟下跌了多少?波动幅度是否在合理的范围内?持续的时间是多久?

②相比昨天、上周同一天情况如何?

③确认日活下跌对相关业务方KPI影响的程度?

明确了指标下跌是否是真正的异常,并且有了轻重缓急的判断,下一步就可以进行指标的拆解,建立假设逐个验证,进一步逼近真实原因。

第三步:拆解数据指标

例如,日活=新增用户+老用户留存+流失用户回流,将这些指标进一步拆解如下。

①按新增用户来源渠道拆解:如应用市场、百度搜索等。

②按老用户留存渠道拆解:华为、vivo应用商店等。

③按新老用户登录平台拆解:Android、iOS等。

④按新老用户的区域拆解:天津、北京等。

⑤按新老用户使用版本拆解:新老版本。

⑥按新老用户活跃时间拆解:节假日、周期性等。

⑦按回流用户类型拆解:自然回流、回访干预回流等。

第四步:做出假设,分析验证

初步确定异常发生的问题点后,接下来可以分别考虑“内部—外部”事件因素进行假设和验证。内部—外部事件在一定时间内可能会同时存在,万变不离其宗,我们主要关注数据指标的起点、拐点、终点。

数据指标的起点:数据指标刚下跌时,发生了什么事件,往往起点事件是发生问题的直接原因。

数据指标的拐点:在指标持续下跌过程中,是否某个事件的出现让问题变得更严重,或者开始改善。拐点意味着可以通过运营手段改善指标。

数据指标的终点:当某个事件结束后,指标恢复正常。或当开始某个事件后,指标下跌结束。终点事件的两种形态代表着两种改善指标的方法:等问题自己过去或者主动出击解决问题。

内部事件因素分为用户获取渠道(渠道转化率降低)、产品功能迭代(功能迭代等引起某类用户不满)、运营策略调整(最近新上的运营活动没达成目标)、突发技术故障(突发的产品技术问题导致产品使用故障)。

遵循短期变化找内因、长期异动找外因的原则。结合业务经验确定几个最可能的假设,并给出假设的优先级,通过数据逐一排查验证,最终定位到原因。

第五步:预测趋势

定位到原因后,还要预测指标接下来的走势,下跌会持续到什么时间,最坏能下跌到何种程度。将以上分析结论反馈给业务方后,探讨解决方案,并落地执行,最终解决该问题。

3.指标异动分析案例:用ChatGPT分析某App的日活异常下降

以下是使用ChatGPT Prompt来逐步完成某App日活(DAU)异常下降分析的案例。根据上面的指标异动分析思路,我们将一步步通过Prompt,生成每个环节的Python分析代码示例。注意:ChatGPT输出的代码仅为示例,重在展示该分析方法的实操过程,以加深大家对该方法的理解,大家可根据实际的业务场景修改后使用。

案例:某App的日活用户(DAU)在过去一周出现了显著下降,需要通过数据分析确认问题的根源,评估影响,并提出解决方案。

第一步:确认数据源的准确性

Prompt示例:“请检查以下日志和数据源,确认是否存在数据埋点错误或接口请求失败的情况。”

ChatGPT输出的代码如下,仅供示意参考。

     Python
     # 读取数据日志import pandas as pd
     log_data = pd.read_csv('log_data.csv')

     # 检查是否有接口请求失败的记录
     failed_requests = log_data[log_data['status_code'] != 200]
     print("失败的接口请求:\n", failed_requests)

     # 检查埋点错误
     missing_events = log_data[log_data['event'].isnull()]
     print("缺失的事件记录:\n", missing_events)

解释:通过此步骤,确认是否有指标异动是由技术层面(如埋点错误或接口失败)导致的。若数据源无误,进入下一步分析。

第二步:评估指标异常程度及影响

Prompt示例:“请生成Python代码,计算本周与上周同期的日活下降幅度,并检查日活下降的持续时间。”

ChatGPT输出的代码如下,仅供示意参考。

     Python
     # 读取日活数据
     dau_data = pd.read_csv('dau_data.csv')

     # 计算环比下降幅度
     dau_data['dau_change'] = dau_data['dau'].pct_change() * 100      #找出持续下降的天数
     dau_data['is_decline'] = dau_data['dau_change'] < 0
     continuous_decline_days = dau_data['is_decline'].cumsum().max()

     print(f"持续下降天数:{continuous_decline_days} 天")
     print("每日环比变化:\n", dau_data[['date', 'dau_change']])

解释:通过计算环比变化和持续下降天数,初步判断指标下降是否超出了合理范围,并明确其严重程度。

第三步:拆解数据指标

Prompt示例:“请将日活用户数据按新增用户、老用户留存和流失用户回流拆解,并分别按渠道、平台和地区进一步细化。”

ChatGPT输出的代码如下,仅供示意参考。

     Python
     # 读取用户数据
     user_data = pd.read_csv('user_data.csv')

     # 拆解用户数据
     new_users = user_data[user_data['user_type'] == 'new']
     retained_users = user_data[user_data['user_type'] == 'retained']
     returned_users = user_data[user_data['user_type'] == 'returned']

     # 分别按渠道、平台和地区拆解
     channel_analysis = new_users.groupby('channel')['user_id'].count()
     platform_analysis = retained_users.groupby('platform')['user_id'].count()
     region_analysis = returned_users.groupby('region')['user_id'].count()

     print("按渠道拆解:\n", channel_analysis)
     print("按平台拆解:\n", platform_analysis)
     print("按地区拆解:\n", region_analysis)

解释:通过拆解指标,能够明确是哪一部分用户(新增、老用户、回流用户)导致了日活下降,并进一步分析问题的来源。

第四步:做出假设,分析验证

Prompt示例:“请生成Python代码,结合运营活动、产品功能和渠道数据,验证以下假设:‘是否某运营活动或渠道的变动导致了日活下降’。”

ChatGPT输出的代码如下,仅供示意参考。

     Python
     # 读取运营活动数据
     events_data = pd.read_csv('events_data.csv')

     # 检查活动期间的DAU
     event_dau = events_data.merge(dau_data, on='date')
     print("活动期间的DAU:\n", event_dau)

     # 读取渠道转化数据
     channel_data = pd.read_csv('channel_data.csv')
     channel_performance = channel_data.groupby('channel')['conversion_rate'].mean()

     # 检查转化率的变化
     conversion_drop = channel_performance[channel_performance < 0.05]
     print("转化率下降的渠道:\n", conversion_drop)

解释:通过分析运营活动数据和渠道转化率,验证是否有活动或渠道的变动导致了日活下降。

第五步:预测趋势,提出解决方案

Prompt示例:“请基于当前数据预测未来一周的日活趋势,并生成Python代码进行预测分析。”

ChatGPT输出的代码如下,仅供示意参考。

     Python
     from statsmodels.tsa.holtwinters import ExponentialSmoothing

     # 使用霍尔特-温特斯法进行趋势预测
     model = ExponentialSmoothing(dau_data['dau'], trend='add', seasonal=None)
     fit_model = modelfit()

     # 预测未来7天的DAU
     forecast = fit_modelforecast(7)
     print("未来7天的DAU预测:\n", forecast)

解释:通过趋势预测,可以判断指标的下降是否会持续,并提出应对策略。

4.小结

数据指标异常波动的分析框架如下。

第一步:确认数据源的准确性;

第二步:评估指标异常程度及影响;

第三步:拆解数据指标;

第四步:做出假设,分析验证;

第五步:预测趋势。

在实际业务中,指标异常波动类问题比较常见,而且原因可能是多方面的,这就需要大家在平时工作中多留意数据变化,随着对业务的熟悉和数据敏感度的提升,对数据的异常分析也会越来越熟练,更快地找到问题所在。 /NNH4Dmanm0LcZAeHEMyju9SlNrDFPhKH0DKCT+Ud4f0Ee+eNOVKFi3Jna8Wb7Py

点击中间区域
呼出菜单
上一章
目录
下一章
×