网站KPI的质量控制

——数据的上下文2

KPI-Quality-Control  前面的一篇文章——时间序列的趋势分析主要介绍的是通过同比和环比的方法为指标设置数据上下文(Context),从而观察和分析各指标在时间序列上的变化趋势,我的建议是在网站的目标指标(Goal)中使用这类方法。所以这篇文章就紧接着上一篇的专题,还是针对内部基准线(Internal Benchmark)的设定,主要解决的是网站关键绩效指标(KPI)的数据上下文的设置,推荐使用的分析工具是——质量控制图

为什么将质量控制图用于KPI

  需要明确一个工具可以用于何处,首先必须了解这个工具,所以概念和用处必不可少,这个可以直接参考质量控制图文章中的介绍,这里简单整理出几条适合于使用质量控制图的指标的前提条件:

  • 指标能够体现产品或功能的质量情况;
  • 指标能够持续地被观察测量,并且可以被量化,即从统计角度有足够的样本容量;
  • 在正常情况下,指标的变化趋势保持恒定,不是持续上涨或下降,也不会经常出现大幅波动,即符合正态分布。

  根据上述的适用条件,应该能够大概明白为什么要用控制图来作为网站KPI的参照设置标准,KPI是衡量网站的质量和表现的指标,在正常情况下,KPI可以保持稳定的趋势,不会出现大幅的波动。这跟网站的目标指标存在差异,一个运营良好的网站,它的目标(如收益)应该是保持稳定增长状态,而不是保持恒定,而它的KPI(如转化率)则应该保持恒定的趋势,除非受到了特定因素的影响或者网站做出了更改和变动。所以KPI指标的特点都符合使用质量控制图的条件。

KPI质量控制图的应用

  这里选择最常见的两个网站的KPI指标举例下应用的过程,一个是基于网站转化率(Conversion Rate)的P控制图,另一个是基于平均订单价值(Average Order Value, AOV)的X-MR控制图,这里的数据都以天为单位,选择15天的数据进行举例,数据也都是虚拟的。

转化率的P控制图

  这里以电子商务的交易转化率为例,我们需要获取每天的总访问数和完成交易的访问数,进而相除得到转化率,再根据P控制图的公式计算得到CL、UCL和LCL,为了图表的美观,我选择使用了样本容量取均值,也就是保证UCL和LCL的一致,而不是每天取各自的值,具体的数据见图表,包括15天的数据:

日期 总访问数 成功交易访问数 转化率 CL UCL LCL
2010-12-01 10231 201 1.96% 1.81% 2.16% 1.45%
2010-12-02 12874 229 1.78% 1.81% 2.16% 1.45%
2010-12-03 11229 231 2.06% 1.81% 2.16% 1.45%
2010-12-04 9870 201 2.04% 1.81% 2.16% 1.45%
2010-12-05 11804 237 2.01% 1.81% 2.16% 1.45%
2010-12-06 11652 224 1.92% 1.81% 2.16% 1.45%
2010-12-07 13259 236 1.78% 1.81% 2.16% 1.45%
2010-12-08 11891 167 1.40% 1.81% 2.16% 1.45%
2010-12-09 12876 213 1.65% 1.81% 2.16% 1.45%
2010-12-10 14562 240 1.65% 1.81% 2.16% 1.45%
2010-12-11 12933 259 2.00% 1.81% 2.16% 1.45%
2010-12-12 13548 241 1.78% 1.81% 2.16% 1.45%
2010-12-13 15230 256 1.68% 1.81% 2.16% 1.45%
2010-12-14 13815 276 2.00% 1.81% 2.16% 1.45%
2010-12-15 15766 248 1.57% 1.81% 2.16% 1.45%

  根据表中的数据很容易就可以画出相应的P控制图,见下图(添加了μ±2σ的线):

p-chart-sample

  最后就是根据控制图寻找数据可能存在的异常并找到发生异常的原因,根据上图比对控制图的控制规则,可以发现这15天的数据存在2个地方的异常:

  1. 12月8日的数据低于LCL,表现异常;
  2. 12月3日到12月8日的数据连续6天呈下降趋势,存在异常。

  到这里,数据层面的工作已经结束了,但接下去这一步却至关重要,就是分析发生异常的原因,这里抓住两个点:从12月3日开始数据呈下降趋势,12月8日到达低谷,之后开始反弹。那么我们可以知道很可能在12月3号的时候网站内部的调整或外部事件导致了数据异常的发生,并且持续到了12月8日,同时通过分析12月8日低谷的细分数据进一步明确到底是哪一块出现了问题,并做出及时的响应和调整,避免类似事件的再次发生。

