登陆注册
12278300000015

第15章 结语

综合前文的分析,现将本研究的基本结论概述如下。

第一,自1999年至2009年,我国宏观经济波动经历4次短周期,日期为1996年6月至2001年12月,2001年12月至2005年4月,2005年4月至2009年5月(按照波动的波谷计算),周期长度大致为4年。

第二,利用时差相关系数法选定的先行指标包括:货币供应量M1、固定资产投资本年新开工项目个数增速、股票成交量增速、固定资产投资增速、商品房销售额增速、生铁产量增速及货物周转量增速等7个指标。一致指标包括进口额增速、发电量增速、水泥产量增速、出口额增速、钢材产量增速、汽车产量增速及能源生产增速等指标。

第三,利用主成分分析法构建先行合成指数和一致合成指数。实践证明,先行合成指数的平均先行期约为2个月,先行合成指数对经济运行具有较好的先导功能(领先宏观经济的变化而变化)和预测功能(预测宏观经济的未来变化趋势)。先行合成指数表明,2009年2月我国宏观经济景气达到谷底,随后开始逐步回升,2010年1月和2月,先行合成指数出现回落。

第四,Probit模型分析我国宏观经济转折点,Probit模型预测2010年3月和2010年4月的经济景气概率,2010年3月概率为0.88,2010年4月为0.72,表明在3月和4月,我国的经济将持续向好,整体经济增长不会出现转折。

程序附录

*BBAlternate enforces the requirement that peaks and troughs alternate。 If we

*have two consecutive turning points of the same type, we take the more extreme

*of the two based upon the values in"x"。

procedure BBAlternate peak trough x startl endl

type seriespeak trough x

type integerstartl endl

local seriescounts

local integer count

local realwmin wmax

*If we have consecutive peaks or consecutive troughs, choose the highest peak and

*lowest trough。 ACC applied to the series PEAK will give a step function which is

*constant between peaks。 For each test value of this series(that is, for each

*run between peaks),we analyze all values for which TROUGH is non zero and pick

*the one that achieves the smallest value for X。

acc peak startl endl counts

do count=0,fix(counts(endl))

sstats(min, smpl=(counts==count。 and。trough))startl endl x>>wmin

set trough startl endl=%if(counts==count。 and。trough, x==wmin, trough)

end do count

*Analogous treatment for analyzing peaks between troughs

acc trough startl endl counts

do count=0,fix(counts(endl))

sstats(max, smpl=(counts==count。 and。peak))startl endl x>>wmax

set peak startl endl=%if(counts==count。 and。peak, x==wmax, peak)

end do count

end

*************************************************************************

*BBRefine refines the dates of the peak and trough dummies based upon the series

*X。 The new dates are the highest(for peaks)or lowest(for troughs)which are

*within 5 periods(controlled by"span"option)of the old dates。

*Notes, peaks and troughs must alternate, and this is checked and the dates

*modified if necessary

procedure BBRefine peak trough x startl endl

type series peak trough x

type integerstartl endl

option integer span 5

local series max min time extract

local integer npt tp

local real tpx

mvfractiles(max=max, min=min, centered, span=2*span+1)x startl+span endl span

*Pad out the max and min series at the ends of the data set

set max startl startl+span-1=max(startl+span)

set max endl-span+1 endl=max(endl-span)

set min startl startl+span-1=min(startl+span)

set min endl-span+1 endl=min(endl-span)

set time startl endl=t

sample(smpl=peak)time startl endl extract 1

compute npt=%nobs

do i=1,npt

compute tp=fix(extract(i))

sstats(max, smpl=(x==max(tp)))tp-span tp+span t>>tpx

compute peak(tp)=0. 0,peak(fix(tpx))=1.0

end do i

sample(smpl=trough)time startl endl extract 1

compute npt=%nobs

do i=1,npt

compute tp=fix(extract(i))

sstats(max, smpl=(x==min(tp)))tp-span tp+span t>>tpx

