如何在R中应用chow test / Fstats来检测结构变化

时间:2015-08-26 02:32:25

标签: r statistics

我有从1993年到2015年的月度数据,并希望检测数据中的结构变化。

我知道有一个包&#34; strucchange&#34;,它可以计算Fstats来确定数据不同点之间的统计显着性,但我不确定它是什么方法。< / p>

根据不同的统计显着性值,我会得到它具有最高值的点,并将其确定为我的断点,并使用我最近的观察值进行预测。

例如,这是我的一些数据集,

       Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
2006  7.55  7.63  7.62  7.50  7.47  7.53  7.55  7.47  7.65  7.72  7.78  7.81
2007  7.71  7.67  7.85  7.82  7.91  7.91  8.00  7.82  7.90  7.93  7.99  7.93
2008  8.46  8.48  9.03  9.43 11.58 12.19 12.23 11.98 12.26 12.31 12.13 11.99
2009 11.51 11.75 11.87 11.91 11.87 11.69 11.66 11.23 11.37 11.71 11.88 11.93
2010 11.99 11.84 12.33 12.55 12.58 12.67 12.57 12.35 12.30 12.67 12.71 12.63
2011 12.60 12.41 12.68 12.48 12.50 12.30 12.39 12.16 12.38 12.36 12.52 12.63

我想找到第一个&#34;多少&#34;价值和最近的&#34;多少&#34;值,然后提取最近的值。

我如何在R?

中执行此操作

我想尝试运行Fstats,但它也会给我错误信息,因为我不确定它是如何工作的。

代码:

fs <- Fstats(product, from = c(1993, 1), to = c(2015,5)) 

错误:

  

公式$ x中的错误:$运算符对原子矢量无效

我不确定如何键入&#34;公式&#34; Fstats得到我想要的东西,所以我只是输入数据。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

为了检测结构更改,需要了解稳定性的概念。这是必要的,因为有许多变化在某种程度上是规则的,例如,你可以有一个具有恒定均值和方差的平稳时间序列。或者你可以有一个稳定的季节性模式。或随机游走中的稳定漂移。或者一些稳定的自回归模式等。

如果是strucchange包,您需要定义一个参数模型来描述时间序列的(假设的)稳定行为。因此,strucchange(特别是Fstats())中的大多数函数都希望您为线性回归模型指定formula

  • Zeileis A,Leisch F,Hornik K,Kleiber C(2002)。 “结构:用于测试线性回归模型中结构变化的R包。” 统计软件期刊 7 (2),1-38。 网址http://www.jstatsoft.org/v07/i02/

  • Zeileis A,Kleiber C,KrämerW,Hornik K(2003)。 “在实践中测试和约会结构变化。” 计算统计&amp;数据分析 44 ,109-123。

但也有一些函数(特别是gefp())可以处理与得分函数相关的一般参数模型,参见:

  • Zeileis A(2006)。 “实施一类结构变化测试:计量经济计算方法。” 计算统计&amp;数据分析 50 ,2987-3008。

如果是您的数据,我不确定合适的型号是什么。即使考虑到最大的跳跃,这个系列似乎并不固定。第一个差异似乎表明了漂移和方差的一些变化......但这只是眼球,没有正式的评估。

x <- ts(c(7.55, 7.63, 7.62, 7.5, 7.47, 7.53, 7.55, 7.47, 7.65, 7.72, 
  7.78, 7.81, 7.71, 7.67, 7.85, 7.82, 7.91, 7.91, 8, 7.82, 7.9, 
  7.93, 7.99, 7.93, 8.46, 8.48, 9.03, 9.43, 11.58, 12.19, 12.23, 
  11.98, 12.26, 12.31, 12.13, 11.99, 11.51, 11.75, 11.87, 11.91, 
  11.87, 11.69, 11.66, 11.23, 11.37, 11.71, 11.88, 11.93, 11.99, 
  11.84, 12.33, 12.55, 12.58, 12.67, 12.57, 12.35, 12.3, 12.67, 
  12.71, 12.63, 12.6, 12.41, 12.68, 12.48, 12.5, 12.3, 12.39, 12.16, 
  12.38, 12.36, 12.52, 12.63), start = 2006, freq = 12)
plot(x)
plot(diff(x))

ts

答案 1 :(得分:0)

NarayanPopp2010测试具有比ZA1992,LS2003和其他测试更多的统计功能(参见N2013论文用于比较)。 我将Popp的高斯代码转换为R,以下是您的数据的输出:(目前,我已将其编码为TR-locale)。

