微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ggplot 衰退条混合模型

如何解决ggplot 衰退条混合模型

我希望得到一个解决方案,而不是花其他几周的时间;

library('flexmix')
library('ggplot2')

这是我的数据,BNtrend 是 GDP 的趋势,Years 是我创建的一个变量,设置在 x 轴上。

structure(list(BNtrend = c(13.095175293036,13.0993301025131,13.1069366791082,13.1189374584571,13.1350538027743,13.1506421543937,13.1664356010119,13.1834018596698,13.2012815115765,13.2170466115525,13.2312764484766,13.2436326240254,13.223802880737,13.2759771128642,13.3031668531272,13.3038600518644,13.3261555344032,13.3336743753944,13.3467581516518,13.3552332861849,13.3569329470084,13.3843769973525,13.3961211726027,13.4105766918397,13.4190703113088,13.435057828383,13.4455970370148,13.4506515027725,13.4692840587601,13.4787375917601,13.4885153723327,13.4983270708452,13.5290443225699,13.437330514154,13.5723883625349,13.5595534422666,13.5670231281496,13.5942351256737,13.600543328303,13.6092423546905,13.6294727303166,13.6405828772163,13.6548123934857,13.6705212802673,13.6701415195454,13.6909646678979,13.7058124564027,13.7136449216881,13.7276538001874,13.7301972040574,13.7401930633356,13.7571466588357,13.7767145022768,13.7862724918047,13.7951893732502,13.8084865561786,13.8174150206514,13.8221289717222,13.832298914949,13.8141313413209,13.8124270466906,13.8149928553372,13.818532323875,13.8328858150739,13.8469415369374,13.8584226346086,13.8625528467141,13.8762395345416,13.8865699905811,13.8902832091968,13.8953286104861,13.8973451585215,13.9125376134429,13.9285460260767,13.9256108161624,13.9362597163722,13.9442060869527,13.9538172750535,13.9653195530621,13.9660740523907,13.9788098242029,13.9710268594953,13.972514335385,13.9707932700244,13.9755945396441,13.9809334794803,13.9883819389672,13.9929829509508,14.0017711868136,14.0077277991188,14.0080676984227,14.0147229125317,14.0187052665456,14.0186406309051,14.0207027431476,14.0249966013069,14.0324163519747,14.0348006560061,14.0403017889644,14.0423901908048,14.0444091529726,14.0517720869456,14.0581275990533,14.0604881976712,14.0654055453467,14.0768714884659,14.0796435096314,14.0822862189889,14.0850254224223,14.0970486537848,14.1041810470492,14.12111559683,14.1327906234963,14.1390835467388,14.1532519347122,14.1619077329774,14.1762686248057,14.1828227618801,14.1953741638095,14.2080514738331,14.214037212276,14.2176962515356,14.2223783428081,14.2246050455239,14.2240593184878,14.2280202128773,14.2310062354031,14.2352651369617,14.246108919969,14.2437195964711,14.2449529230093,14.2424294917811,14.2359199598224,14.2376130816945,14.2388567478329,14.2408870655043,14.2489174752452,14.2594836296117,14.2646697373278,14.2739811650525,14.2789612233899,14.2832663481371,14.2846374914546,14.286659232981,14.2926121795993,14.2945084393845,14.3007016731038,14.3014714345679,14.3053672577644,14.3173617261979,14.3235555077303,14.3356865508933,14.3435499800682,14.352878575939,14.3596009494531,14.367099951356,14.3725280767519,14.3812608071114,14.3931415240925,14.4068044581147,14.415843636918,14.4255813125126,14.4316073217033,14.4399505215255,14.4454112371497,14.4463419514951,14.4500398305418,14.4494629496677,14.4536524662499,14.4581948637451,14.4620021592991,14.4616696942319,14.4636071371508,14.4609488838087,14.4690652941137,14.4761163342055,14.4853627958463,14.4914324752987,14.4941596852095,14.5021534991375,14.5038806428157,14.5061182190192,14.5115923258539,14.5191616866765,14.5265101853613,14.5368316781644,14.5357320143811,14.5453293852862,14.5518327663424,14.5597583378573,14.5626067206576,14.5652273996698,14.5697761412341,14.5640351317634,14.5616400732287,14.5464776339347,14.5299099379193,14.5308049667196,14.5316216733001,14.5393879027306,14.54234768531,14.5478549092473,14.5537008839277,14.5607621039362,14.5713232503352,14.5704434103765,14.5742371955361,14.5764419994623,14.5775126134385,14.5752962598274,14.5777466878568,14.5764789084648,14.5764708991711,14.5839177947624,14.5829015919879,14.5888974871272,14.5888905323817,14.5903083671679,14.5953330455066,14.5961151014388,14.6018086946804,14.6003737899879,14.604551785862,14.6051441742942,14.6131227005887,14.6091837580326,14.6125732994942,14.6184153294739,14.6267054030438,14.6334167894551,14.6405294109757,14.6490257740009,14.6498452117373,14.6522311476182,14.6558765336456,14.6624461356356,14.6671510085831,14.6695204578185,14.6717349297696,14.6693117168385),Time = 1:240,Years = c(1960,1960.25,1960.5,1960.75,1961,1961.25,1961.5,1961.75,1962,1962.25,1962.5,1962.75,1963,1963.25,1963.5,1963.75,1964,1964.25,1964.5,1964.75,1965,1965.25,1965.5,1965.75,1966,1966.25,1966.5,1966.75,1967,1967.25,1967.5,1967.75,1968,1968.25,1968.5,1968.75,1969,1969.25,1969.5,1969.75,1970,1970.25,1970.5,1970.75,1971,1971.25,1971.5,1971.75,1972,1972.25,1972.5,1972.75,1973,1973.25,1973.5,1973.75,1974,1974.25,1974.5,1974.75,1975,1975.25,1975.5,1975.75,1976,1976.25,1976.5,1976.75,1977,1977.25,1977.5,1977.75,1978,1978.25,1978.5,1978.75,1979,1979.25,1979.5,1979.75,1980,1980.25,1980.5,1980.75,1981,1981.25,1981.5,1981.75,1982,1982.25,1982.5,1982.75,1983,1983.25,1983.5,1983.75,1984,1984.25,1984.5,1984.75,1985,1985.25,1985.5,1985.75,1986,1986.25,1986.5,1986.75,1987,1987.25,1987.5,1987.75,1988,1988.25,1988.5,1988.75,1989,1989.25,1989.5,1989.75,1990,1990.25,1990.5,1990.75,1991,1991.25,1991.5,1991.75,1992,1992.25,1992.5,1992.75,1993,1993.25,1993.5,1993.75,1994,1994.25,1994.5,1994.75,1995,1995.25,1995.5,1995.75,1996,1996.25,1996.5,1996.75,1997,1997.25,1997.5,1997.75,1998,1998.25,1998.5,1998.75,1999,1999.25,1999.5,1999.75,2000,2000.25,2000.5,2000.75,2001,2001.25,2001.5,2001.75,2002,2002.25,2002.5,2002.75,2003,2003.25,2003.5,2003.75,2004,2004.25,2004.5,2004.75,2005,2005.25,2005.5,2005.75,2006,2006.25,2006.5,2006.75,2007,2007.25,2007.5,2007.75,2008,2008.25,2008.5,2008.75,2009,2009.25,2009.5,2009.75,2010,2010.25,2010.5,2010.75,2011,2011.25,2011.5,2011.75,2012,2012.25,2012.5,2012.75,2013,2013.25,2013.5,2013.75,2014,2014.25,2014.5,2014.75,2015,2015.25,2015.5,2015.75,2016,2016.25,2016.5,2016.75,2017,2017.25,2017.5,2017.75,2018,2018.25,2018.5,2018.75,2019,2019.25,2019.5,2019.75)),class = "data.frame",row.names = c(NA,-240L))

