标签归档:趋势分析

指标的移动平均

——数据的上下文3

Moving-average  接着之前数据上下文(Context)的话题继续探讨网站分析中可以设立的数据意境。数据上下文2中的网站质量控制图为网站的KPI指标给出了有效的监控体系,但质量控制图毕竟比较严谨,其实对于大部分互联网环境的指标而言,可能并不符合这么苛刻的条件,于是我们需要寻找另外的方法来监控和观察这些指标的变化趋势。

  同样是基于时间序列的分析,前面的文章——时间序列的趋势分析中主要介绍了“同比”和“环比”的概念,这里在介绍一种方法——移动平均法。其实移动平均线应用最多的是在股市,5日、10日、30日均线都是用移动平均法计算得到的;而移动平均线也是Excel中的趋势线的一种类型。所以移动平均法最常见的用法就是对于趋势变化的观察分析,但同时也具备了预测和比较监控的功能。下面介绍两个最简单常用的移动平均法:简单移动平均法(Simple Moving Average)和加权移动平均法(Weighted Moving Average)。

移动平均的适用条件

  移动平均(Moving Average)是一种简单平滑预测技术,通过在时间序列上逐项推移取一定项数的均值的方法来表现指标的长期变化和发展趋势。因为取的是一定项数的均值,所以使用移动平均的指标需要满足以下几个条件:

  • 指标没有明显的快速增长或下降的趋向
  • 指标不具备周期性波动的特征

  移动平均的最重要目的是消除指标的随机波动,如果指标不满足以上的两个条件,可能移动均值的平滑能力无法对指标做出准确的预测,那么移动平均也就失去了它的效用。移动均值主要基于对历史数据的平滑来预测实际数据,所以一方面对于历史数据过度依赖,另一方面对于现实的变动不够敏感,尤其是在使用多期均值时,这也是移动均值的两个缺点。

简单移动平均法

  简单移动平均(Simple moving average, SMA),将时间序列上前n个数值做简单的算术平均。假设用X1到Xn来表示指标在时间序列上前n期中每一期的实际值,那么第n+1期的预测值可以用以下公式来计算得到:

Xn+1 = ( X1 + X2 + …… + Xn ) / n

  在Oracle数据库可以使用开窗函数直接计算得到简单移动平均值,比如要从每天的销售表(sales)计算近10天销售额(amount)的移动平均数与每天的销售额进行比较,可以用如下的PL/SQL实现:

SELECT date_id “日期”,SUM(amout) “每天销售额”,AVG(SUM(amount)) OVER(ORDER BY date_id ROWS BETWEEN 10 PROCEDING AND CURRENT ROW) “销售额移动均值” FROM sales GROUP BY date_id ORDER BY date_id;

  Oracle内置了一堆的分析函数可以调用,直接用于各类的聚合和分析指标的计算,非常方便。

加权移动平均法

  加权移动平均(Weighted moving average, WMA),在基于简单移动平均的基础上,对时间序列上前n期的每一期数值赋予相应的权重,即加权平均的结果。基本思想是:提升近期的数据、减弱远期数据对当前预测值的影响,使预测值更贴近最近的变化趋势。我们用Wn来表示每一期的权重,加权移动平均的计算公式如下:

Xn+1 = W1×X1 + W2×X2 + …… + Wn×Xn

  这里需要满足W1+W2+……+Wn=1,对于各权重的确定,可以使用经验法根据需要进行赋权:如果希望预期值受前几期数据的影响逐步加深,则可以赋予递增的权重,如0.1,0.2,0.3……;如果希望加深最近期的几个数值的影响,以反映最近的变化,则可以适当加大近1-2期的权重,根据适应实际情况结合测试来完成赋权。我们来比较下简单移动平均(下图SMA线,取近5期均值)和加权移动平均(下图WMA线,取近5期加权均值,权重依次为0.1, 0.1, 0.2, 0.3, 0.3):

SMA_WMA

  可以看到无论是简单均值线还是加权均值线都要比实际值的波动小了很多,也就是平滑的效果,更多的是展现一个大体的趋势,而加权平均相较于简单平均的差异就在于加权平均更加注重近期的影响,所以这里的WMA绿线比SMA的红线更贴近前两期的数值趋势。

移动平均实例

  还是结合实际的例子来做下说明。在电子商务数据分析里面,我们最关注的就是每天的销售额,我们用Excel里面的移动平均的趋势图可以反映出指标的变化趋势:

3per_Mov_Avg

——3周期移动平均(虚拟数据)

  上面展现的是移动平均法的用途之一——分析趋势,其实我们也可以用移动平均来进行数据监控和预警

  用移动平均法可以计算得到一个本期的预测值,我们可以将这个预测值作为本期预期可以实现的量,并用这个预期量与实际量进行比较,要分析实际量与预期量之间的差距。还是基于销售额,不过销售额可能存在明显的递增或递减趋势,于是我们除以消费用户数,于是就得到了所谓的ARPU值(Average Revenue Per User),这个是电子商务乃至任何消费型网站的关键指标之一,还是使用简单移动平均来比较实际值和预期值的差异:

ARPU_SMA_diff

——ARPU监控表格效果(虚拟数据)

  表格的数据展现已经可以一目了然的看到实际ARPU值与预期的差异、差异的大小等,下面再结合图表来看一下:

ARPU_SMA_diff_chart

