计算网页停留时间的平均时长

来源:互联网 发布:sql语句实现分页查询 编辑:程序博客网 时间:2024/05/01 12:06

需求:现在有好多用户访问某个网页的停留时间,要计算平均时长。

求均值是不太合理的,因为有的时间特别的长,这样的时间应该是噪音数据,这样计算的均值感觉就偏大。

我感觉应该先找到事件的分布,然后根据分布计算它的期望。

首先把数据分成几个区间,然后计算每个区间内事件发生的频次:
(参考这个:http://jingyan.baidu.com/article/f3ad7d0fffa41509c2345b6e.html)
这里写图片描述

我首先画出了数据分布的直方图:
这里写图片描述
分布特别不均匀,从累计概率可以看出第一组数据就站了87%。

下面我们只要前87%的数据:
这里写图片描述

这个跟指数分布好像:
这里写图片描述

把这两个叠加到一张图上:
这里写图片描述

假设服从指数分布,指数分布密度函数为p(t)=λeλt,期望为1λ。然后根据极大似然估计得到:λ=nNi=1ti,期望就是:Ni=1tin。呵呵,这就是所有数据的均值啊,兜了一圈又回到了开头啊!看来期望并不能代表停留的平均时长。像这种偏态分布,比起期望(均值),中位数也许能更好的代表“平均值”。

把数据从小到大排列,中间的数就是中位数。
这里写图片描述

看下面的例子:
https://www.zhihu.com/question/27496436
这里写图片描述

只能简单粗暴的取分位数了。
下图是所有的数据的统计结果:
这里写图片描述

下图是访问时间<300的数据的统计结果:
这里写图片描述

不论是取中位数,还是求中间部分的均值,结果都是差不多的,而且感觉也较合理。而且用全部数据算,和去掉感觉不合理的特别大的数据算的结果也是差不多的。
所以我感觉可以用中值代表页面停留时间的平均时长。

python的代码和分析数据的excel表在这:
https://github.com/zhouna/ml_python/tree/master/webPage

参考:
http://blog.jobbole.com/93336/
https://blog.oldj.net/2012/11/01/time-on-page/
http://www.ruanyifeng.com/blog/2015/06/poisson-distribution.html

原创粉丝点击