compute trough(tp)=0. 0,trough(fix(tpx))=1.0

end do i

*Make sure dates alternate

@BBAlternate peak trough x startl endl

end

*************************************************************************

*BBEnforceMinCycle enforces the restriction that a cycle be at least 15 months

*(controlled by mincycle option)peak to peak or trough to trough。 If we run

*across such a situation, the more extreme of the two peak/trough values is

*retained and the other eliminated。

procedure BBEnforceMinCycle peak trough x startl endl

type seriespeak trough x

type integerstartl endl

option integer mincycle 15

local seriestime extract

local integeri p0 p1

set time startl endl=t

sample(smpl=peak)time startl endl extract 1

do i=2,%nobs

compute p1=fix(extract(i)),p0=fix(extract(i-1))

if p1-p0<mincycle

if x(p1)<x(p0)

compute peak(p1)=0. 0

else

compute peak(p0)=0. 0

end do i

@BBAlternate peak trough x startl endl

sample(smpl=trough)time startl endl extract 1

do i=2,%nobs

compute p1=fix(extract(i)),p0=fix(extract(i-1))

if p1-p0<mincycle

if x(p1)>x(p0)

compute trough(p1)=0. 0

else

compute trough(p0)=0. 0

end do i

@BBAlternate peak trough x startl endl

end

*************************************************************************

*BBEnforceMinPhase enforces the restriction that a phase(peak to trough or

*trough to peak)be at least 5 months(controlled by the minphase option)。 If we

*run across such a situation, the later of the two is dropped, the alternation

*rule is reapplied and we rescan the data。 This is repeated until all phases

*mean the minimum length。

procedure BBEnforceMinPhase peak trough x startl endl

type seriespeak trough x

type integerstartl endl

option integer minphase 5

local seriestime extract

local integerntp p1

local realminvalue

*Repeat until the minimum phase is 5 or larger

set time startl endl=t

loop

*Extract the list of turning points into"extract"

sample(smpl=peak+trough)time startl endl extract 1

compute ntp=%nobs

sstats(min)2 ntp extract-extract{1}>>minvalue

if minvalue>=minphase

break

*Classify the shortest phase, and knock it out of its dummy

compute p1=fix(extract(%minent))

if peak(p1)

compute peak(p1)=0. 0

else

compute trough(p1)=0. 0

*Enforce alternation and continue

@BBAlternate peak trough x startl endl

end loop

end

*************************************************************************

*BBEnforceEndPoints eliminates peaks and troughs at both ends which are lower(or

*higher)than values closer to end。

procedure BBEnforceEndPoints peak trough x startl endl

type seriespeak trough x

type integer startl endl

local realtp0

*Keep looping over the front end, eliminating turning points until the first

*turning point is higher(peak)or lower(trough)than the initial value。

loop

sstats(min, smpl=peak+trough)startl endl t>>tp0

if peak(fix(tp0))。 and。x(fix(tp0))<x(startl){compute peak(fix(tp0))=0

next}

else

if trough(fix(tp0))。 and。x(fix(tp0))>x(startl){compute trough(fix(tp0))=0

next}

break

end loop

*Keep looping over the back end, eliminating turning points until the first

*turning point is higher(peak)or lower(trough)than the final value

loop

sstats(max, smpl=peak+trough)startl endl t>>tp0

if peak(fix(tp0))。 and。x(fix(tp0))<x(endl){

compute peak(fix(tp0))=0

next}

else

if trough(fix(tp0))。 and。x(fix(tp0))>x(endl){

compute trough(fix(tp0))=0 next}

break

end loop

end

*************************************************************************

*BBMCD calculates the months of statistical dominance for series x

procedure BBMCD x startl endl

type seriesx

type integerstartl endl

option integer max12

option integer*width

local seriesxsp irreg

local realnum den

filter(type=spencer, width=15,extend=repeat)x startl endl xsp