——ARPU监控图表效果(虚拟数据)

  两条比较的折线结合绿涨红跌的蜡烛图,能够对指标的变化情况了如指掌。结合上面的表和图的数据和效果,似乎对于数据的监控变得简单很多,即使是直接的观察也能快速地发现数据的异常,这些方法对于网站的一些关键指标,诸如转化率、人均消费、活跃度等指标的日常监控分析非常实用和有效。

  如果你认为这些表和图对于指标监控还不够,那么就建一套自动的Alert系统吧,就像Google Analytics上面的Intelligence一样,如果指标的降幅或者涨幅超过正常范围(可以设定一个合理的阈值)就向你的邮箱发送报警邮件,这个对于敏感数据的监控异常有效。

  我要介绍的就是这些了,切忌所有的方法和数据的处理都要根据实际的环境、具体的业务和运营状况来进行设定和分析,这里只是我的想法和对移动平均法的简单应用,在不同的环境下也许还可以扩展出许多不同的应用。你是不是也在用类似的方法?欢迎与我分享 :)

网站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能给大家带来更多的新意和惊喜,我的博客也会在新的一年里不断地向大家奉上更加精彩的内容,希望能跟大家一起不断地学习进步。

质量控制图

  其实之前的一篇文章——网站数据分析的基本流程介绍过质量管理(Quality Management, QM)相关的内容,只是介绍的是概念和流程这类比较定性的东西,这篇文章也是跟质量管理相关的内容,但介绍的主要是定量分析相关的工具——质量控制图。

质量控制图的概念与用处

  如果要系统地介绍,可能要从质量管理(Quality Management,QM)开始,从传统的质量管理七工具,到全面质量管理阶段的6σ管理,这里不去展开,只介绍质量控制图。

  质量控制图,简称控制图(Control Chart),是质量管理七工具之一,由美国的贝尔电话实验所的休哈特(W.A.Shewhart)博士在1924年首先提出,因此也称为“休哈特控制图”。最初的应用当然是在生产领域,使用抽样的方式检验产品的质量是否处于控制状态。一般而言,指标的波动受随机因素和系统因素的影响,如果指标只受到随机因素的影响,那么在正常情况下指标的变化状态是稳定的、可控的,但如果发生某种系统性的变化就会使指标超出原先可控的波动范围,处于失控状态,所以控制图就是帮助我们及时发现这种失控状态,从而进行及时的调整。

Control-Chart   质量控制图通过统计上均值μ和标准差σ的状况来衡量指标是否在稳定状态,同时选择3σ来确定一个正常波动的上下限范围(根据正态分布的结论,指标的特征值落在μ±3σ之间的概率是99.73%),使用均值μ作为控制图的中心线(Center Line, CL),用μ+3σ作为控制上限(Upper Control Limit, UCL),用μ-3σ作为控制下限(Lower Control Limit, LCL),如图。

  根据衡量的指标数值类型的差异,质量控制图主要分为两类:计数型控制图计量型控制图,下面分别介绍其中的一种:

质量控制图具体用法

  因为生产制造业和互联网行业存在着较大差异,所以这里只介绍适合用于网站分析的2个控制图。其中计数型控制图中主要介绍P控制图,主要用于定类型变量,即符合二项分布检验“是否”的变量,如用户是否完成交易、用户是否为新用户……这类指标一般会以比率的形式出现,如转化率、新用户比例等,而P控制图正是衡量这些比率是否出现异常(在生产行业通常用于不合格率等);另外的计量型控制图主要用于一些关键的数值度量,如每个订单的消费额、每个用户的下载次数等,这类指标在网站分析中通常计算全部数据的均值来观察波动情况,其实计量型控制图最常用的是均值-极差(X-R)和均值-标准差(X-S)控制图,但两者都是通过取样的方式实现的,并且每次取样的样本数最好能保持相等,所以这类抽样统计不太适合于上述网站分析中的指标,这里介绍个相对能够普遍适用并且计算也没有那么复杂的图——单值-移动极差(X-MR)控制图。下面一个个来,先是P控制图:

P控制图

  根据中心极限定理规律,当二项分布的样本容量足够大时,分布趋向正态N(ρ, ρ(1-ρ)/n)(这里用ρ先暂代下p均值,上横线很难打出来,具体见下面图中公式),所以总体均值μ就是ρ,方差σ2就是ρ(1-ρ)/n,进而就可以计算得到中心线CL、控制上限UCL、控制下限LCL:

p-chart-expression

–pk:每组样本的比例值,nk:每组样本容量

  我在这里使用了UCLk和LCLk,也就是每组样本都有各自的控制上限和控制下面,当然我们也可以跟CL一样使用统一的UCL和LCL,这时n不再使用每组的样本容量,而是使用每组样本容量取均值的结果,只是简单的变换,公式就不贴出来了。

X-MR控制图

  第二类计量型控制图中的单值-移动极差(X-MR)控制图,需要先计算指标的移动极差:MR=|Xi-Xi-1|,即每个数值减去前一个相邻的数据的绝对值,进而计算指标均值和移动极差均值,通过公式转换算出均值X控制图和移动极差MR控制图的CL、UCL、LCL:

x-MR-Chart-expression

–xi、MRi:每个个体的数值和计算得到的极差,k:样本个体数,d2、D3、D4:极差到标准差的转化系数,相当于n=2的极差转化系数,所以在这里可以看作是固定值。

  通过套用上面的公式,可以计算得到相应的CL、UCL、LCL,结合每个特征值就可以画出控制图。因为这篇文章主要基于方法,同时也主要是为下一篇文章作为技术铺垫,所以不具体举例了,具体实例见之后的——网站KPI的质量控制,这里先附上一张维基百科上的质量控制图:

