如何用变量表示数值的变化

12 views
Skip to first unread message

Q

unread,
Mar 26, 2012, 9:01:39 PM3/26/12
to ttnn
遇到一个数值分析的技术问题,看看大家有没有遇到类似的,探讨一下解决方法。

通常我们可以通过肉眼可以直观地区分出一些数值序列的变化,将它们做成柱图或曲线图可以一眼看出其中差别,但如果要分析大数据,不能总是肉眼看,需要用“变量”来区分他们。现在我遇到两种情况需要用变量来区分数值变化的不同方面。

一种是反应数值变化的平稳度。比如一个数值序列,有24个值(一天里每个小时的度量),值的区间假设已经转换到在0和100之间了。于是,通过图形,可以直观地发现可能存在如下形态的平稳度变化。如下图:
Inline image 1
平稳、起伏、突变和孤峰。这纯粹是从图形的形态人工区分的,但如何设计变量呢?有人告诉我可以用方差,说方差可以表明每个值对平均值的偏离程度,可是我拿不准方差真的能区分出这四种形态吗?还是只能区分出某一种?如果可以区分,是否有人可以用具体的例子来说明一下。

这是第一个问题。另一个问题是要反应数值序列的规律性。

假设一个数值序列,有30个值,通过曲线形态,可以明显看到有的呈现周期性规律,按周变化起伏,有的则没有那种起伏。如下图:
Inline image 3

要说周期性变化,可能还有更丰富的,比如按照3天一周期,或10天一周期。但为了简化,可以先考虑如何用变量表示是否按周变化吧。在进一步考虑,如何表示是否存在周期性,周期是多少。

以上数值序列的两个方面,如何用一个变量(或多个)来表示?请大家出谋划策。

value_var2.png
value_var1.png

Delin He

unread,
Mar 26, 2012, 10:56:54 PM3/26/12
to tt...@googlegroups.com
第一个问题,想起以前做过一个 判别用户是否话务量波动的项目。应该和第一个问题比较类似,
就是通过历史日均话务量的数据找哪些用户话务量比较平稳,哪些波动,哪些异常。计算每个userID 历史日均话务量的离散系数CV,离散系数=标准差/均值, 此处优于用方差。然后计算离散系数的标准差,
  If  CV< 0.8 *标准差  then 平稳
  if  CV> 2*  标准差  then 异常
  else  波动
 阈值 得根据数据以及业务经验判断。
孤峰和突变得去异常里面在想办法。
 
第二个问题没经验。
value_var1.png

George Zhang

unread,
Mar 27, 2012, 12:04:37 AM3/27/12
to tt...@googlegroups.com
应该说每个图形我们人类在区分的时候都是基于某个特征提取的信息,比如蓝图的B图是起伏的,那么“起伏”这个抽象的感觉如何转化为指标呢?
我们可以定义一个环比变化率,而是前后点比较还是跨三格的周期性比较,这个比较复杂。但其实时间序列统计方法中已有成熟的提取周期和趋势的方法,可以得出这个序列的周期时长和波动峰谷,用这个指标可以筛出蓝图的B图和红图的A图

针对蓝图的C图,可以计算分位数中高于3/4分位点的个数比例,发现C图的这个比例值非常低,当然B图也会很低,其实可以理解为B图是C图特征的周期性发生。而蓝图的D图也可以用类似的特征值来提取,可以计算环比增长率分布(求导数),会发现如图C那样的两个峰值

饶了这么多,其实我想说的是,如果学过信号处理的就会明白,所有的数据图可以理解为数据波,而数据波有时域和频域的特征,只要在时域或者频域提取出这种特征,就可以设计各种各样的滤波器...

在 2012年3月27日 上午9:01,Q <happ...@gmail.com>写道:



--
Best Regard
George Zhang
value_var1.png
value_var2.png

Q

unread,
Mar 27, 2012, 1:03:49 AM3/27/12
to tt...@googlegroups.com
时间序列统计方法那个成熟方法叫什么名字?请具体讲讲噻!

On Tue, Mar 27, 2012 at 12:04 PM, George Zhang <birdzha...@gmail.com> wrote:
...这个比较复杂。但其实时间序列统计方法中已有成熟的提取周期和趋势的方法,可以得出这个序列的周期时长和波动峰谷,用这个指标可以筛出蓝图的B图和红图的A图
。。。
在 2012年3月27日 上午9:01,Q <happ...@gmail.com>写道:
遇到一个数值分析的技术问题,看看大家有没有遇到类似的,探讨一下解决方法。

