第十章时间序列/截面数据模型在进行经济分析时经常会遇到时间序列和横截面两者相结合的数据。例如,在企业投资需求分析中,我们会遇到多个企业的若干指标的月度或季度时间序列;在城镇居民消费分析中,我们会遇到不同省市地区的反映居民消费和居民收入的年度时间序列。本章将前述的企业或地区等统称为个体,这种具有三维(个体、时间、指标)信息的数据结构称为时间序列/截面数据,有的书中也称为平行数据或面板数据(paneldata)。我们称这些数据为联合利用时间序列/截面数据(Pooledtimeseries,crosssection)。经典线性计量经济学模型在分析时只利用了时间序列/截面数据中的某些二维数据信息,例如使用若干经济指标的时间序列建模或利用横截面数据建模。然而,在实际经济分析中,这种仅利用二维信息的模型在很多时候往往不能满足人们分析问题的需要。例如,在生产函数分析中,仅利用横截面数据只能对规模经济进行分析,仅利用混有规模经济和技术革新信息的时间序列数据只有在假设规模收益不变的条件下才能实现技术革新的分析,而利用时间序列/截面数据可以同时分析企业的规模经济(选择同一时期的不同规模的企业数据作为样本观测值)和技术革新(选择同一企业的不同时期的数据作为样本观测值),可以实现规模经济和技术革新的综合分析。时间序列/截面数据含有横截面、时间和指标三维信息,利用时间序列/截面数据模型可以构造和检验比以往单独使用横截面数据或时间序列数据更为真实的行为方程,可以进行更加深入的分析。正是基于实际经济分析的需要,作为非经典计量经济学问题,同时利用横截面和时间序列数据的模型已经成为近年来计量经济学理论方法的重要发展之一。§10.1Pool对象Pool对象的核心是建立用来表示截面成员的名称表。为明显起见,名称要相对较短。例如,国家作为截面成员时,可以使用USA代表美国,CAN代表加拿大,UK代表英国。定义了Pool的截面成员名称就等于告诉了EViews,模型的数据结构。在上面的例子中,EViews会自动把这个Pool理解成对每个国家使用单独的时间序列。必须注意,Pool对象本身不包含序列或数据。一个Pool对象只是对基本数据结构的一种描述。因此,删除一个Pool并不会同时删除它所使用的序列,但修改Pool使用的原序列会同时改变Pool中的数据。一、创建Pool对象在本章中,使用的是一个研究投资需求的例子,包括了五家企业和三个变量的20个年度观测值的时间序列:5家企业:3个变量:GM:通用汽车公司I:总投资CH:克莱斯勒公司F:前一年企业的市场价值GE:通用电器公司S:前一年末工厂存货和设备的价值WE:西屋公司US:美国钢铁公司要创建Pool对象,选择Objects/NewObject/Pool…并在编辑窗口中输入截面成员的识别名称:对截面成员的识别名称没有特别要求,但必须能使用这些识别名称建立合法的EViews序列名称。此处推荐在每个识别名中使用“_”字符,它不是必须的,但把它作为序列名的一部分,可以很容易找到识别名称。二、观察或编辑Pool定义要显示Pool中的截面成员识别名称,单击工具条的Define按钮,或选择View/Cross-SectionIdentifiers。如果需要,也可以对识别名称列进行编辑。三、使用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对象来定义,因为如果没有截面识别名称,占位符“?”就没有意义。§10.2输入Pool数据有很多种输入数据的方法,在介绍各种方法之前,首先要理解时间序列/截面数据的结构,区别堆积数据和非堆积数据形式。时间序列/截面数据的数据信息用三维表示:时期,截面成员,变量。例如:1950年,通用汽车公司,投资数据。使用三维数据比较困难,一般要转化成二维数据。有几种常用的方法。一、非堆积数据存在工作文件的数据都是这种非堆积数据,在这种形式中,给定截面成员、给定变量的观测值放在一起,但和其他变量、其他截面成员的数据分开。例如,假定我们的数据文件为下面的形式:其中基本名I代表企业总投资、F代表前一年企业的市场价值、S代表前一年末工厂存货和设备的价值。每个企业都有单独的I、F、S数据。EViews会自动按第四章介绍的标准输入程序读取非堆积数据。并把每个截面变量看作一个单独序列。注意要按照上述的Pool命名规则命名。确认后EViews会打开新建序列的堆积式数据表。我们看到的是按截面成员堆积的序列,Pool序列名在每列表头,截面成员/年代识别符标识每行:二、堆积数据选择View/Spreadsheet(stackeddata),EViews会要求输入序列名列表Pool数据排列成堆积形式,一个变量的所有数据放在一起,和其他变量的数据分开。大多数情况下,不同截面成员的数据从上到下依次堆积,每一列代表一个变量:我们称上表数据是以截面成员堆积的,单击Order+/-实现堆积方式转换,也可以按日期堆积数据:每一列代表一个变量,每一列内数据都是按年排列的。如果数据按年排列,要确保各年内截面成员的排列顺序要一致。三、手工输入/剪切和粘贴可以通过手工输入数据,也可以使用剪切和粘贴工具输入:1.通过确定工作文件样本来指定堆积数据表中要包含哪些时间序列观测值。2.打开Pool,选择View/Spreadsheet(stackeddata),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/ImportPoolData(ASCII,.XLS,.WK?)…,要使用与Pool对象对应的输入程序。通过第四章的学习,大家对这个对话框应该比较熟悉,填写说明如下:注明Pool序列是按行还是按列排列,数据是按截面成员堆积还是按日期堆积。在编辑框输入序列的名称。这些序列名应该是普通序列名或者是Pool名。填入样本信息,起始格位置和表单名(可选项)。如果输入序列用Pool序列名,EViews会用截面成员识别名创建和命名序列。如果用普通序列名,EViews会创建单个序列。EViews会使用样本信息读入文件到说明变量中。如果输入的是普通序列名,EViews会把多个数据值输入到序列中,直到从文件中读入的最后一组数据。从ASCII文件中输入数据基本类似,但相应的对话框包括许多附加选项处理ASCII文件的复杂问题。详情请见第四章附录。§10.3输出Pool数据按照和上面数据输入相反的程序可进行数据输出。由于EViews可以输入输出非堆积数据,按截面成员堆积和按日期堆积数据,因此可以利用EViews按照需要调整数据结构。§10.4使用Pool数据每个截面成员的基础序列都是普通序列,因此EViews中对各单个截面成员序列适用的工具都可使用。另外,EViews还有专门适用于Pool数据的专用工具。可以使用EViews对与一特定变量对应的所有序列进行类似操作。一、检查数据用数据表形式查看堆积数据。选择View/Spreadsheet(stackeddata),然后列出要显示的序列。序列名包括普通序列名和Pool序列名。点击Order+/-按钮进行数据堆积方式的转换。二、描述数据可以使用Pool对象计算序列的描述统计量。在Pool工具栏选择View/DescriptiveStatistics…,EViews会打开如下对话框:在编辑框内输入计算描述统计量的序列。EViews可以计算序列的平均值,中位数,最小值,最大值,标准差,偏度,峰度,和Jarque-Bera统计量。下一步选择样本选项:(1)Individual(单独的):利用所有的有效观测值。即使某一变量的观测值是针对某一截面成员的,也计算在内。(2)Common(截面共同的):使用的有效观测值必须是某一截面成员的数据,在同一期对所有变量都有数值。而不管同期其他截面成员的变量是否有值。(3)Balanced(平衡的):使用的有效观测值必须是对所有截面成员,所有变量在同一期都有数值。最后还必须选择与计算方法相对应的数据结构:(1)堆积数据(Stackeddata):计算表中每一变量所有截面成员,所有时期的统计量。如果忽略数据的pool性质,得到的就是变量的描述统计量。(2)堆积数据(Stacked-meansremoved):计算除去截面平均值之后的描述统计量值。(3)截面成员变量(Cross-sectionspecific):计算每个截面变量所有时期的描述统计量。是通过对各单独序列计算统计量而得到的。(4)时期变量(Timeperiodspecific):计算时期特性描述统计量。对每一时期,使用pool中所有截面成员的变量数据计算的统计量。注意,后面两种方法可能产生很多输出结果。截面成员描述计算会对每一变量/截面成员组合产生一系列结果。如果有三个Pool变量,20个截面成员,EViews就会计算60个序列的描述统计量。可以把时期特性统计量存储为序列对象。从Pool窗口选择Procs/MakePeriodStatSeries…出现以下对话框,在编辑窗口输入想计算的时期统