ControlChart-Sample

质量控制图的控制规则

  既然质量控制图是为了帮助我们及时发现指标的不正常状态,那么当我们看到上面的图以后,需要观察和分析是不是存在异常的点或异常的变化趋势,如何定义这些异常,需要有一套控制规则:即样本点出界或者样本点排列异常

  1. 点超出或落在ULC或LCL的界限;(异常)
  2. 近期的3个点中的2个点都高于+2σ或都低于-2σ,近期5个点中的4个点都高于+σ或都低于-σ;(有出现异常的趋势)
  3. 连续的8个点高于中心线或低于中心线;(有偏向性)
  4. 连续的6个点呈上升或者下降趋势;(有明显的偏向趋势)
  5. 连续的14个点在中心线上下呈交替状态。(周期性,不稳定)

  查资料时发现不同的地方对控制规则有不同的定义,我这里参照的是SPSS里面的规则,具体应该可以根据实际的应用环境进行调整。

  看到这里,你是不是会发现质量控制图其实很有用,结合图比对这些规则后能够很快地发现指标的异常和可能产生的异常,一目了然。具体应用会在近几天内一并奉上,请继续关注。

时间序列的趋势分析

——数据的上下文1

solar-system   无论是网站分析工具、BI报表或者数据的报告,我们很难看到数据以孤立的点单独地出现,通常数据是以序列、分组等形式存在,理由其实很简单,我们没法从单一的数据中发现什么,用于分析的数据必须包含上下文(Context)。数据的上下文就像为每个指标设定了一个或者一些参考系,通过这些参照和比较的过程来分析数据的优劣,就像中学物理上的例子,如果我们不以地面作为参照物,我们无法区分火车是静止的还是行进的,朝北开还是朝南开。

  在实际看数据中,我们可能已经在不经意间使用数据的上下文了,趋势分析、比较分析、细分与分布等都是我们在为数据设置合适的参照环境。所以这边通过一个专题——数据的上下文,来总结和整理我们在日常的数据分析中可以使用的数据参考系,前面几篇主要是基于内部基准线(Internal Benchmark)的制定的,后面会涉及外部基准线(External Benchmark)的制定。今天这篇是第一篇,主要介绍基于时间序列的趋势分析,重提下同比和环比,之前在网站新老用户分析这篇文章,已经使用同比和环比举过简单应用的例子。

同比和环比的定义

  定义这个东西在这里还是再唠叨几句,因为不了解定义就无法应用,熟悉的朋友可以跳过。 ;-)

  同比:为了消除数据周期性波动的影响,将本周期内的数据与之前周期中相同时间点的数据进行比较。早期的应用是销售业等受季节等影响较严重,为了消除趋势分析中季节性的影响,引入了同比的概念,所以较多地就是当年的季度数据或者月数据与上一年度同期的比较,计算同比增长率。

  环比:反应的是数据连续变化的趋势,将本期的数据与上一周期的数据进行对比。最常见的是这个月的数据与上个月数据的比较,计算环比增长率,因为数据都是与之前最近一个周期的数据比较,所以是用于观察数据持续变化的情况。

  买二送一,再赠送一个概念——定基比(其实是百度百科里附带的 :-P ):将所有的数据都与某个基准线的数据进行对比。通常这个基准线是公司或者产品发展的一个里程碑或者重要数据点,将之后的数据与这个基准线进行比较,从而反映公司在跨越这个重要的是基点后的发展状况。

同比和环比的应用环境

  其实同比、环比没有严格的适用范围或者针对性的应用,一切需要分析在时间序列上的变化情况的数据或者指标都可以使用同比和环比。

  但是我的建议是为网站的目标指标建立同比和环比的数据上下文,如网站的收益、网站的活跃用户数、网站的关键动作数等,这类指标需要明确长期的增长趋势,同比和环比能够为网站整体运营的发展状况提供有力的参考。

  还有个建议就是不要被同比和环比最原始或者最普遍的应用所束缚住:同比就是今年每个月或每季度的数据与去年同期比,环比就是这个月的数据与上个月比。对于方法的应用需要根据实际的应用的环境,进行合理的变通,选择最合适的途径。所以同比和环比不一定以年为周期,也不一定是每月、季度为时间粒度的统计数据,我们可以根据需要选择任意合适的周期,比如你们公司的产品运营是以周、半月、甚至每年的特定几个月为周期循环变动,那完全可以将这些作为同比的周期。

  特别对于互联网这个瞬息万变的环境,常用的年与年之间的同比,以季度或月为粒度的统计可能不再合适,为了适应快速的变化,以月为周期、周为周期的同比,以天为粒度、小时为粒度的统计数据进行环比将变成常见的方式,因为要适应这种快速的变化,我们需要做出更迅速的决策和调整,当然数据要适应这种快速决策的需要。

应用实例

  同比和环比被广泛地应用于各个领域,在Google的图片中搜索同比和环比会有丰富的包含了同比环比的图表显示在你的眼前,所以这里只举个简单的例子:因为很多的互联网产品的数据变化情况会以“周”为周期进行波动(周末会出现明显的上升或者下降趋势),所以这里以一周的数据为例来看下同比和环比的展现效果。还是虚拟数据,为了展示上的需要而临时设定的:

