首页 > 解决方案 > 回归线的ggplot混合

问题描述

我对 ggplot2 包很陌生,但我还没有找到解决问题的方法。我正在尝试通过 ggplot 从混合回归模型中绘制回归线。

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

我有一个季度 GDP 数据(BNtrend,从 1960 年到 2019 年)和时间(1:240)的时间序列

df<-data.frame(BNtrend, Time)
dput(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)

我的模型是:

set.seed(123)
BNtfr1 <- stepFlexmix(BNtrend~Time,k = 1:5,nrep = 30, unique=F, drop=T)

我首先得到了正确的分类

ppfr <- ggplot(data=df,aes(x=tt,y=as.numeric(BNtrend)))+geom_point()+
        geom_point(data=df,colour=clusters(BNtfr11))

但我无法得到我的模型(BNtfr11)的三组回归线;我尝试了几种方法,通过键入每个组的截距和斜率的值或像这样重新调用模型:

ppfr+geom_abline(intercept=flexmix::parameters(BNtfr11)[1,1],slope=flexmix::parameters(BNtfr11)[2,1])

或在代码中添加数据:

ppfr + ppfr+geom_abline(data=df, intercept=flexmix::parameters(BNtfr11)[1,1],slope=flexmix::parameters(BNtfr11)[2,1])

在任何情况下,我都可以得到线条,也可以通过提示“随机”值(在我的观察范围内)我无法得到任何线条。你可以帮帮我吗?

ps 我通过标准 abline() 绘制了回归线并绘制了我的数据as.numeric(BNtrend),但我需要在 x 轴上设置年份并将我的数据设置为时间序列,我无法为组或回归线获得不同的颜色。

标签: rggplot2mixture-model

解决方案


推荐阅读