质周期分析简介

 

   地球大气层,或者天气系统的运动变化,产生各种天气现象和性质的演变。我们定时记录下来,就是时间序列, 例如逐日气温序列,逐日雨量序列等。除了气象上的各种时间序列外,无数其他事物,尤其是人类尚未完全掌握其规律的特大系统,都产生各种等待我们去分析研究的时间序列。显然,这种时间序列如果有某种规律性,它必然是周期性。因为客观存在是有规律地运动的。即使是人类难以去影响、不能控制的特大系统也不列外。虽然不能控制,或者在控制之前,人类应该去研究它,认识它,首先做到能够预测它。我们要研究的、可以认识的,就是时间序列的周期性,做预报只能靠这种周期性。

已出现的周期分析方法有千百种,我认为最科学可靠的是谐波分析。谐波分析依据数学定理──福里哀变换,即:任何周期函数都可展开成为一系列正弦函数之和。如果是离散的时间序列,则可展开成为三角函数级数。但是谐波分析用在天气预报上不一定成功,更不比其它方法有效 。这里显然有两条不正确、不合理的经验:用作分析的时间序列不能太长,所选取的周期数目不能太多。时间序列愈长,数据资料愈多,应该能提供更多的信息,愈能揭示该事物的性质,为什么反而要短些?按数学定理,时间序列应展成无穷的三角级数,为什么只能取少数几个周期?

因为,气象系统非常复杂,任一种时间序列都将包含数不清的周期,短的可能仅几个小时,长的可以到几年,几万年,所以根本不知道它的总周期有多长。而福里哀变换只适用总周期长度已知的函数,它可以把该函数展开为无穷个倍频的正弦函数之和,对总周期未知的序列则无能为力。

我于1977年提出的“质周期分析”,不仅计算非常简单,还可克服以上两个缺点,而实质上又是根据或等价于谐波分析。可以验证,进行我所谓的分相统计得到的周期因子,实际上是以该周期为基频的所有正弦函数之和。另外,如果我们要得到该整数周期的正弦函数,只要对这个周期因子进行多次滑动平均就可以了。其结果与通常的谐波分析是一样的,我常常就用这种方法做一般的谐波分析。只有周期非整数时(如在我称之为“精密谐波分析”中所要求的),才需要复杂的解方程运算。

现在举列说明什么叫“分相统计”和“质周期因子”。如果有一个只有18个数据的时间序列:F={3,15,21,6,6,27,18,-33,15,0,-6,-9,6,18,9,3,0,9},

所谓按周期T=6的“分相统计”是:

 

           3   15  21   6    6   27

     18  -33  15   0   -6   -9

    相加   6   18   9   3    0    9

       ──────────────────

    求和  27   0   45   9    0   27

平均   9   0   15   3    0    9           此为统计因子S6(F)

 

     这个长度为6的统计因子S6(F)={9,0,15,3,0,9},它含有周期T=2,周期T=3的因子及平均值(即周期T=1的因子),现在把它们都从统计因子S6(F)中减去,就成为质周期因子S6ο(F)了。

注意;在进行这一步“本质化”运算时一定不要有重复。例如在本列中,如果对S6(F)分别进行T=2和T=3的分相统计得到S2[S6(F)]和S3[S6(F)],再在S6(F)中减去这两者,那么就减了两次平均值S1[S6(F)],因为S2和S3中都含有平均值S1。正确的本质化运算可以有不同的途径。本例可取以下的标准过程(有时标准的并不是最优的):

 

第一步,先求平均值S1=(9+0+15+3+0+9)/6=6,原统计因子减去这一平均值成为:{3,-6,9,-3,-6,3}。

 

     第二步,对第一步结果作T=2的分相统计:

                  3   -6

                  9   -3

          相加   -6    3

          ────────────

          求和    6   -6

          平均    2   -2             这是S2

 

S2={2,-2},从第一步结果中减去,可得到:

 

       第一步结果:   3   -6    9   -3   -6    3

             S2     2   -2    2   -2    2   -2

         ──────────────────────

         相减得差:   1   -4    7   -1   -8    5          此为第二步结果

 

    第三步:对第二步结果作T=3的分相统计:

 

                  1    -4    7

                 -1    -8    5

           ──────────────

         求和:   0   -12   12

         平均:   0    -6    6           这是S3

 

S3={0,-6,6},从第二步中减去它,最后即可得到质因子S6ο

 

        第二步结果:   1   -4   7  -1   -8    5

               S3   0   -6   6   0   -6    6

         ──────────────────────

         相减:        1    2   1  -1   -2   -1       这就是质因子S6ο

 

“统计因子”经过“本质化”就成为“质因子”。当统计因子的周期T是质数时,本质化运算只要减去平均值S1。例如上面的S2 S3  ,因为已除去平均值S1(它们各相值之和为0),实际上就是质因子 S2ο和S3ο。周期T是非质数时,则还必须除去它所含的所有周期等于真因子的质周期函数。任何周期时间序列,可用上述算法求得它的所有质周期因子。

反过来,任何统计因子,或总周期T已知的时间序列,必等于它的所有质周期因子之和:这里说的质周期因子的周期Ti,是整数T的因子,包括T本身及Ti=1。如果上例是T=18的周期函数,它的所有质周期因子是:S18ο、S9ο、S6ο、S3ο、S2ο、S1ο。我们已经求得后4个因子,也不难求得前两个,整个周期序列将是这6个因子之和。而周期因子S6 则等于S6ο、S3ο、S2ο、S1ο这4个因子之和:

 