这是衰退日期的表格:

Reces_table <- read.table(text = 
                            "Start     End
1   1963-10-01  1968-04-01
2   1971-10-01  1972-06-01
3   1974-02-01  1975-06-01
4   1979-12-01  1981-01-01
5   1982-05-01  1983-09-01
6   1986-05-01  1987-02-01
7   1990-01-01  1993-09-01
8   1995-02-01  1997-01-01
9   2000-11-01  2003-05-01
10  2008-01-01  2009-05-01
11  2011-09-01  2013-01-01
12  2014-09-01  2016-07-01
13  2017-12-01  2019-10-01",header = TRUE,stringsAsFactors = FALSE)

我在 SoF 上关注了几个问答,但我无法解决我的问题: 我按 stepFlexmix 将我的观察结果分组,然后绘制它们,但我需要的是插入衰退条。这是我运行的代码

BNtfr1 <- stepFlexmix(BNtrend.t~Time,k = 1:5,nrep = 30,unique=F,drop=T)
BNtfr11 <- getModel(BNtfr1,"ICL")
p <- ggplot(data=df.bnfr.t,aes(x=Time,y=BNtrend))+
        geom_point()+geom_point(aes(colour = as.factor(BNtfr11@cluster)))+
         geom_abline(data = as.data.frame(t(flexmix::parameters(BNtfr11))),aes(intercept = `coef.(Intercept)`,slope = `coef.time.gdp`,colour = as.factor(seq_along(sigma))))       
 p+geom_vline(xintercept = c(24,59,83,115,143,167,195),linetype=3,show.legend = T)

我的第一个问题是,虽然在这种情况下我能够在 x 轴上绘制回归线,但如果我将 BNtrend 设置为时间序列(例如通过设置 {{1}我得到了 x 轴上的年份,但 ggplot 没有绘制回归线; 我的第二个问题是,当我尝试绘制衰退条时,代码似乎不起作用;我尝试运行以下两个:

ggplot(data=,aes(x=Years,y=BNtrend)
p+geom_rect(data= Reces_table,inherit.aes = FALSE,aes(xmin='1963-10-01','1971-10-01','1974-02-01','1979-12-01','1982-05-01','1986-05-01','1990-01-01','1995-02-01','2000-11-01','2008-01-01','2011-09-01','2014-09-01','2017-12-0',xmax='1968-04-01','1972-06-01','1975-06-01','1981-01-01','1983-09-01','1987-02-01','1993-09-01','1997-01-01','2003-05-01','2009-05-01','2013-01-01','2016-07-01','2019-10-01',ymin=-Inf,ymax=+Inf,fill='deeppink',alpha=0.2))

后者似乎改进了前者,但我不明白为什么我的趋势函数会缩小以及 x 轴值代表什么。 我希望有人可以帮助我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。