周一 周二 周三 周四 周五 周六 周日
上周收益 113 134 123 145 137 196 187
本周收益 129 122 134 149 146 215 208
同比增长 14.16% -8.96% 8.94% 2.76% 6.57% 9.69% 11.23%
环比增长 -27.88% -5.43% 9.84% 11.19% -2.01% 47.26% -3.26%

time-series-trend-analysis

  从图中可以看出数据在一周中的变化趋势,周中和周末之间存在明显的差异,周末的收益会有明显的上涨,在使用同比的时候需要抓到这类数据的周期性的变化规律,让数据的对比能够更加有效地反映数据的变化。同时在Excel里面可以直接为一组基于时间序列的数据绘制趋势线,正如图中的虚线所示,本周收益在一周中的变化趋势就显得非常明显,这里用的是指数的拟合,Excel的趋势线提供了线性、指数、对数、幂等回归分析的方式,同时也包含多项式和移动平均等趋势分析的方法。

  最后看看我们经常在使用的网站分析工具里面有没有同比和环比的功能呢?这里以Google Analytics和百度统计为例截了两张图,首先看下百度统计登录进去后的网站概况:
Baidu-dashboard-compare

  百度统计默认就为我们提供了一个比较环境,上方表格中是今天与昨天的数据对比及变化情况,还提供了预测的功能;下方的折线图显示的是每小时数据的变化,提供前一天或者上周的同一天(百度可能已经意识到网站大部分会存在以周为变化周期的趋势,所以很多地方都提供了以周为单位的参考数据)的每个整点的数据对照,同时可以选择不同的时间区间和各类指标。再看看Google Analytics的Dashboard:
GA-dashboard-compare

  Google不像百度那样一进去就能看到对照数据,需要我们手工去选择,在时间区间的选择界面提供了“Compare to Past”的勾选按钮,如果默认是近一个月的数据,那么参照数据就是再往前推一个月的每日变化数据,Timeline的选择面板做得非常炫,可以自定义地选择任何有效的时间区间,当然也同样提供不同的参考指标,鼠标移到图中相应日期的点后会显示具体的数据及差异的大小。

  同比和环比是最简单直观的基于时间序列的趋势分析方法,通过观察关键指标的变化情况来洞察网站的发展和运营情况,同时衡量目标的实现程度。所以这篇文章的主题是使用趋势分析的方法来为网站的目标设定数据的上下文,下一篇将主要针对KPI指标进行数据上下文的选择和设定。

网站新老用户分析

New-Returning-Visitors  网站中新老用户的分析已经成为了网站分析中常见的一类用户细分的方法,也是网站分析中用户分析的一个重要组成。Google Analytics中对新老用户的命名分别为New Visitors和Returning Visitors,同时也为许多的分析指标提供了基于新老用户的细分。

  简单地说,新用户就是首次访问网站或者首次使用网站服务的用户;而老用户则是之前访问过网站或者使用过网站服务的用户。无论是新老用户都能为网站带来价值,这也是分析的意义所在。

分析新老用户的意义

  网站的老用户一般都是网站的忠诚用户,有相对较高的粘度,也是为网站带来价值的主要用户群体;而新用户则意味着网站业务的发展,是网站价值不断提升的前提。可以说,老用户是网站生存的基础,新用户是网站发展的动力,所以网站的发展战略往往是在基于保留老用户的基础上不断地提升新用户数。

  所以分析新老用户的意义就在于:通过分析老用户,来确定网站的基础是否稳固,是否存在被淘汰的危机;通过分析新用户,来衡量网站的发展是否顺利,是否有更大的扩展空间。一个着眼现在,一个放眼未来。

新老用户的辨别

  对于网站用户的识别,之前写过一篇相关的文章——网站用户的识别,里面主要是在基于点击流日志的基础上提供的4类识别用户的方法,可以作为参考。但对于新老用户的辨别可能根据网站自身的特定而有不同的定义方法。

  最常见的一种辨别新老用户的方式就是看该用户之前是否访问过网站,也就是以用户是否首次访问来区分,GA就是使用Cookie来定义新老用户的,即该Cookie之前出现过则该访客为老用户,否则为新用户。这个定义适用于所有网站,但有它不准确的地方,Cookie的删除、用户更换PC等都会造成数据上的偏差。

  另一种辨别方式相对准确,但一般只适用于注册登录型网站,即定义首次注册登录的用户为新用户,再次登录的用户为老用户,而不是使用首次访问来辨别。这种区分方式一般以用户ID或用户名来辨别,相对准确,但应用的范围有限。

新老用户分析

  网站的目标在于保持老用户,拓展新用户,那么对于网站数据分析上的表现,则是在保持老用户数量的稳定增长的前提下,提升新用户的所占比例

  对于大部分发展正常的网站而言,网站的老用户数应该是保持相对稳定的,并且会有持续的小幅上涨,可以看一下GA上我的博客每周老用户数的趋势变化:

returning-visitors-trend

  可以通过GA的Dashboard上的Advanced Segments选择Returning Visitors,并选择合适的时间区间和汇总粒度(日、周、月)显示趋势变化曲线。这条平滑的上升曲线说明网站的发展是趋于正常的。

  但并不是所有网站的老用户趋势都会如此的平滑,比如旅游网站,旅游业会明显地受到季节的影响呈现比较大的波动,所以这里要引入同比环比的概念进行分析。