通常我们可以通过肉眼可以直观地区分出一些数值序列的变化,将它们做成柱图或曲线图可以一眼看出其中差别,但如果要分析大数据,不能总是肉眼看,需要用“变量”来区分他们。现在我遇到两种情况需要用变量来区分数值变化的不同方面。

一种是反应数值变化的平稳度。比如一个数值序列,有24个值(一天里每个小时的度量),值的区间假设已经转换到在0和100之间了。于是,通过图形,可以直观地发现可能存在如下形态的平稳度变化。如下图:
Inline image 1
平稳、起伏、突变和孤峰。这纯粹是从图形的形态人工区分的,但如何设计变量呢?有人告诉我可以用方差,说方差可以表明每个值对平均值的偏离程度,可是我拿不准方差真的能区分出这四种形态吗?还是只能区分出某一种?如果可以区分,是否有人可以用具体的例子来说明一下。

这是第一个问题。另一个问题是要反应数值序列的规律性。

假设一个数值序列,有30个值,通过曲线形态,可以明显看到有的呈现周期性规律,按周变化起伏,有的则没有那种起伏。如下图:
Inline image 3

要说周期性变化,可能还有更丰富的,比如按照3天一周期,或10天一周期。但为了简化,可以先考虑如何用变量表示是否按周变化吧。在进一步考虑,如何表示是否存在周期性,周期是多少。

以上数值序列的两个方面,如何用一个变量(或多个)来表示?请大家出谋划策。




--
Best Regard
George Zhang



--
ttnn
telno: 13514984944

value_var1.png
value_var2.png

George Zhang

unread,
Mar 27, 2012, 1:51:07 AM3/27/12
to tt...@googlegroups.com
呃,按统计学思路的方法就是设计一个平移的时间窗口,从数据序列的起点开始平移计算窗口内的数据均值(移动平均),将窗口长度从2步-N步循环,每一步都计算移动平均后序列的线性回归效果,当窗口步长与数据内在周期最吻合的时候,也是平均后数据最线性的时候。

换做用信号处理的的思路的话,就是对时序数据进行傅里叶变换,得到频域分布,可以直接看出这个信号是由哪些频率的波叠加而成的

其实知道原理自己写些代码就能实现了,实用小工具我倒是没用过,不知道是不是有人已经做好过

在 2012年3月27日 下午1:03,Q <happ...@gmail.com>写道:
时间序列统计方法那个成熟方法叫什么名字?请具体讲讲噻!

On Tue, Mar 27, 2012 at 12:04 PM, George Zhang <birdzha...@gmail.com> wrote:
...这个比较复杂。但其实时间序列统计方法中已有成熟的提取周期和趋势的方法,可以得出这个序列的周期时长和波动峰谷,用这个指标可以筛出蓝图的B图和红图的A图
。。。

George Zhang

unread,
Mar 27, 2012, 1:55:08 AM3/27/12
to tt...@googlegroups.com
我们平时用的是附件里介绍的一个R算法包forcast,因为我们数据的时间周期是标准的日期周期,所以这个包基本能解决常用的数据序列预测的问题。但如果碰到那种非正常时序或者高频数据的话,建议还是用前面讲的这个原理自己写代码
Automatic time series-Hyndman.pdf

Jackie Young

unread,
Mar 28, 2012, 9:35:54 PM3/28/12
to tt...@googlegroups.com
这个forecast是用来预测下个周期的值么?那我试了一下貌似很不准呢。计算出的周期和线性回归结果在哪里看呢?

2012/3/27 George Zhang <birdzha...@gmail.com>

George Zhang

unread,
Mar 29, 2012, 1:40:26 AM3/29/12
to tt...@googlegroups.com
单变量预测本来准度就是很有限的,在没有更多信息的情况下,甚至人工判断都比机器预测的准,所以工具都是看你如何去使用的
那个周期调整的回归测试需要自己写代码的,这个包里的相关用法我没仔细研究过,你们有兴趣的可以自己研究看看。在我看来这个包就是一个傻瓜式的自动预测工具,如果真的要深入研究和预测某种现象的话,还是要从提取影响因素入手,做多元模型。
Reply all
Reply to author
Forward
0 new messages