↓←-------------------------------资料时段------------------------→  预报时段

时 刻  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21

S6ο : 1   2   1  -1  -2  -1   1   2   1  -1  -2  -1   1   2   1  -1  -2  -1

S3ο: 0  -6   6   0  -6   6   0  -6   6   0  -6   6   0  -6   6   0  -6   6

S2ο : 2  -2   2  -2   2  -2   2  -2   2  -2   2  -2   2  -2   2  -2   2  -2

S1ο: 6   6   6   6   6   6   6   6   6   6   6   6   6   6   6   6   6   6

S6  : 9   0  15   3   0   9   9   0  15   3   0   9   9   0  15   3   0   9

 

上表列出了21个时刻,从1到18是有资料时段,19时刻以后是要预报的时段。以下是5个周期因子,前4个是质周期因子,平均值S1 是特殊因子,只有一个值、本身就是质因子S1ο。因为是周期函数,每一个都可首尾相接,前后延伸,我们把每个周期的第一个元素加了下划线作标记。注意第一时刻的各周期元素都是第一元素,在那一列顶部加了符号↓,被称为“历元”时刻。历元虽然可以选在任何时刻,但选定之后就不能更改,我们做任何一次统计运算时,都要使这一时刻相互对准,即保证历元时刻,必须对准任意周期的第一元素。为了方便,通常把资料时段或预报时段的第一时刻选为历元。

由上表你可以验证前4个质周期因子之和就是普通因子S6 。如果你求得S18ο、S9ο再加上去,必等于我们开始时给出的18个元素的序列F。你可以用任何周期函数来验证这个结论,于是就可以用质因子之和来预报。同时不难发现,已知周期的序列只等于它的所有质周期因子之和,而不等于任何其它普通统计因子之和。

那么,对于像气象数据这样不知道总周期长度的时间序列呢?这里我提出下面的规律可供大家验证。如果资料序列的长度为L,则只要把周期Ti=2到Ti=2L的平方根的所有质周期因子都求出来,然后把它们都加起来,就是实际序列的良好模拟。如果该实际序列中起作用的周期都在2到根号2L之间,则就可用这些周期因子之和作预报。如果起作用的周期有在这个范围之外的,那么就要找出所有这些周期的质因子。要取多少质周期因子?大概是达到使这些质因子的周期长度之和等L为止。

现在我们把上面的18个元素的序列F,看作是不知道总周期长度的时间序列,L=18。因为2*18=36的平方根为6,应该用T=1,2,3,4,5,6的质因子来预报。我们已把T=1,2,3,6这4个质因子求出,因为它们的周期长度正好是18的因子,分相统计刚好用了全部数据,选资料时段的第一时刻为历元,与选预报时段的第一时刻为历元,是一样的,历元都包含在诸周期因子的第一元素中。统计T=4和5的周期因子时,分别只用4和3个整周期长度的资料,将分别多出2和3个实际数据不参与统计。为了预报未来,应该抛弃最早的资料,这样最好选预报时段的第一时刻为历元,分相统计时要从后向前排列数据:

T=5的因子:

 

18   9   3   0   9           9是最后一个资料数据

15   0  -6  -9   6

6    6  27  18 33           6以前的3个数被抛弃了

           ──────────────

         求和:   39  15  24   9 -18

         平均:   13   5   8   3  -6           这是S5

减平均4.6:   8   0   3  -1  -10           这是S5ο

 

因为我们抛弃了开头3个较大的数据3,15,21,这里的平均值不是6而降为4.6,另外,纯粹为了行文简洁,我们把相减结果中的小数点后数字去掉了(这会降低精确性)。

t=4的周期因子:

        

 9       3       0       9        9是最后一个资料数据

                  -6      -9       6      18

                  18     33      15       0

21       6       6      27        21以前的2个数被抛弃了

 ──────────────

         求和:   42     33      27      54

         平均: 10.5   -8.25    6.75    13.5         这是S4

S2   8.6    2.6     8.6     2.6

S2   2     -11      -2       11         这是S4ο

 

这里的S2是由S4进行分相统计得到的,包含S2ο和S1ο,减去它,就等于减去了两者,即成为质因子。结果也略去了小数,这纯粹为了使下面的表格简单些,当然也降低了精确性。下表的“理论”一行是由6个质因子求和得到的,在资料时段是理论模拟值,在预报时段的19,-11,16,就是预报时段首3个时刻的预报值了。

 

因子名←-------------------------------资料时段---------------------------→  ↓预报时段

S6ο : 1   2   1  -1  -2  -1   1   2   1  -1  -2  -1   1   2   1  -1  -2  -1   1   2   1

S5ο : 3  -1 -10   8   0   3  -1 -10   8   0   3  -1 -10   8   0   3  -1 -10   8   0   3

S4ο :-2  11   2 11  -2  11   2 11  -2  11   2 11  -2  11   2 11  -2  11   2 11  -2 

S3ο : 0  -6   6   0  -6   6   0  -6   6   0  -6   6   0  -6   6   0  -6   6   0  -6   6

S2ο : 2  -2   2  -2   2  -2   2  -2   2  -2   2  -2   2  -2   2  -2   2  -2   2  -2   2

S1  : 6   6   6   6   6   6   6   6   6   6   6   6   6   6   6   6   6   6   6   6   6

理论:10 10   7   0  -2  23  10 21  21  14   5  -3  -3  19  17  -5  -3  10  19 11  16

实际:3  15  21   6   6  27  18 33  15   0  -6  -9   6  18   9   3   0   9

 

 

                                      2002-8-11写,2003-12-3日修改补充