同比指的是为了消除季节变动的影响,将本期的数据与去年同期的数据进行比较,比如今年2月的数据与去年2月数据的比较;

环比指的是将本期的数据与前期的数据进行比较,可以是日环比、月环比、周环比等,例如今年2月与今年1月的数据比较。

  同比和环比被大量地应用于基于时间序列的趋势分析中,对于网站而言,访问量、销售额、利润等网站关键指标同样可以引用同比和环比进行分析,对于分析这些指标的变化趋势,消除季节的影响等都是有积极的效果。下面是一张基于同比和环比的旅游类网站老用户数据模拟趋势分析图:

returning-visitors-tb-hb

  从图上可以看出由于季节的影响,老用户数的波动比较大,所以相应的环比增长的波动也很大,但同比增长的趋势却相对平滑,一直保持在10%左右的增长率上面,这就可以看出网站对保持老用户是有效的,网站的运营状况较为稳定。

  可能有人会问,为什么要用绝对数量,而不是用相对数量,比如老用户占总访问用户的比例来进行趋势分析?这里主要考虑到网站会不定期的进行主动地推广营销,或者由于某些事件或媒体传播的影响而产生的被动推广的效果,这个时候可能会吸引大量的新用户进入网站而导致老用户比例的急剧下滑,而老用户的绝对数据对于网站而言相对稳定,更具参考价值。

  新用户的绝对数量并没有老用户这么稳定,也不一定会保持增长的态势,而对于新用户的分析主要是为了衡量网站推广的效果,评估上述主动营销或被动事件带来的影响,所以不建议使用绝对数值,既然老用户相对稳定,那么就可以基于新用户比例的变化趋势来分析网站某段时间的推广效果。GA的Benchmarking中提供的也是New Visits所占比例与其他网站基准线的趋势比较:

new-visits-trend

  往往曲线中某个时间点的大幅上升或下降都意味着某个营销事件的影响,而当曲线持续下降时就意味着网站推广效果的不利,需要增大推广的力度。

  如果你有关于网站新老用户分析更好的见解,欢迎评论。

用户任务完成度分析

wow_tasks  欢迎来到艾泽拉斯大陆……如果你玩过魔兽世界,也许你在里面完成过无数个任务;当用户在访问网站时,其实他们也在试图完成某些特定的任务。

  也许大家都比较熟悉网站目标(Goal),因为很多网站分析工具都提供了基于目标的分析,网站目标更多地是从网站的角度去定义的,比如电子商务网站的目标就是促成有效的交易;而用户任务(Task)则是从用户的角度去定义的,用户会有自己的目标,比如用户上电子商务网站可能只是为了查询某些商品的信息,询价,或者只是单纯的逛逛。所以每个用户带着自己的任务访问网站,这些任务可能各不相同,这无疑给分析带来了一定的难度。

关于任务完成度的定义

  其实跟前面一篇文章——用Engagement衡量用户活跃度中的Engagement度量类似,用户任务也是一个非标准度量,而且根据网站的不同和用户访问目的的不同而显得千差万别。但用户任务完成度(Task Completion)与Engagement也存在着差异,Engagement定义的是用户的行为或动作,只要发生我们就认为用户参与了;而任务完成度定义的是结果,只有当用户的某个需求被实现时(如购买成功、获取到了相关信息、通过网站解决了某个问题……)才能认为用户完成了任务。

  用户的Engagement不会直接影响网站目标,那么用户的任务完成度是否会对网站目标有直接影响呢?如果说网站目标(Goals)是从网站的角度衡量网站的商业目的(Business Objectives)是否实现的话,那么任务完成度(Task Completion)则是从用户的角度衡量用户的期望(User Expectation)是否达到。所以只有当网站目标与用户的任务一致时,我们才能认为用户任务完成度会对网站目标产生直接影响,因为两者衡量的都是结果,所以这种直接的影响有些时候甚至是可以划等号的。

  既然用户访问网站的目的各不相同,每个人都带着各自的任务,那么我们如何获悉用户访问网站到底是来做什么的呢?

如何获取用户的任务信息

  用户任务是一个非标准度量,并且是由用户自己决定的,我们似乎无法从点击流日志的用户行为分析中辨认用户到底是以什么样目的访问网站,我们需要直接向用户寻求答案。

  前几天在Justin Cutroni的博客Analytics Talk看到了一个有意思的在线问卷调查,其实就是简单的2-3个问题,关于你为何来到这个网站,你完成了预期的任务吗,以及你对这次网站浏览的满意度如何,最后再加上一个可以自由填写的反馈,Justin Cutroni使用的是http://www.4qsurvey.com/这个网站提供的在线问卷服务,好像蓝鲸的博客也提供了在线问卷,他使用的是http://polldaddy.com/,还有一个提供反馈的功能http://www.kampyle.com/。其实这些都是收集用户信息的好办法,通过调查问卷(Survey)的方式让用户来告诉你答案。

  如果我们需要分析用户的任务完成度,可以设计一个简单的在线问卷,提供在线问卷调查的网站很多,国内的国外的、免费的收费的,其实操作都比较简单,但首先我们需要注意一下几个问题:

  1. 什么时候向用户提供调查问卷?如果是分析任务完成情况,那么很明显要在用户离开网站的时候;
  2. 以何种方式提供问卷?比较常见的是弹出窗口或跳转链接,但无论用什么方式建议都先礼貌地问下用户是否愿意填写问卷;
  3. 在用户完成问卷时不要忘记感谢用户的支持,或者让用户留下邮箱以告知他们调查分析的结果,这些都是他们应得的,当然也可以借机推广你的网站;
  4. 问卷的设计,这是个复杂的问题,完全可以写本书了,这里只是提供用户任务完成分析的问卷设计,我的建议是如果不是一次全面系统的网站分析问卷调查,那么尽量减少问卷中的问题数量,而且尽量要一开始就告诉用户问卷的长度及可能占用他们多少时间。其实如果只是分析用户任务完成度,3个问题就足够了:

task-completion-survey

分析用户的任务完成度

  基于从问卷调查中获得的数据,我们可以借用一些图表来分析用户的任务完成情况。

  首先,必须明确用户任务也是基于用户在网站上的一次访问(Visit)。一般用户一次访问只是为了完成一个任务,所以对于大部分网站而言,更偏向于衡量一次访问的任务是否完成而不是完成的百分比。所以这里的任务完成度(Task Completion) 的定义并不是每次访问用户完成任务的程度,而是所有的用户访问中完成任务的访问占所有访问的比重,即

任务完成度 = 完成任务的访问数 / 总访问数

  可以基于任务类型进行细分,以电子商务网站为例,假如问卷中的任务选项包括:

  • 购买商品
  • 查询商品信息
  • 售前售后咨询
  • 其它

  根据问卷采集的数据可以得到下图:

task-completion-segment

  基于任务类型的细分,可以分析每类任务的用户访问量所占比例(左侧饼图),以及每类任务的完成情况(右侧柱状图,总高度为每类任务的总访问量,,蓝色区块的高度为完成任务的访问数,可以看出每个任务类型中完成的访问数所占比重)。如果网站中进行的是长期的问卷调查,同样可以对每类任务的完成度进行趋势分析,如下图:

task-completion-trend

  趋势分析可以有效地掌握用户在网站中完成任务的变化情况,进而衡量网站在运营优化上面取得的成果。

  接下来该由你来做些什么了,你可以尝试用你的方法寻找更恰当的图表来展示和分析数据。

用Engagement衡量用户活跃度

engagement  Engagement(参与度)是一个特殊的度量,Avinash认为Engagement不应该作为网站分析的一个度量,它更像是不愿意去寻求衡量网站是否成功的真正指标时使用的一个借口。他列举了Engagement存在的几个缺陷:  

  •  Engagement对于不同网站而言是不同的,它不是一个统一的度量,难以用一个统一的标准去定义它;
  •  Engagement更多的是从定性的角度来定义的,很多用户参与行为不能很好地量化,因此难以准确地度量;
  •  没有一个评判标准,对于一个网站而言用户参与度到底多少算是好;
  •  因为没有标准的定义,存在不固定性,因此不能作为衡量网站整体表现的参考指标。

  所以,我们可以认为Engagement是一个非标准化的度量,但绕开Avinash所提及的那些误区之后,也许Engagement也并非一无是处,至少它可以作为网站自身的分析指标,衡量用户的活跃度。

如何合理地定义Engagement

  如果你要用Engagement来衡量网站用户的活跃度,并且把它作为一个长期的指标进行趋势分析,那么首先在定义时必须确定那些被归为Engagement的行为是相对固定的,在短期内不会发生变化。如对于一个论坛而言,“发帖”和“跟帖”行为是持续不变的交互行为,这些可以作为识别用户是否参与的标准;而网站中的一个活动按钮或推广链接则不能作为识别Engagement的标准,因为推广活动一般是有期限的,在下线后用户的Engagement就会相应的降低,这样就会导致Engagement的不稳定性,也就失去了分析的意义(或者你只是为了单独分析该次推广活动的用户参与度,那另当别论)。

  这里先举两个例子,显示电子商务网站定义Engagement的例子:

  • 用户的注册行为;
  • 用户放入购物车或购买行为;
  • 用户的售前和售后的反馈行为;
  • 用户对商品的评价。

  再来看一下微博中可以定义为Engagement的一些行为:

  • 用户注册行为;
  • 发布新微博或转发微博;
  • 发表对微博评论;
  • 关注新的用户。

non-standard  可以看到电子商务网站的Engagement的定义与微博大相径庭,这也是为什么说Engagement是一个非标准化的度量的原因,网站间无法比较各自Engagement的优劣。所以Engagement应该作为网站内部分析指标,只用于衡量网站本身用户的活跃度变化趋势。

  即使是一个网站的Engagement也有不同的定义方法,比如我也可以在微博的Engagement定义中加入“收藏微博”的动作,所以我的建议是对于Engagement的定义,一个网站应该在一开始就形成一个标准,如果网站的性质没有发生大的变化就不要轻易修改定义,不然即使是作为网站自身的评价指标,它也不能很好的发挥作用。

  需要注意的是,Engagement只是用户的一系列动作或行为(Actions),并非网站的产出结果(Outcomes)。只能用于衡量网站用户活动的频繁度,进而分析网站用户近期的活跃程度,而不能用于衡量网站的效益