set irreg startl endl=x xsp

do j=1,max

sstats startl+j endl abs(irreg-irreg{j})>>num abs(xsp-xsp{j})>>den

if num<den{

compute width=j

return}

end do j

disp"No acceptable lag for MCD。 Increase max"

compute width=max

end

*************************************************************************

procedure BBOutput peak trough startl endl

type seriespeak trough

type integerstartl endl

option choiceprint 1 none final all

option choicelevel 1 short long

option stringtitle

local seriestime expeak extrough

local integeri

local integerpeakbase troughbase

local integertroughoffset peakoffset npeak ntrough

if print==1. or。level==1.and。print==2

return

set time startl endl=t

sample(smpl=peak)time startl endl expeak1

compute npeak=%nobs

sample(smpl=trough)time startl endl extrough 1

compute ntrough=%nobs

if extrough(1)<expeak(1)

compute peakbase=3,troughbase=2,troughoffset=0,peakoffset=1

else

compute peakbase=2,troughbase=2,troughoffset=1,peakoffset=0

if level==1{report(action=define)

report(atrow=1,atcol=1,span)title

report(atrow=2,atcol=1)"Peaks""Troughs"

do i=1,npeak

report(atrow=i+peakbase, atcol=1)%datelabel(fix(expeak(i)))

end do i

do i=1,ntrough

report(atrow=i+troughbase, atcol=2)%datelabel(fix(extrough(i)))

end do i

report(action=show)}

else{report(action=define)

report(atrow=1,atcol=1,span)title

report(atrow=2,atcol=1)"Peaks""Peak to Peak""Trough to Peak""Troughs""Trough to Trough""Peak to Trough"

do i=1,npeak

report(atrow=i+peakbase, atcol=1)%datelabel(fix(expeak(i)))

if i>1

report(atrow=i+peakbase, atcol=2)fix(expeak(i)-expeak(i-1))

if i>troughoffset

report(atrow=i+peakbase, atcol=3)fix(expeak(i)-extrough(i-troughoffset))

end do i

do i=1,ntrough

report(atrow=i+troughbase, atcol=4)%datelabel(fix(extrough(i)))

if i>1

report(atrow=i+troughbase, atcol=5)fix(extrough(i)-extrough(i-1))

if i>peakoffset

report(atrow=i+troughbase, atcol=6)fix(extrough(i)-expeak(i-peakoffset))

end do i

report(action=show)}

end

procedure BryBoschan x start end

type seriesx

type integerstart end

option integer ma

option choiceprint 1 none final all

option series*peak

option series*trough

option switchquarterly 0

local integerstartl endl fwidth

local reallpeaksum ltroughsum

local integercenterspan initialspan refinespan mincycle minphase

local seriesxsp d xo xspo x12 max min lpeak ltrough mcdx

local integerBBQuarterly

*Set control parameters for quarterly vs monthly

if。 not。%defined(x){

disp"Syntax:@BryBoschan(options)>>x<<start end"

return}

*Override<<quarterly>>option if the data are quarterly

if quarterly。 or。2:1-1:1==4

compute BBQuarterly=1

else

compute BBQuarterly=0

if BBquarterly

compute centerspan=4,initialspan=2,refinespan=2,mincycle=5,minphase=2

else

compute centerspan=12,initialspan=5,refinespan=5,mincycle=15,minphase=5

inquire(series=x)startl<<start endl<<end

*Step I

*For monthly data, compute a 15 term Spencer MA as the initial estimate of the trend cycle。

*EXTEND=REPEAT allows the filter to be computed over the full range by making pre sample

*values equal to the first observation and post-sample values equal to the last

*observation。 Replace outliers with the Spencer MA value。

*For quarterly data, just take the raw data series

if BBquarterly

set xo startl endl=x

else{

filter(type=spencer, width=15,extend=repeat)x startl endl xsp

set d=x xsp

diff(standardize)d startl endl

set xo startl endl=%if(abs(d)>=3.5,xsp, x)}

