档案

Posts Tagged ‘时间序列’

如何绘制个人增长曲线图?

2010/04/18 留下评论

>

Z @ 2010-04-15:

我们有一3个wave的panel样本,用GLM Repeated Measures分析数据,并从中画出三个时间点上样本的平均值。我们写了一篇论文投给某国际期刊,有位评审人要求我们随机抽取10人,在同一图里显示各自的growth curves。我们在SPSS中试了很久,怎么也无法制作这种图。不知是否可以在SPSS中“自动”做到?

庄主 @ 2010-04-18:

最近我教的统计课里,也有一位同学提出相同的问题,其答案在于纵向数据的特殊结构。一般说来,纵向数据的结构有“矮胖型”和“瘦长型”两种。但你们需要的是第三种结构。

矮胖型数据与更常见的横向数据相似,每一列是一个变量、每一行是一个个案,由于纵向数据的因变量有多个时点的观测值,每个观察值被当做一个变量,分别占领一列,一般在因变量名后加下标1、2、…、t(t=时间点个数)来显示各自的观测时间点。所以,这种结构的正式学名叫做“multivariate format”(因变量多列型)。如表一代表你们的数据,其中Y1、Y2和Y3是因变量Y在三个时间点上的观察值,注意它们是被当做三个变量分别各占据一列,X是自变量(只测量一次,所以只有一列)、最后的“…”表示还可以有其它自变量。GLM、SEM等都是使用这种结构的数据。但是,这种数据无法用来制作“intrapersonal growth curves”。

表一、因变量多列型数据结构(n行记录、t列因变量)

ID Y1 Y2 Y3 X
1 y11 y12 y13 x1
2 y21 y22 y23 x2
n yn1 yn2 yn3 xn

在瘦长型结构中,因变量只占一列,但是每个个案占三列,因此因变量y1、y2和y3分布在这三行之中(见表二)。为了保留Y的观测时间点,新增加了一个变量Time,取值1、2、…、t。这种结构的正式学名叫做“multirecord format”(个案多行型),是HLM和其他多层分析软件所要求的数据格式。在这种数据结构中,你可以通过选择个人的ID来显示一个人的增长曲线,但也无法在同一图中显示多人的增长曲线。

表二、个案多行型数据结构(n x t行记录、1列因变量)

ID Time Y X
1 1 y11 x1
1 2 y12 x1
1 3 y13 x1
2 1 y21 x2
2 2 y22 x2
2 3 y23 x2
n 1 yn1 xn
n 2 yn2 xn
n 3 yn3 xn

如要在同一图中显示多条增长曲线,需要将矮胖型或瘦长型数据转换成第三种结构,这在文献中还没有专门的名称,我姑且称之为individuals-as-variables format(“每人一列型”),如表三所示。这种结构更加“奇怪”,每一列是一个人的因变量或自变量,而每一行是一个时间点。本例t = 3,所以只有三行,比起矮胖型的n行来更加矮胖了。这种结构不适合做统计分析,但十分适合做各种图形,如可以做以Time为X-轴、单个或多个Y为Y-轴的增长曲线,也可以做以X为X-轴、Y为Y-轴的个人层面X-Y散点图。

表三、每人一列型数据结构(t行记录、n列因变量)

Time ID1_Y ID1_X ID2_Y ID2_X IDn_Y IDn_X
1 y11 x1 y21 x2 yn1 xn
2 y12 x1 y22 x2 yn2 xn
3 y13 x1 y23 x3 yn3 xn

好了,根据上述原理,你可以按需要而将数据在这三种结构之间互相转换。当然,如果你会使用SPSS的Syntax指令,确实可以用以下(或类似)的指令来“自动化”操作(注:指令中的大写字母是SPSS指令、小写字母是可以替代的变量名或文件名)。

*1. 假定你的数据是矮胖型结构,首先转换成瘦长数据.
VECTOR j=y1 to y3.
LOOP i=1 to 3.
COMPUTE y=j(i).
COMPUTE time=i.
XSAVE OUT ‘r:\temp.sav’/KEEP id time y x.
END LOOP.
EXE.