订单均价的X-MR控制图

  还是电子商务的KPI——平均订单价值,即所有成交订单的总价值除以订单数,当网站运营的产品没有做出大幅调整时,一般这个指标是保持恒定的,并且因为是均值所以每天之差的波动幅度不会很大,所以可以使用均值-移动极差X-MR控制图。

  首先要先计算得到每天的平均订单价值,再通过当天与前一天的值相减计算得到移动极差MR,再根据X-MR控制图的公式计算得到CL、UCL、LCL,见下表(也是15天的数据):

日期 订单均价 MR X_CL X_UCL X_LCL MR_CL MR_UCL MR_LCL
2010-12-01 103.76 12.65 103.48 133.84 73.12 11.41 37.29 0
2010-12-02 129.12 25.36 103.48 133.84 73.12 11.41 37.29 0
2010-12-03 107.30 21.82 103.48 133.84 73.12 11.41 37.29 0
2010-12-04 97.45 9.85 103.48 133.84 73.12 11.41 37.29 0
2010-12-05 105.10 7.65 103.48 133.84 73.12 11.41 37.29 0
2010-12-06 115.78 10.68 103.48 133.84 73.12 11.41 37.29 0
2010-12-07 105.21 10.57 103.48 133.84 73.12 11.41 37.29 0
2010-12-08 98.78 6.43 103.48 133.84 73.12 11.41 37.29 0
2010-12-09 101.74 2.96 103.48 133.84 73.12 11.41 37.29 0
2010-12-10 96.53 5.21 103.48 133.84 73.12 11.41 37.29 0
2010-12-11 97.99 1.46 103.48 133.84 73.12 11.41 37.29 0
2010-12-12 114.20 16.21 103.48 133.84 73.12 11.41 37.29 0
2010-12-13 116.18 1.98 103.48 133.84 73.12 11.41 37.29 0
2010-12-14 80.29 35.89 103.48 133.84 73.12 11.41 37.29 0
2010-12-15 82.76 2.47 103.48 133.84 73.12 11.41 37.29 0

  X-MR控制图产生两张图,一张是均值X的控制图,另一张是移动极差MR的控制图,先是均值的(也包含了μ±2σ的线):

X-MR-chart-sample1

  再来一张移动极差的控制图:

X-MR-chart-sample2

  同样,还有最重要的一步,就是发现数据的异常和寻找异常发生的原因。首先来看均值控制图,比对控制规则可以发现最近3天中两天的数据都在μ-2σ线以下,这给了我们一个很好的预警信号——数据有变坏的趋势,我们需要去寻找原因并做出快速的响应和调整了;再看移动极差控制图,也有一个异常的规律——连续8个点在中心线以下,为什么?这段时间数据的波动极其平滑,或者相对的说明时间段的两端波动较大,是什么导致了这种异常的波动趋势?这些都需要从业务角度或者外部因素中去寻找原因。所以数据分析师不仅仅是计算和展现数据,更重要的是基于数据的分析,寻找数据背后的影响因素和数据变化的原因。

  上面就是我的两个应用,对于质量控制图,你是不是还能想到更加有创意的应用方案,欢迎跟我交流评论。这篇文章就作为2010年的收尾,祝大家新年快乐,希望2011能给大家带来更多的新意和惊喜,我的博客也会在新的一年里不断地向大家奉上更加精彩的内容,希望能跟大家一起不断地学习进步。