*Step II

*For monthly data, do symmetric one year moving averages, for quarterly, just take raw data。

*Do preliminary check for peaks and troughs by seeing which data points are the maximum or

*minimum within a centered eleven month(five quarter)period window(leaving out any

*points near the ends)。

if BBquarterly

set x12 startl endl=xo

else

filter(type=centered, span=centerspan, extend=repeat)xo startl endl x12

mvfractiles(max=max, min=min, centered, span=2*initialspan+1)x12 startl+initialspan endl initialspan

*Pad out the ends of the max and min series

set max startl startl+initialspan-1=max(startl+initialspan)

set max endl-initialspan+1 endl=max(endl-initialspan)

set min startl startl+initialspan-1=min(startl+initialspan)

set min endl-initialspan+1 endl=min(endl-initialspan)

set lpeakstartl endl=t>=startl+initialspan。and。t<=endl-initialspan。and。x12==max

set ltrough startl endl=t>=startl+initialspan。and。t<=endl-initialspan。and。x12==min

*Check for at least one peak or trough

sstats startl endl lpeak>>lpeaksum

sstats startl endl ltrough>>ltroughsum

if lpeaksum==0. 0.and。ltroughsum==0.0

{display

display"Turning Points for Series"+%l(x)

display"****************"

display"No Cycles Found"

display"****************"

display

return}

*If have consecutive peaks or consecutive troughs, choose the highest peak and

*lowest trough。

@BBAlternate lpeak ltrough x12 startl endl

@BBOutput(print=print, title="Step II",level=short)lpeak ltrough startl endl

*Skip steps III and IV for quarterly data

if BBquarterly{compute fwidth=refinespan

branch step5}

*Step III

filter(type=spencer, width=15,extend=repeat)xo startl endl xspo

*Refine turning points using the resmoothed data

@BBRefine(span=refinespan)lpeak ltrough xspo startl endl

@BBAlternate lpeak ltrough x startl endl

*Enforce minimum cycle lengths

@BBEnforceMinCycle(mincycle=mincycle)lpeak ltrough xspo startl endl

@BBOutput(print=print, title="Step III",level=short)lpeak ltrough startl endl

*Step IV

:step4

if%defined(ma)

compute fwidth=ma

else{@BBMCD(max=12,width=fwidth)x startl endl

if fwidth<=2

compute fwidth=3

else

if fwidth<=4

compute fwidth=4

else

if fwidth<=6

compute fwidth=5

else

compute fwidth=6}

filter(width=fwidth, type=centered, extend=repeat)x startl endl mcdx

@BBRefine(span=refinespan)lpeak ltrough mcdx startl endl

@BBAlternate lpeak ltrough x startl endl

@BBOutput(print=print, title="Step IV",level=short)lpeak ltrough startl endl

compute fwidth=%imax(fwidth,4)

*Step V

:step5

@BBRefine(span=fwidth)lpeak ltrough x startl endl

@BBAlternate lpeak ltrough x startl endl

@BBEnforceEndPoints lpeak ltrough x startl endl

@BBEnforceMinCycle(mincycle=mincycle)lpeak ltrough x startl endl

@BBEnforceMinPhase(minphase=minphase)lpeak ltrough x startl endl

@BBOutput(print=print, title="Turning Points for Series"+%l(x),level=long)lpeak ltrough startl endl

if%defined(peak)

set peak startl endl=lpeak

if%defined(trough)

set trough startl endl=ltrough

end

参考资料

1.梁琪,滕建州。中国经济周期波动的经验分析[J]。世界经济,2007(2)。

2.李星。我国商品市场景气转折点的分析与预测[J]。财经理论与实践,2008(11)。

3.陈磊,孔宪丽。转折点判别与经济周期波动态势分析[J]。数量经济技术经济研究,2007(6)。