基于Engagement Index的分析

  这里首先推荐一篇Eric T. Peterson在Web Analytics Demystified上的文章——How do you calculate engagement? ,里面提供了关于Engagement的十分全面和精彩的分析。

  分析最好结合实例,所以这里还是以我的博客为例,假如我定义我的博客的Engagement包括以下的行为:

  1. 用户发表评论;
  2. 收藏或分享我的文章;
  3. 订阅我的博客或关注我;
  4. 停留时间(Time on site)超过3分钟。

  首先涉及到数据获取的问题,其实通过点击流+事件追踪,大部分用户的行为还是可以跟踪得到的,这里就不再详细展开了。

  接下去就是如何衡量Engagement。衡量Engagement的指标叫做参与度指数(Engagement Index),既然我们已经定义好了Engagement,我们就可以通过一些方法计算Engagement Index。这里建议Visit(或者叫Session)为单位计算用户一次访问是否Engaged,而不是计算每个Visit中Engage的次数,因为我们无法对某些行为精确定量它的次数,也许发表评论数可以计算次数,但是停留时间的长短就无法用次数来衡量,所以这里统一只判断一个Visit是否发生了上述的任何一类行为,发生则认为这次访问为Engaged,我们可以用一段形象的代码来解释:

boolean isEngaged(Visit) {
         if ( comment || share || feed || follow || time_on_site>=3min )
                  return true;
         else
                  return false; }

  通过调用上面的“函数”我们可以获取到哪些Visits是Engaged Visits,就可以计算出总的Engaged Visits的数量就是Engagement Index的值。但是单纯的一个Engagement Index似乎没有对比的价值,我们可以通过计算跟网站总Visits的比值获取用户的参与率(Engagement Rate)

Engagement Rate = Engaged Visits / All Visits

  也可以用下图来对比Engaged Visits与总Visits的关系:

engaged-visits

  也可以分析定义Engagement中各类行为发生的比率:

engaged-visits-piechart

  这里需要注意的是这个饼图中Visits的总和并非上面计算得到的Engagement Index,因为一个Visit可能既发表了评论,也订阅的博客,那么这个Visit就会被重复记录到两种行为的比例中。根据Engagement进行细分来源的的分析上面推荐的Eric T. Peterson的文章中已经介绍的非常详细,有兴趣的朋友可以自己去看下。

  如果你觉得还意犹未竟,认为那些用户参与的行为并非同等重要的,或许那些订阅了博客的用户或者在博客发表了评论的用户应该显得更加活跃,那么可以给这些行为赋予不同的权重,Sidney的博客中有过相关的介绍——网站分析的最基本度量(8)——Engagement,如果你想让权重显得更加客观和精确,可以使用我之前介绍过的层次分析法(AHP)来计算每个行为的权重,那么Engagement Index就是相应的加权和(定义每个Engaged Visits的数量为Ei,每个Engagement行为的权重为Wi):

engagement-index-wtd

分析Engagement的意义

  有时我们需要细分,而有时我们需要将指标进行聚合来评价总体表现。所以建议不要试图使用次数去计算每个Visit的Engagement Index是多少,次数会由于网站设计上的变化(页面布局、交互按钮的设计等方面的变化)及行为实现的多样性(如果你要发条微博,那实现的途径太多了)而呈现不稳定状态,使用Visits来度量的Engagement更具可比性,最总我们只是进行汇总来衡量整个网站的Engagement情况。

  那么Engagement对于网站来说到底有什么用呢?这里有个最简单的例子,当一个电子商务网站发现近几天的订单量并无发生显著的变化,但是用户活跃度却大幅上升,原因是某款商品的质量存在问题,大量的用户向网站反馈和抱怨,这时如果网站通过分析Engagement监控着用户的活跃度,那么就可以迅速地发现并作出反应。其实这个例子也说明了对于某些网站来说Engagement越高,网站的绩效不一定越好,两者没有直接的联系。

  我们已经步入WEB2.0的时代,用户与网站间的交互更加频繁,网站需要更多活跃用户来增加自身的活力,用户的参与有效地提升了网站与用户之间的信息互通,为网站带来活力的同时也为网站创造着更多的信息,而且很多都是网站本身忽略的或者无法提供的有价值信息,而这些“用户智慧”的注入无疑可以为网站带来更多的关注。

你找到答案了吗?

unlock  博客自发布第一篇文章以来,到今天刚好有一个月时间了,所以这里对开篇中提出的几个问题做一个解答,如果你还没有阅读过该文章,建议先阅读开篇

  也许很多朋友已经找到了答案,也有可能你们的解答与我下面的描述会有差异,当然只要都能解释问题,符合问题的条件,一切答案都是可以被接受的,问题的答案可能并非唯一的。其实这些问题只是想对网站数据分析做一些简单的解释,阐述作者个人对网站数据分析的一些认识,同时让这个过程更具趣味性。

1、趋势分析与预测

  从表面看,寻找数字规律中的这串数字可能毫无规律,但只要把它们放到图表上,你就会惊奇地发现它们呈一条完美的曲线排列了起来:

digits-trend

  这是在excel里面以1-20的序列为横坐标,以那串20个数字为纵坐标一一对应画出的散点图,可以看到这是一条比较规范的类S型曲线,也是最典型的一类成长曲线,也许你的网站的用户访问量或者销售额正是以类似这种趋势增长的。发现这种规律之后,就可以用数据统计的方法对其进行分析,对于这类有规律线性曲线,最常用的方法就是回归分析:

  首先可以根据S曲线确定其基本表达式为:

            S-function1S-function2

  表达式因为包含三个未知参数,无法直接通过回归分析求得,所以首先需要根据S曲线的特征和已知的数字观察到曲线无限接近于100,可以先暂定α的值为0.01,则该表达式变为:

S-function-converted

  可以将其转化为线性表达式:

linear-function

            其中y*=ln(1/y-0.01); x*=x; α*=lnβ; β*=-θ

  然后就可以用标准一元线性回归的方法进行拟合和分析,计算得到拟合度R2=0.998,显著性系数接近于0,拟合度非常高,结果可以被接受。算出α和β的值约为0.7381和-0.5066,代入原方程得到:

S-function-result

  再根据改方程当x=9是代入,得y约为31.35,预测得到那个缺失的数字约为31。

  当然这可能只是其中一种分析和预测的方法,如果可以找到另外的拟合度足够高的表达式,那么用该表达式预测得到的数字一样有效,答案并非唯一的。这个题目是作者自己编的,自然计算得到的拟合度十分理想,在现实中可能并没有这么完美的曲线存在,但只要用类似的方法去思考和分析,一样也能找到需要的答案。

  这里已经完成了对该题的解释,想顺带说一下成长曲线。大家都知道成长曲线存在着无法达到的极值,获取对于生物界来说该曲线确实是无法突破的,那么对已企业或者网站来说类似的流量增长曲线或者利润增长曲线是否可以被突破呢?答案是肯定的。任何失误的发展都会遇到瓶颈,网站也是这样,关键是如何发现和认识自身的瓶颈,只有真正地了解自身的问题,才能通过不断地优化、创新和市场拓展突破瓶颈,当瓶颈一旦被突破,原先无法逾越的极值点将变成新成长曲线的起始点继续向上攀升,而数据分析正是网站发现瓶颈的最有力武器。

2、识别用户

  关于那道逻辑题,也许很多朋友已经发现这个就是根据爱因斯坦的那题经典的逻辑题改编而来的,答案如下:

次序  A B D E C
穿着 
城市  广州 青岛 北京 上海 杭州
职业  律师 工程师 教授 医生 作家
饮料 牛奶 咖啡 啤酒

  其实对于网站分析来说,识别用户是极其重要的一个过程,网站分析中有一个重要的指标——Unique Visitor(UV),用以标识唯一的访问用户,而如何从网站的底层日志中识别每次访问是否是同一用户一直是网站分析中的一个难点,因为某些时候用户访问是未登录的,或是匿名的,甚至连cookie都是被禁用的。而对于网站分析来说,识别唯一用户又是十分有用的,它直接影响到针对每个用户的网站行为分析、用户细分及定向营销等多个方面,所以之后会有专门的对如何更好地识别网站用户的相关介绍。

3、学会细分

  细分是网站分析中一个十分重要的技巧和方法,无论是用户、产品、页面等都可以通过细分更好地发现其特征。其实图形题中的两个问题正是细分中的两种基本的方法:一种是已知类别,将类别未明的事物归类;另一种是已知存在这么多的事物,将这些食物分成若干类,我对这两个问题的解答如下(当然这个答案并非唯一,只要归类有所依据的答案都是可以被接受的):

  1)先观察2、4、8三个图形所拥有的相同特征:4条边、左右对称、上下对称、重心在同一水平线上、序号都是偶数,根据这些特征去寻找共同特征最多的图形,可以看到6号的圆形是最为接近的:左右对称、上下对称、重心在同一水平线上、序号都是偶数,所以我的答案是选择6号的圆形;

  2)与第一题类似,从所有的图形中选择拥有最多共同特征的归为一类,并使各类别间的特征差异最大,我是从这几个角度进行区分的:边数、轴对称、中心对称、重心分布、序号,分成四类如下:

    A类:2、4、8(4条边、左右对称、上下对称、重心都在水平中间线、序号都为偶数);

    B类:1、3、5(左右对称、重心都在水平中间线以下、序号都是奇数);

    C类:6(中心对称、任意轴对称、重心在水平中间线);

    D类:7(4条边、中心对称、重心在水平中间线);

  其实这两个问题也是数据挖掘中两个方法的简单体现:

分类

  分类就是把一些新的事物映射到给定类别的中的某一个类别,用于描述事物或预测。常见的分类方法有:决策树、KNN法(K-Nearest Neighbor)、SVM法(Support Vector Machine)、VSM法(Vector Space Model)、神经网络等。

聚类

  聚类就是将数据对象分组成多个类或者簇,划分的原则是在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。聚类算法可以分为划分方法、层次方法、基于密度方法、基于网格方法和基于模型方法。

4、互联网发展趋势

Moshe

  对于最后一个问题,其实大家可以各抒己见,这里也只是作者的个人看法,也许阐述和对比的网站不一定恰当,这里只是想说明作为一个网站分析师,必须时刻关注互联网的发展趋势,而Alexa上面排在TOP前几位的网站正是互联网不断发展和进步的指向标。

  正如前几天有人预测2010年facebook的流量将超越google,成为全球最受欢迎的网站,结果我上Alexa一比较,果然facebook在数据上除了用户量不及google外,几乎所有数据都持平或超越了google,其中页面访问量目前两个网站已不相上下,而网站访问时间facebook甚至已经达到了google的3倍(当然这跟网站本身的服务性质有关);但确实不得不佩服facebook的实力,流量一路飙升,过关斩将,到现在能够觊觎互联网老大的宝座,但是要真正坐上去还得在用户量上超越google。其实很多人看好facebook也不无道理,因为毕竟facebook是信息的创造者,而google只是信息的整合者,创造者掌握着信息的信息竞争力。