网站KPI的质量控制》上有 30 条评论

  1. Pingback 引用通告: 网站KPI的质量控制 ‹‹ 网客设计

  2. 冰越

    经常来拜读您的博客,我是学数学出身,现在从事网站分析工作,每次都会从您的博客里产生灵感,实践在我的方案里,受益匪浅!

    回复
  3. joegh 文章作者

    @冰越: 很高兴博客里面的内容对你有用,希望能把你的实践方案的应用效果跟大家一起分享,我非常期待看到这些分析方法在其他网站或者其他领域的应用实例。

    回复
  4. 冰越

    博主,您好!我看过您写的数据仓库的元数据管理、数据仓库的基本架构以及多维数据模型,我们准备搭建一套数据仓库,想跟您了解最开始我们应该做什么?我的邮箱是yanrh311@163.com,希望能得到一些关于这方面的资料,非常感谢!

    回复
  5. 冰越

    我们现在在做一套监控体系,需要对报警阀值做订制,看了您的文章,查阅了六西格玛的资料,最后将这个思想写进我的方案里了,用于阀值报警,不知道你觉得这个是不是合适呢,期待您的答复!

    回复
  6. joegh 文章作者

    @冰越: 搭建数据仓库是一个比较大的工程,而且需要持续的维护,需要根据企业的实际情况规划实施,我也只能给点参考意见,可以加我的MSN或者Gtalk,在关于页面里面有。

    回复
  7. joegh 文章作者

    @冰越: 嗯,我们就是用控制图来做的预警,但既然已经有了控制规则,就不需要控制阀值了,除非均值水平偶尔也会出现较大波动。

    回复
  8. 冰越

    @joegh: 我会加您的,不过很遗憾,上班时间不能上Q,只能在周末碰运气了,看看能不能碰到你在线交流了。

    回复
  9. fly321283

    非常好的控制图互联网应用实例.

    满足正态分布的指标
    落在[u-3sigma, u+3sigma]之间的概率为 99.7%,
    落在[u-2sigma, u+2sigma]之间的概率为 95.4%,
    落在[u-sigma, u+sigma]之间的概率为 68.3%.
    受你的启发,我也用控制图对网站转化KPI做了相关分析.
    最终感觉到,对互联网而言,KPI若落在[u-sigma, u+sigma]就应该被关注.

    对于这一点,想继续听听你的看法.

    回复
  10. joegh 文章作者

    @fly321283: 嗯,因为这个质量控制最初是用于工业生产的控制,所以对精度的要求相对较要,其实在互联网,指标的波动会相对频繁,所以对控制图的上下限需要根据实际情况进行调节,至于到底是±σ,还是±3σ,抑或±6σ,需要根据指标的特点和实际情况确定。

    回复
  11. Pingback 引用通告: 指标的移动平均 | 够瞧客|进来随便看看|有新段子哦~

  12. Pingback 引用通告: 行走在互联网路上——UE之旅 » 指标的移动平均

  13. Pingback 引用通告: 徳博 » 指标的移动平均[zt]

  14. 粗心大意

    转化率的P控制图中:
    p=CL=1.81%
    1-p=1-CL=98.19%
    p*(1-p)/15=0.1184826%
    σ=0.1184826%开根号=0.03442
    3*σ=0.10326
    则UCL=1.9132%
    LCL=1.7067%

    而2.16%和1.45%哪来的?

    回复
  15. Pingback 引用通告: 分析的前提—数据质量1 | 行走在互联网路上

  16. Pingback 引用通告: R语言与数据挖掘 » Blog Archive » 质量控制图[转载]

  17. Pingback 引用通告: 网站关键指标背后的秘密 | 钛媒体网

  18. Pingback 引用通告: 网站关键指标背后的秘密 - 科技辣

  19. weiwei

    您好,我们买了您的数正在看,东西确实非常实用,很感谢您的分享!但是有一个问题,到了质量控制图这里,您书里面写的UCL和LCL的算法中的加减3西格玛,但是西格玛的算法是根号下p(1-p)/n,可事实上满足二项分布的比率的标准差是根号下np(1-p)吗?请问这里是有问题吗?

    回复
  20. weiwei

    另外就是您在表格中列出的转化率的UCL和LCL的样本容量是15吗?我现在算出来的上限和下限都不准,也不知道该用标准差的那个公式?是/n还是*n呢???还要麻烦您告知一下了??

    回复
  21. weiwei

    @粗心大意: 是的呀,按照给的公式P(1-P)/n开根号,算出来的就是12%多。。。。。应该是哪个公式呀??网上的二项分布的标准差是np(1-p)开根号呢。。。。

    回复
  22. joegh 文章作者

    @weiwei: 应该是对样本量的理解有误,转化事件是满足二项分布的,即仅存在转化和未转化,这个是对于每个访问而言的,所以样本量应该是每天的总访问数,这里使用的n均值,也就是15天总访问量的均值。

    回复

joegh 进行回复 取消回复

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>