4.姜向荣。景气指标的筛选方法及运用[J]。统计与决策,2007(2)。

5.冯润民。基于竞争神经网络宏观经济预警指标选取研究[J]。现代管理学,2009(1)。

6.丁文斌。北京先行经济指数研究[J]。山西财经大学学报,2004(8)。

7.Sanjib Bordoloi and Raj Rajesh。Forecasting the Turning Points of the Business Cycles With Leading Indicators in India:A Probit Approach。Paper Prepared for the Singapore Economic Review Conference August 2-4,2007 at Singapore。

同类推荐
  • 世界上最有趣的经济学故事

    世界上最有趣的经济学故事

    为什么女人的衣服扣子在左边,而男人的却在右边?为什么牛奶装在方盒里,而可乐却装在圆瓶子里?
  • 拿来就用的经济学

    拿来就用的经济学

    经济学是一门严谨的科学。当你学到越来越深入,就会恍然大悟:原来自己已经在转行学数学了!确实,现在的经济学研究越来越借助数学这个工具,甚至有人莫名其妙地认为,如果你的研究中没有一些复杂的数学公式,肯定就算不上高深、前沿,称不了“专家”,拿着这样的“研究成果”你都不好意思跟人打招呼。但是,本书完全没有数学公式,规避数学公式深奥难懂的缺点,用通俗易懂、幽默风趣的语言,向读者讲述一个个关于经济学的故事。并从这些有趣的故事中教会读者什么是经济学,经济的逻辑是什么,以及怎样运用经济学理论来撬开经济之锁,还原会融真相。
  • 怪诞博弈论

    怪诞博弈论

    “怪诞博弈论”就是用博弈论剖析生活中超出常理、出其不意、不按常规出牌而出奇制胜的各种现象。这是一本教你如何在工作中和老板、同事打交道的书;这是一本教你如何在生活中实现个人利益最大化的书。博弈论不可怕,怪诞博弈论减少疑惑。
  • 中国式经济增加值考核与价值管理

    中国式经济增加值考核与价值管理

    本书对EVA的概念框架进行了系统的介绍,对EVA的功能和优缺点进行了全面分析,对国资委经济增加值细则进行了全面解读,对我国企业开展EVA价值管理进行了重点阐述,对建立基于EVA的薪酬激励设计也进行了初步探索。
  • 中国农地集体产权制度研究

    中国农地集体产权制度研究

    本书构建基于产权经济学的理论和方法,在梳理我国农地制度变迁的历史经验和现实矛盾的基础上,提出了产权主体的合作人假定与和谐产权关系的理论分析框架,并运用于农地集体产权制度的分析。
