我不是结构变更分析的专家,所以请耐心等待。我这里有一组季度数据集(作为可重现数据集):
+------------+--------------+--+--+
| date | abandon_rate | | |
+------------+--------------+--+--+
| 2009-07-01 | 0.0833 | | |
| 2009-10-01 | 0.2500 | | |
| 2010-01-01 | 0.1000 | | |
| 2010-04-01 | 0.0833 | | |
| 2010-07-01 | 0.2857 | | |
| 2010-10-01 | 0.1667 | | |
| 2011-01-01 | 0.3333 | | |
| 2011-04-01 | 0.2727 | | |
| 2011-07-01 | 0.1250 | | |
| 2011-10-01 | 0.2143 | | |
| 2012-01-01 | 0.3000 | | |
| 2012-04-01 | 0.1538 | | |
| 2012-07-01 | 0.3333 | | |
| 2012-10-01 | 0.2500 | | |
| 2013-01-01 | 0.0909 | | |
| 2013-04-01 | 0.2000 | | |
| 2013-07-01 | 0.1111 | | |
| 2013-10-01 | 0.1905 | | |
| 2014-01-01 | 0.1579 | | |
| 2014-04-01 | 0.3043 | | |
| 2014-07-01 | 0.1429 | | |
| 2014-10-01 | 0.2609 | | |
| 2015-01-01 | 0.3518 | | |
| 2015-04-01 | 0.3182 | | |
| 2015-07-01 | 0.2381 | | |
| 2015-10-01 | 0.3810 | | |
| 2016-01-01 | 0.1111 | | |
| 2016-04-01 | 0.1200 | | |
| 2016-07-01 | 0.1250 | | |
| 2016-10-01 | 0.1538 | | |
| 2017-01-01 | 0.3000 | | |
+------------+--------------+--+--+
对于我未经训练的眼睛,可以正常使用。
同样,当我去获取断点时,我得到以下数据:
Breakpoints at observation number:
m = 1 6
m = 2 21 26
m = 3 6 21 26
m = 4 6 14 21 26
m = 5 6 14 21 26 31
m = 6 6 11 16 21 26 31
Corresponding to breakdates:
m = 1 0.166666666666667
m = 2 0.583333333333333
m = 3 0.166666666666667 0.583333333333333
m = 4 0.166666666666667 0.388888888888889 0.583333333333333
m = 5 0.166666666666667 0.388888888888889 0.583333333333333
m = 6 0.166666666666667 0.305555555555556 0.444444444444444 0.583333333333333
m = 1
m = 2 0.722222222222222
m = 3 0.722222222222222
m = 4 0.722222222222222
m = 5 0.722222222222222 0.861111111111111
m = 6 0.722222222222222 0.861111111111111
Fit:
m 0 1 2 3 4 5 6
RSS 0.2769 0.2588 0.2287 0.2178 0.1958 0.1908 0.2010
BIC -65.8989 -61.1719 -58.4492 -53.0449 -49.7058 -43.4698 -34.4285
对我来说,似乎有一些断点。但是,当我尝试为这些中断日期建模时,我不会以日期结尾,而只会以值结尾。此外,当我尝试使用以下命令解决此问题时,出现此错误:
> us1 <- lm(US_abandonment_rates_ts ~ breakfactor(bp.US_abandonment, breaks = 1))
Error in model.frame.default(formula = US_abandonment_rates_ts ~ breakfactor(bp.US_abandonment, :
variable lengths differ (found for 'breakfactor(bp.US_abandonment, breaks = 1)')
关于我可能做错了什么的建议吗?谢谢!
编辑:我在这里遵循了Achim Zeilis的建议(R strucchange RSS and BIC for one breakpoint),并对我的数据进行了Chow测试以识别单个结构性中断:
fs.US_abandon <- Fstats(US_abandonment_rates_ts ~ 1)
> breakpoints(fs.abandon)
Optimal 2-segment partition:
Call:
breakpoints.Fstats(obj = fs.US_abandon)
Breakpoints at observation number:
6
Corresponding to breakdates:
0.1388889
很明显,我的数据集中第6点有一个断点(2011-01-01)。那我将如何检查剩余的断点?谢谢。
编辑:图表分解了我的数据:
答案 0 :(得分:1)
我认为很难用R导入您的数据,所以只需说几句话:
图形是什么样的?是否有结构性中断的明确迹象?
估计断点很复杂。大多数测试都难以找到样本终止点,因为它们会将数据分成2个子样本并估计了一个简单模型。但是该模型需要相对大量的观察才能有效。 (可以由breakpoints
中的h = XX修改)
即使我认为2011年1月1日是一个断点,也无法对此建模,因为您在休息前只有6个观测值。
Here,您会看到Zeileis先生支持的寻找结构性断裂的方法。
简而言之:
breakpoints