*2. 随机抽取10个个案.
SAMPLE 10 FROM 100.  
EXE.
MATCH FILES FILE */KEEP id.    /*只保留被抽取的id.
AUTORECODE id/into newid.      /*对id重新排序.

*3. 与瘦长数据并行对接.
MATCH FILES TABLE */FILE ‘r:\temp.sav’/BY id.
SELECT IF newid>0.     /*剔除没有newid的个案.
EXE.

*4. 从瘦长数据中逐个提取个案,分别保留到单独文件中.
DEFINE !newcase (!POS, !CMDEND).
!DO !i !IN (!1).
TEMP.
SELECT IF newid=!i.
SAVE OUT !QUOTE(!CONCAT(‘r:\newcase’, !i, ‘.sav’))
  /KEEP time y x
  /rename (y=!concat(‘y’, !i)/rename (x=!concat(‘x’, !i).
!DOEND.
!ENDDEFINE.
!newcase 1 2 3 4 5 6 7 8 9 10.
EXE.

*5. 将10个单独文件平行对接起来,构成最后的“个案每列”结构.
MATCH FILES FILE ‘r:\newcase1.sav’
  /FILE ‘r:\newcase2.sav’
  /FILE ‘r:\newcase3.sav’
  /FILE ‘r:\newcase4.sav’
  /FILE ‘r:\newcase5.sav’
  /FILE ‘r:\newcase6.sav’
  /FILE ‘r:\newcase7.sav’
  /FILE ‘r:\newcase8.sav’
  /FILE ‘r:\newcase9.sav’
  /FILE ‘r:\newcase10.sav’.
EXE.

*6. 打印10个因变量对时间的散点图.
TSPLOT y1 y2 y3 y4 y5 y6 y7 y8 y9 y10/ID=time.

以下是步骤6制作的10条“个人增长曲线“图,估计就是你们要画的那种了。

image

如何检验时间序列数据中的自相关?

2009/04/19 留下评论

>

happyle @ 2009-02-22:

关于一元线性回归的问题
用一次考试的成绩预测另一次考试成绩,建立回归方程。。。显著性检验。。。
F检验、T检验都有统计学意义
回归标准化残差直方图正态分布
P-P图正态分布
因变量与回归标准化预测值散点图呈直线趋势。。。
但是。。。
D.W.=.815
这表明残差之间正相关,不是相互独立的
所以请问下,这时候考虑DW值是否有意义?

庄主 @ 2009-04-18:

首先要抱歉没有及时回复你的问题。我写帖子的时间不多,每次从收到的问题中按我对读者的兴趣判断挑一个。你的问题有一定的技术含量、但比不上近期的其它题目更有普遍兴趣。

其次提个建议:以后能否将你的问题用sentences(句子)而不是bullet points(词汇排列)表达出来?不知是否受到PPT讲义的影响,越来越多的学生提问时采用这种方法。虽然简要,但如果简略到意义残缺,就适得其反了。准确地描述问题,是学好定量分析的基本功之一。

好了,回到你的问题。先为其他读者介绍一下背景:DW(Durbin-Watson)值是检验一组时间序列数据中自相关(autocorrelation) 程度的统计量。更准确地说,DW检验的是零假设为:一个为时间序列的因变量Yt在对若干(1至k个)自变量作回归之后的每个时间点的residual(残差,记为et)与其前一时间点的残差(et-1)之间的相关(记为 Cor(et, et-1))= 0。这种自相关,也被称为 first-order autocorrelation,简称AR1,中译“一阶自相关”,这里的所谓“一阶”是指两个残差之间相差一个时间点。

这里涉及好几个概念和问题:什么是残差(比较容易理解),什么是自相关(有点难度),一阶与高价自相关有什么差别(也有点难),自相关不等于0会有什么问题?等等。我只谈最后一个问题,因为与你问题直接有关,而其它留待以后有机会再谈。

简单说来,如果 Cor(et, et-1) = 0, 那就违反了OLS回归的基本要求之一(即残差之间的独立性)。如果残差之间有自相关,虽然不会影响回归系数的值,但会影响(低估)回归系数的标准误差(即自变量对因变量的显著程度,从而犯了Type I错误)。这是少数不可饶恕的“死罪”之一,而DW值就是判断是否犯了此罪的判决书。

DW值与Pearson r或其它相关系数不同,其取值在0至4之间,其中当DW值=2时,说明自相关=0;如果DW(明显)小于2,反映有正的自相关(positive AR);如果DW(明显)大于2,反映有负的自相关(negative AR)。两者相比,前者(正相关)更为常见。这里又出现一些新的概念和问题,如什么是正的自相关、什么是负的自相关、怎样才算明显小于或大于2,等等。这里只谈最后一个问题,即DW对2的偏离到达什么程度,就是“明显”或“显著”差别了。

与其它许多统计检验的做法(一般是将统计值除以其标准误差)不同,DW的统计检验比较复杂和繁琐。Durbin与Watson编制了一套检验表,分别对应于不同的数据时间点、不同的自变量个数和不同的显著水平(分为0.01和0.05两种),提供两个临界值,分别记为DL(下限,低于其者则绝对有自相关)和DU(上限,低于其者“也许”有自相关)。具体使用如下:

image

  1. 观察到的DW值小于2(即正自相关)时:
    1. 如果DW大于DU,说明总体中的Cor(et, et-1) = 0,即可以接受回归分析结果;
    2. 如果 DW小于DL,说明总体中的Cor(et, et-1) ≠ 0,即不能接受回归分析结果(因为自变量与残差之独立性被破坏而使得回归结果不可靠);
    3. 如果DW落在DL和DU之间,则是一个灰色地带,需要进一步根据你的自变量分布是否均匀(即X在自己的各个取值上是否平均分配)来决定。如是,则按1b办;如否,则按1a办。
  2. 观察到的DW值大于2(即负自相关)时:
    1. 如果DW小于4-DU,则如同1a,即总体中的Cor(et, et-1) = 0而可以接受回归分析结果;
    2. 如果DW大于4-DL,则如同1b,即总体中的Cor(et, et-1) ≠ 0而需要拒绝回归分析结果;
    3. 如果DW落在4-DL和4-DU之间,则如同1c,是一个灰色地带,需要进一步根据你的自变量分布是否均匀而决定是参照2a还是2b。

上图是我从DW表中选出的三组临界值,其显著水平均为p = 0.05,时间点在10至100个之间,自变量个数分别为2、4和6个。从图中可以看出如下规律:一、当时间点小于20而自变量为4个以上,DU接近甚至大于2(即数据一定有自相关),而且DL与DU之间存在巨大的灰色地带;二、随着时间点增加至30以上,DU变得相当稳定,而DL与DU之间的灰色地带逐渐缩小;三、DL与DU之间的差距并不是对称的。这些都有助于我们理解时间序列分析的基本要求(如数据时间点至少要30个以上、自变量个数不能多)的来源,同时也说明一些“常规说法”(如DW值不能小于1.0)其实并不准确。

你做的是一元回归方程,说明有1个自变量,得到的DW值为0.815,显示存在正的自相关。你没有交代数据的时间点,但可以从上图的红线中看出,你的DW值一定是低于临界点下限的。

你问:这时候考虑DW值是否有意义?当然有意义:你数据中有显著的自相关。我猜你的原意是“这时候回归分析结果(如回归系数达到显著水平)是否还可靠?”前面提到,在显著的自相关下,回归系数的标准误差被人为缩小而显著水平被人为提高,所以也是不可靠的。

当然,你的数据也许不是时间序列 (Yt = b0 + b1Xt) 而是panel数据 (Yit = b0 + b1Xit) ,因为你说用“考试成绩2预测考试成绩1”,暗示该数据中只有两个时间点,但应该有i个人。如果是这种i x t的数据(注意panel公式中的下标),不能用上述经典的DW检验,而应改用修正过的DW公式。SAS、Stata等软件中有,但SPSS13版(我不知14版以后的情况)并不提供这一统计量。

分类:统计 标签:,