热门推荐
  • 女仆饭店

    女仆饭店

    ···可爱小萝莉,与女仆饭店的情缘,对污秽之血的渴望,对食物的憧憬。完成一幅幅美丽动人的画面。···追求完美,追求快乐,追求满足自己的···············郑重声明18禁。未成年,胆小人士绕行,···········原创正版,模范死罪。······
  • 我的第一本动物科学探索发现

    我的第一本动物科学探索发现

    全面关注孩子的智力开发。以生动、有趣的故事。活泼、美观的版面,而给予孩子们以知识上的传授、阅读上的享受。本丛书在培养孩子智商的同时,也通过故事中隐含的道理来给予他们以情商方面的培育与引导,促进他们的身心健康发展。成为一个人格完善的人。
  • 精神自治(修订版)

    精神自治(修订版)

    透过《王开岭文集(随笔卷):精神自治(修订版)》,作为读者,我游历了一个人的精神地理,被那些从未见过的神奇风光吸引。那风光在日常的旅游地图上是见不到的。我不敢断言这样的地理绝无仅有,但我确定的是,这是当代为数不多的身兼多种文质的作家和作品。《王开岭文集(随笔卷):精神自治(修订版)》让我看到了一个智者、一位诗人、一颗良心、一个浪漫而冷峻的同时代人。这样一个夜晚,携上这样一本书,与之同行。我感到了雪的融化、心的欢愉和春天的临近。
  • 名门盛婚:顾少的绝色宠妻

    名门盛婚:顾少的绝色宠妻

    “离婚?做梦!”他每一分每一秒都在费劲心思折磨她,“我这辈子都不会忘记你给我的耻辱,我要把你留在身边折磨你每分每秒!折磨到你死为止!”终于她放下一切,离开,而他却像个得了失心疯的人,荒芜在每个有她的曾经。
  • 冠军之道

    冠军之道

    我叫林安福,万万没想到,我竟然穿越到了千禧年初,还当上尼克斯队主教练……太棒了,只要好好干,用不了多久,我就会率队73胜,拿到最佳教练,闯进季后赛,赢得总冠军,走上人生巅峰。想想还有点小激动呢!一次又一次,一次又一次,践踏我的尊严,我忍不了了!纽约我受够了!妈蛋,敢瞧不起我!没关系,我把天赋带到隔壁,用不了多久,我就会率队73胜,拿到最佳教练,闯进季后赛,赢得总冠军,走上人生巅峰。想想还有点小激动呢!嘿嘿,果然不费吹灰之力。放马过来吧,季后赛!哼?对手还是尼克斯,算了,随便笑一下横扫掉好了!
  • 有朝一日

    有朝一日

    旁人对顾旭白的评价只有一个字:冷。只有薛宁知道,他血管里流淌的血,有多热。
  • 终极系统

    终极系统

    宁凡是一个游戏的热衷者,也是一个终极玩家,一天,正在玩终极游戏,不知道怎么的,就睡着了,醒来后,发现自己身处异世界,得到游戏里的终极系统,从此,醉卧美人漆,醒掌天下权,我的阵法系统,泡妞系统,炼丹系统,终极系统……美女,我是土豪,嫁给我吧!!
  • 揭开传染病神秘面纱:巴斯德的故事

    揭开传染病神秘面纱:巴斯德的故事

    本书主要以青少年为阅读对象、介绍巴斯德——这位贡献杰出的医学伟人、法国著名医学微生物学家的故事,介绍他在医学领域的探索、并介绍其为人类创造的一项伟大业绩“狂犬疫苗”。
  • 双生蝶:冰冷少爷拽小姐

    双生蝶:冰冷少爷拽小姐

    一切都是命运吗?对,是命运!但,更是因果。五岁那年,他们站在一所学校门口,小女孩拉扯着小男孩的衣袖仰头望着他说:“哥哥,等我们长大了也来这里上学好不好?”小男孩看着她满怀希冀的小脸微笑着回答:“好,萤儿在哪里,我就在哪里。萤儿要来这里上学,我们就来这里上学。”听到小男孩的回答小女孩高兴的在原地拍手蹦跳了起来。看着她欢快的身影,小男孩也满脸笑意···!然而,不久!大人们的纠纷却将他们卷入其中!最终导致了小女孩的失踪!十多年后,他们相见却已不相识!A栋宿舍楼里:“蓝色眼睛的,有你在,我们宿舍都不用开空调了”某女夸张的说道。“那不是很好么?连电费都省了。”某男面无表情的回答。“···”众人无语
  • 邪王戏情:独宠萌妃乖乖

    邪王戏情:独宠萌妃乖乖

    “看了我的真身还想逃。”某王站在水里笑的妖孽。“相信我,我真的一点都不想知道你就是那个东西。”某女在浴间抱头鼠窜,急着找路开逃。“负责吧,我的秘密只有你知道,或者你也可以有另一个选择。”危险眯眸。“什么选择?”某小女子回头满眼希翼。“让我吃了。”闲闲冷笑。某女吓住,“要不我还是选第一个吧?唉?等一下,你在干什么?”某王邪邪一笑,把人拖进池子里,“先洞房。”