第二十一章 时间序列/截面数据模型 在经典计量经济学模型中,所利用的数据(样本观测值)的一个特征是,或者只利用时间序列数据(time series),或者只利用截面数据(cross section)。我们经常遇到在同一时间包含不同截面成员信息的数据,或在若干时间区间观测到相关的一些截面成员的数据。例如许多欧洲国家的GDP时间序列数据,或者是一段时间不同地区的失业状态数据。我们称这些数据为联合利用时间序列/截面数据(Pooled time series,cross section)。有的书中也称这类数据为面板数据(panel data),指在时间序列上取多个截面,在这些截面上同时选取样本观测值所构成的样本数据。 处理时间序列/截面数据的EViews对象称为一个Pool。EViews提供了许多专用工具处理Pool数据,包括数据管理,选择时间序列长度和截面成员的多少,以及进行数据估计。 本章将主要介绍怎样建立Pool数据以及定义和处理Pool对象。
§21.1 Pool对象 Pool对象的核心是建立用来表示截面成员的名称表。为明显起见,名称要相对较短。例如,国家作为截面成员时,可以使用USA代表美国,CAN代表加拿大,UK代表英国。 定义了Pool的截面成员名称就等于告诉了EViews你的数据结构。在上面的例子中,EViews会自动把这个Pool理解成对每个国家使用单独的时间序列。 必须注意,Pool对象本身不包含序列或数据。一个Pool对象只是对基本数据结构的一种描述。因此,删除一个Pool并不会同时删除它所使用的序列,但修改Pool使用的原序列会同时改变Pool中的数据。
一、创建Pool对象 在本章中,使用的是一个研究投资需求的例子,包括了五家企业和三个变量的20个年度观测值的时间序列: 5家企业: 3个变量: CM:通用汽车公司 总投资 CH:克莱斯勒公司 前一年企业的市场价值 GE:通用电器公司 前一年末工厂存货和设备的价值 WE:西屋公司 US:美国钢铁公司 要创建Pool对象,选择Objects/New Object/Pool…并在编辑窗口中输入截面成员的识别名称:
对截面成员的识别名称没有特别要求,但必须能使用这些识别名称建立合法的EViews序列名称。此处推荐在每个识别名中使用“_”字符,它不是必须的,但把它作为序列名的一部分,可以很容易找到识别名称。
二、观察或编辑Pool定义 三、使用Pool和序列 四、序列命名 要显示Pool中的截面成员识别名称,单击工具条的Define按钮,或选择View/Cross-Section Identifiers。如果需要,也可以对识别名称列进行编辑。 三、使用Pool和序列 Pool中使用的数据都存在普通EViews序列中。这些序列可以按通常方式使用:可以列表显示,图形显示,产生新序列,或用于估计。你也可以使用Pool对象来处理各单独序列。 四、序列命名 在Pool中使用序列的关键是序列命名:使用基本名和截面识别名称组合命名。截面识别名称可以放在序列名中的任意位置,只要保持一致即可。 例如,现有一个Pool对象含有识别名 _JPN, _USA,_UK,想建立每个截面成员的GDP的时间序列,我们就使用“GDP”作为序列的基本名。 可以把识别名称放在基本名的后面,此时序列名为GDP_JPN,GDP_USA,GDP_UK;或者把识别名称放在基本名的前面,此时序列名为JPN_GDP,USA_GDP,UK_GDP。
把识别名称放在序列名的前面,中间或后面并没什么关系,只要易于识别就行了。但是必须注意要保持一致,不能这样命名序列:JPNGDP,GDPUSA,UKGDP1,因为EViews无法在Pool对象中识别这些序列。 五、Pool序列 一旦选定的序列名和Pool中的截面成员识别名称相对应,就可以利用这些序列使用Pool了。其中关键是要理解Pool序列的概念。 一个Pool序列实际就是一组序列, 序列名是由基本名和所有截面识别名构成的。Pool序列名使用基本名和“?”占位符,其中“?”代表截面识别名。如果序列名为GDPJPN,GDPUSA,GDPUK,相应的Pool序列为GDP?。如果序列名为JPNGDP,USAGDP,UKGDP,相应的Pool序列为 ?GDP。 当使用一个Pool序列名时,EViews认为你准备使用Pool序列中的所有序列。EViews会自动循环查找所有截面识别名称并用识别名称替代“?”。然后会按指令使用这些替代后的名称了。Pool序列必须通过Pool对象来定义,因为如果没有截面识别名称,占位符“?”就没有意义。
§21.2 输入Pool数据 有很多种输入数据的方法,在介绍各种方法之前,首先要理解时间序列/截面数据的结构,区别堆积数据和非堆积数据形式。 时间序列/截面数据的数据信息用三维表示:时期,截面成员,变量。例如:1950年,通用汽车公司,投资数据。 使用三维数据比较困难,一般要转化成二维数据。有几种常用的方法。 一、非堆积数据 存在工作文件的数据都是这种非堆积数据,在这种形式中,给定截面成员、给定变量的观测值放在一起,但和其他变量、其他截面成员的数据分开。例如,假定我们的数据文件为下面的形式:
其中基本名I代表企业总投资、F代表前一年企业的市场价值、S代表前一年末工厂存货和设备的价值。每个企业都有单独的I、F、S数据。 EViews会自动按第四章介绍的标准输入程序读取非堆积数据。并把每个截面变量看作一个单独序列。注意要按照上述的Pool命名规则命名。
二、堆积数据 选择View/Spreadsheet(stacked data),EViews会要求输入序列名列表 确认后EViews会打开新建序列的堆积式数据表。我们看到的是按截面成员堆积的序列,Pool序列名在每列表头,截面成员/年代识别符标识每行:
Pool数据排列成堆积形式,一个变量的所有数据放在一起,和其他变量的数据分开。大多数情况下,不同截面成员的数据从上到下依次堆积,每一列代表一个变量:
我们称上表数据是以截面成员堆积的,单击Order+/-实现堆积方式转换, 也可以按日期堆积数据: 每一列代表一个变量,每一列内数据都是按年排列的。如果数据按年排列,要确保各年内截面成员的排列顺序要一致。
三、手工输入/剪切和粘贴 可以通过手工输入数据,也可以使用剪切和粘贴工具输入: 1.通过确定工作文件样本来指定堆积数据表中要包含哪些时间序列观测值。 2.打开Pool,选择View/Spreadsheet(stacked data),EViews会要求输入序列名列表,可以输入普通序列名或Pool序列名。如果是已有序列,EViews会显示序列数据;如果这个序列不存在,EViews会使用已说明的Pool序列的截面成员识别名称建立新序列或序列组。 3.打开Pool序列的堆积式数据表。需要的话还可以单击Order +/-按钮进行按截面成员堆积和按日期堆积之间的转换。 4.单击Edit+/-按钮打开数据编辑模式输入数据。 如果有一个Pool包含识别名_CM,_CH,_GE,_WE,_US,通过输入:I? F? S?,指示Eviews来创建如下序列:I_CM,I_CH,I_GE,I_WE,I_US;F_CM,F_CH,F_GE,F_WE,F_US;S_CM,S_CH,S_GE,S_WE,S_US:
四、文件输入 可以使用Pool对象从文件输入堆积数据到各单独序列。当文件数据按截面成员或时期堆积成时,EViews要求: 1. 堆积数据是平衡的 2. 截面成员在文件中和在Pool中的排列顺序相同。 平衡的意思是,如果按截面成员堆积数据,每个截面成员应包括正好相同的时期;如果按日期堆积数据,每个日期应包含相同数量的截面成员观测值,并按相同顺序排列。 特别要指出的是,基础数据并不一定是平衡的,只要在输入文件中有表示即可。如果观测值中有缺失数据,一定要保证文件中给这些缺失值留有位置。 要使用Pool对象从文件读取数据,先打开Pool,然后选择Procs/Import Pool Data(ASCII,.XLS,.WK?)…,要使用与Pool对象对应的输入程序。
通过第四章的学习,大家对这个对话框应该比较熟悉,填写说明如下: 注明Pool序列是按行还是按列排列,数据是按截面成员堆积还是按日期堆积。 在编辑框输入序列的名称。这些序列名应该是普通序列名或者是Pool名。 填入样本信息,起始格位置和表单名(可选项)。 如果输入序列用Pool序列名,EViews会用截面成员识别名创建和命名序列。如果用普通序列名,EViews会创建单个序列。 EViews会使用样本信息读入文件到说明变量中。如果输入的是普通序列名,EViews会把多个数据值输入到序列中,直到从文件中读入的最后一组数据。 从ASCII文件中输入数据基本类似,但相应的对话框包括许多附加选项处理ASCII文件的复杂问题。详情请见第四章附录。
§21.3 输出合并数据 按照和上面数据输入相反的程序可进行数据输出。由于EViews可以输入输出非堆积数据,按截面成员堆积和按日期堆积数据,因此可以利用EViews按照需要调整数据结构。
§21.4 使用合并数据 每个截面成员的基础序列都是普通序列,因此EViews中对各单个截面成员序列适用的工具都可使用。另外,EViews还有专门适用于Pool数据的专用工具。你可以使用EViews对与一特定合并变量对应的所有序列进行类似操作。 一、检查数据 如上所述,你可以用数据表形式查看堆积数据。选择View/Spreadsheet (stacked data,然后列出你想显示的序列。序列名包括普通序列名和Pool序列名。点击Order+/-按钮进行数据堆积方式的转换。 二、描述数据 可以使用Pool对象计算序列的描述统计量。在Pool工具栏选择View/Descriptive Statistics…,EViews会打开如下对话框:
在编辑框内输入计算描述统计量的序列。EViews可以计算序列的平均值,中位数,最小值,最大值,标准差,偏度,峰度,和Jarque-Bera统计量。 下一步选择样本选项:
(1)Individual: 利用所有的有效观测值。即使某一变量的观测值是针对某一截面成员的,也计算在内。 (2)Common: 使用的有效观测值必须是某一截面成员的数据,在同一期对所有变量都有数值。而不管同期其他截面成员的变量是否有值。 (3)Balanced: 使用的有效观测值必须是对所有截面成员,所有变量在同一期都有数值。 最后还必须选择与计算方法相对应的数据结构: (1)Stacked data: 计算表中每一变量所有截面成员,所有时期的统计量。如果忽略数据的合并性质,你得到的就是描述统计量。 (2)Stacked-means removed: 计算除去截面平均值之后的描述统计量值。 (3)Cross-section specific: 计算每个截面变量所有时期的描述统计量。是通过对各单独序列计算统计量而得到的。 (4)Time period specific: 计算时期特性描述统计量。对每一时期,使用pool中所有截面成员的变量数据计算的统计量。
注意,后面两种方法可能产生很多输出结果。截面成员描述计算会对每一变量/截面成员组合产生一系列结果。如果有三个Pool变量,20个截面成员,EViews就会计算60个序列的描述统计量。 可以把时期特性统计量存储为序列对象。从Pool窗口选择Procs/Make Period Stat Series…出现以下对话框,在编辑窗口输入想计算的时期统计量的序列名。然后选择计算统计量和样本选择。
三、生成数据 可以使用PoolGenr(panelgenr)程序生成或者修改Pool序列。点击Pool工具栏的Poolgenr并输入要生成的方程式,使用正确的Pool名称。例如上面的例子,输入: ratio?=I?/I-US 相当于输入下面五个命令: ratio-CM= I-CM/I-US ratio-CH= I-CH/I-US ratio-GE= I-GE/I-US ratio-WE= I-WE/I-US ratio-US= I-US/I-US PoolGenr按照输入的方程在各截面成员间进行循环计算,生成新的序列或修改已有序列。也可使用PoolGenr和Genr生成新的变量。
例如,要生成一个虚拟变量,在美国钢铁(US)时取1,其他企业时取0,先选择PoolGenr,然后输入:dum 例如,要生成一个虚拟变量,在美国钢铁(US)时取1,其他企业时取0,先选择PoolGenr,然后输入:dum?=0,从而初始化所有虚拟变量序列为0。然后,把US值设置为1,在主菜单选择Genr,然后输入:dum_US=1。 使用Pool修改序列,选择PoolGenr然后输入新Pool序列表达式: dum?=dum?*(I?>S?) 还可以利用数据的内在循环特性进行给定时期的截面成员间的计算。例如,建立一普通序列sum,初始值设为0,然后选PoolGenr并输入: sum=sum+I? 相当于对普通序列从Genr输入下列计算: sum=I_GM+I_CH+I_GE+I_WE+I_US 这个例子只是用来说明内在循环这个概念。正像我们所看到的,EViews提供了一种内置的特性来进行时期描述等这类统计量的计算。
四、生成Pool组 如果希望使用EViews的组对象工具处理一系列Pool序列,选择Procs/ Make Group…输入普通序列和Pool序列名称,EViews就会生成一个包含这些序列的未命名组对象。 五、删除和存取数据 Pool可用来删除和存取序列。只需选择Procs/Delete pool series…,Procs/Store pool series(DB)…,Procs/Fetch pool series(DB)…,输入普通序列和Pool序列名称即可。
§21.5 时间序列/截面数据模型估计方法 使用时间序列/截面数据模型数据结构信息,有很多种方法进行方程估计。可以估计固定截距模型,随机截距模型,或者模型变量对各截面成员的系数不同,以及估计单独的AR(1)系数。也可以为各个截面成员分别估计一个方程。 Eviews的Pool对象估计模型使用的方法有:最小二乘法,估计截面权重的加权最小二乘法或看似不相关回归。这些方法的使用都不改变原数据的排序。 下面将介绍怎样使用Pool和系统估计更一般和复杂的模型,包括二阶段最小二乘估计和非线性模型,以及有复杂截面系数限制的模型。
Pool对象估计的方程模型形式为: (21.1) 其中 是因变量, 和 分别是对应于 i =1 , 2 , …, N 的截面成员的非常数回归量k维向量和k维参数。每个截面成员的观测期为t =1 , 2 ,…, T。 虽然我们的大多数讨论都针对平衡样本,EViews不要求数据必须是平衡的;对某一给定时期不能用于分析的观测值用缺失值来表示。 我们可以把这些数据看作一系列截面说明回归量,因此有N个截面方程: (21.2) 有T个观测值互相堆积。为讨论方便,把堆积方程表示为: (21.3) 其中 和 X 分别包含了截面成员间对参数的所有限制。
方程的残差协方差矩阵为: (21.5) 基本说明把Pool说明作为联立方程系统并使用系统最小二乘法估计模型。当残差同期不相关和时期截面同方差时, (21.6) 对堆积数据模型使用普通最小二乘法估计系数和协方差。
一、固定影响 固定影响估计量通过为每个截面成员估计不同常数项使 不同。EViews通过每个变量减去内在平均值和用转换数据最小二乘估计来计算固定影响: (21.7) 其中 通过使用均值差模型的普通最小二乘协方差公式估计系数协方差矩阵: (21.8) 其中 代表了X 减均值的差额,并且
(21.9) 其中 是固定影响模型的SSR。如果Pool是不平衡的,就用除去缺失值后的总观测数代替。 固定影响本身不是直接估计的,计算公式为 (21.10) 固定影响系数中没有标准差。如果想在固定影响中得到标准差,应该选择无截距,并在截面成员说明回归量中包括常数项来重新估计模型。 值得注意的是估计有太多截面成员的截面常数回归模型可能很费时,而且生成的结果可能不如使用固定影响选项得到的结果精确。
二、随机影响 随机影响模型假设 项是共同系数 和不随时间改变的截面说明随机变量 的和, 和残差 是不相关的。EViews按下列步骤估计随机影响模型: (1) 使用固定影响模型的残差 估计 的方差,并使用上述的 。 (2) 估计组间(截面平均)模型并计算: (21.11) 其中 是组间回归的SSR。如果 的估计值是负值,EViews将返回错误信息。 有缺失观测值时 在各截面成员间是不同的,EViews在进行方差估计时使用最大 的值。只要缺失观测值的数目可渐进忽略,估计程序就是一致的。
(3) GLS转换变量使用OLS (X 包括常数项和回归量x ) (21.12) 其中 。 EViews在输出中给出了由(3)得到的 的参数估计。使用协方差矩阵的标准估计量计算标准差。 EViews给出了随机影响的估计值。计算公式为: (21.13) 得到的是 的最优线性无偏预测值。 最后,EViews给出了加权和不加权的概括统计量。加权统计量来自(3)中的GLS估计方程。未加权统计量来自普通模型的残差,普通模型中包括(3)中的参数和估计随机影响: (21.14)
三、截面加权 当残差具有截面异方差性和同步不相关时最好进行截面加权回归: (21.15) EViews进行FGLS,并且 从一阶段Pool最小二乘回归得出。 估计方差计算公式为: (21.16) 其中 是OLS的拟合值。 估计系数值和协方差矩阵由标准GLS估计量给出。
四、SUR加权 当残差具有截面异方差性和同步相关性时,SUR加权最小二乘(有时指Parks估计量)是可行的GLS估计量: (21.17) 其中 是同步相关的对称阵: (21.18) 一般项 ,在所有的t时为常数。
五、怀特(White)协方差估计 EViews估计SUR模型时使用的 是由一阶段Pool最小二乘回归得到: (21.19) 分母中的最大值函数是为了解决向下加权协方差项产生的不平衡数据情况。如果缺失值的数目可渐进忽略,这种方法生成可逆的 的一致估计量。 模型的参数估计和参数协方差矩阵计算使用标准的GLS公式。 五、怀特(White)协方差估计 在Pool估计中可计算怀特的异方差性一致协方差估计(除了SUR和随机影响估计)。EViews使用堆积模型计算怀特协方差矩阵: (21.20) 其中K是估计参数总数。这种方差估计量足以解释各截面成员产生的异方差性,但不能解释截面成员间同步相关的可能。
§21.6 如何估计Pool方程 单击Pool工具栏的Estimate选项打开如下对话框:
1、因变量 在因变量对话框中输入Pool变量或Pool变量表达式。 2、样本 在右上角的编辑窗口中输入样本说明。样本的缺省值是各截面成员中的最大样本值。如果得不到某时期截面成员的解释变量或因变量的值,那么此观测值会被排除掉。 复选框Balanced Sample说明在各截面成员间进行数据排除。只要某一时期数据对任何一个截面成员无效,此时期就被排除。这种排除保证得到的样本区间对所有截面成员都是有效的。 如果某截面成员的所有观测值都没有,那么Pool在进行估计时就排除这个截面成员。同时EViews会在输出中告诉你漏掉的截面成员。
3、解释变量 在两个编辑框中输入解释变量。 Common coefficients:——此栏中输入的变量对所有截面成员有相同的系数,而各变量的系数则不同,并用一般名称或Pool名称输出结果。 Cross-section specific coefficients:——此栏中输入的变量对Pool中每个截面成员的系数不同。EViews会对每个截面成员估计不同的系数,并使用截面成员识别名后跟一般序列名,中间用“_”连接进行标签。 例如,如果你在共同系数编辑框中输入一般变量F?和S?,会输出F?和S?的估计系数。如果你在特定系数编辑框中输入这两个变量,会输出如下形式的系数:_GM--F_GM,_CH--F_CH,_GE--F_GE,_WE--F_WE,_US--F_US和_GM--S_GM,_CH--S_CH,_GE--S_GE,_WE--S_WE,_US--S_US,等等。 注意,使用截面成员特定系数法估计模型会生成很多系数——等于Pool中截面成员数和所列变量数的乘积。
4、截距 在Intercept:标示区对截距进行选择说明: None 没有截距; = 0 Common 对所有Pool成员截距相同; = Fixed effects 对每个Pool成员截距不同; = Random effects 把截距看作随机变量: 不能用截面成员特定系数,AR项或者加权进行随机影响模型估计。
5、权重 在Pool方程估计中,缺省值为没有加权,但是可以选择加权项。有三种权重选择: 如果选择Cross section weights,EViews会假设出现截面异方差性进行广义最小二乘估计。如果选择SUR,EViews会进行广义最小二乘估计修正截面异方差性和同期相关性。这种估计方法有时指Parks统计量。关于这些方法的详细说明见“技术讨论”部分。 No weighting 所有观测值赋予相同的权重 Cross section weights GLS使用估计的截面残差的方差 SUR 类似看似不相关回归——GLS使用估计的截面成员残差协方差矩阵
注意SUR/Parks估计有很多限制(见Beck and Katz(1995))。另外,EViews可能不能估计这样的模型:很少的时期或者庞大的截面成员。所用的时期数平均应至少不小于截面成员数。即使你有足够的观测值,估计的残差相关矩阵还必须是非奇异的。如果有一条不满足EViews的要求,EViews会显示错误信息:“Near Singular Matrix”。 复选框Iterate to convergence控制可行GLS程序。如果选择,EViews就一直迭代权重和系数直到收敛。如果模型中包括AR项,这个选择就没有意义,因为在AR估计中,EViews会一直迭代直至收敛。 6、选项 1.Iteration and Convergence Options(迭代和收敛选择) 如果选择加权估计和迭代至收敛,可以通过规定收敛准则和最大迭代次数控制迭代过程。点击方程对话框的Options按钮并输入要求值即可。 2.White Heteroskedasticity Covariance(White 异方差协方差) EViews能估计那些广义异方差性的强的协方差。这种形式的异方差性比上面介绍的截面异方差性更普遍,因为一个截面成员内的方差可以随时间不同。 要得到怀特标准差和协方差,点Options按钮,选择White heteroskedasticity Consistent Covariance。注意此选项不适用于SUR和随机影响估计。