Strucchange声称没有中断日期,但仍会报告

时间:2018-07-22 02:05:59

标签: r time-series

我不是结构变更分析的专家,所以请耐心等待。我这里有一组季度数据集(作为可重现数据集):

+------------+--------------+--+--+
|    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)。那我将如何检查剩余的断点?谢谢。

编辑:图表分解了我的数据:

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为很难用R导入您的数据,所以只需说几句话:

图形是什么样的?是否有结构性中断的明确迹象?

估计断点很复杂。大多数测试都难以找到样本终止点,因为它们会将数据分成2个子样本并估计了一个简单模型。但是该模型需要相对大量的观察才能有效。 (可以由breakpoints中的h = XX修改)

即使我认为2011年1月1日是一个断点,也无法对此建模,因为您在休息前只有6个观测值。

Here,您会看到Zeileis先生支持的寻找结构性断裂的方法。

简而言之:

  1. 运行supF测试
  2. 如果break = breakpoints
  3. 分割样品
  4. 与每个新样品重复,直到supF测试没有发现进一步断裂的迹象