x <- c(7.55, 7.63, 7.62, 7.5, 7.47, 7.53, 7.55, 7.47, 7.65, 7.72, 7.78, 7.81, 7.71, 7.67, 7.85, 7.82, 7.91, 7.91, 8, 7.82, 7.9, 7.93, 7.99, 7.93, 8.46, 8.48, 9.03, 9.43, 11.58, 12.19, 12.23, 11.98, 12.26, 12.31, 12.13, 11.99, 11.51, 11.75, 11.87, 11.91, 11.87, 11.69, 11.66, 11.23, 11.37, 11.71, 11.88, 11.93, 11.99, 11.84, 12.33, 12.55, 12.58, 12.67, 12.57, 12.35, 12.3, 12.67, 12.71, 12.63, 12.6, 12.41, 12.68, 12.48, 12.5, 12.3, 12.39, 12.16, 12.38, 12.36, 12.52, 12.63)

narayanpopp(x)
## Narayan-Popp IKI YAPISAL KIRILMALI DURAGANDISILIK SINAMASI ## 
Ornek (baslangic ani - son an):1 - 72 
Gozlem sayisi: 72 ; Enbuyuk gecikme: 5 ; Budama carpani: 0.2 
Yapisal kirilma ani tabani, etkili budamacarpani:15 : 15 ; 0.208333333333333 
Yapisal kirilma ani tavani, etkili (1-budamacarpani):57 : 57 ; 0.791666666666667 
V0: (iki yapisal kirilmayla) seri duragandisi; V1:(iki yapisal kirilmayla) seri duragan 
sinamaistatistigi>karardegeri => V0 'i koru; sinamaistatistigi<karardegeri => V1 'i koru 
*********************************************************************** 
 *-----M0 KALIBININ SONUCLARI:-----* 
[1] "Ilk yapisal kirilma ani:26 26 8.48 0.361111111111111"
[1] "Ikinci yapisal kirilma ani:28 28 9.43 0.388888888888889"
[1] "fi=ro-1 :-0.163160512806634"
[1] "t degeri:-2.29771524783461"
[1] "Eniyi gecikme:1"
[1] "Degisme (varyans):0.0363825152276192"
............Katsayi...t-istatistigi... 
                   x         x
y1g       -0.1631605 -2.297715
kesme      1.3160065  2.362884
kukla1.1g  0.4741074  2.190526
kukla2.1g  0.2079939  0.700877
dtb1       0.6145683  3.057550
dtb2       1.8379621  6.770421
1          0.1513192  2.084880
 *-----M1 KALIBININ (iki yapisal kirilma: kesmede yk + kesmede yk) SONUCLARI:-----* 
[1] "Ilk yapisal kirilma ani:26 26 8.48 0.361111111111111"
[1] "Ikinci yapisal kirilma ani:28 28 9.43 0.388888888888889"
[1] "fi=ro-1: -0.37110021277495"
[1] "t degeri:-3.86603074072343"
Karar degerleri(%1,%5,%10):[1] -4.958 -4.316 -3.980
[1] "Eniyi gecikme:4"
[1] "Degisme (varyans):0.0314227239677204"
............Katsayi...t-istatistigi... 
                    x          x
y1g       -0.37110021 -3.8660307
kesme      2.76323682  3.8831542
kukla1.1g  0.60556752  2.9438927
kukla2.1g  0.60593575  1.9011479
dtb1       0.59763359  3.1380696
dtb2       1.75811366  6.6692227
zaman      0.01042009  3.1228153
1          0.23044610  3.1567308
2          0.06923344  0.9059798
3         -0.05159104 -0.6789619
4          0.17197982  2.2875677
 *-----M2 KALIBININ (iki yapisal kirilma: kesmede yk + egimde yk) SONUCLARI:-----* 
[1] "Ilk yapisal kirilma ani:28 28 9.43 0.388888888888889"
[1] "Ikinci yapisal kirilma ani:50 50 11.84 0.694444444444444"
[1] "fi=ro-1: -0.369017381997517"
[1] "t degeri:-3.2470432795371"
Karar degerleri(%1,%5,%10):[1] -5.576 -4.937 -4.596
[1] "Eniyi gecikme:1"
[1] "Degisme (varyans):0.0339671359124701"
............Katsayi...t-istatistigi... 
              izdusum1 tistatistik1
y1g       -0.369017382   -3.2470433
kesme      2.502710805    3.0577926
kukla1.1g  1.122424369    2.5998260
kukla2.1g  0.336741730    2.1075864
dtb1       2.244092825    9.6684805
dtb2       0.589019340    2.8927063
dt1.1g    -0.033995349   -2.8474147
dt2.1g     0.004277045    0.4448496
zaman      0.027863359    3.4816650
1          0.187482190    2.5306679

enter image description here

因此,泰德,为您的数据;
M1模型表示2个str的断裂位置:t = 26,28次观测 M2模型表示2个str的断裂位置:t = 28,第50个观测值 由于优越的M2模型会覆盖M1的结果,因此您会看到2条红色实线,1条黑色虚线。 M2的28日被M2的第28次覆盖。