R 中 GARCH 模型的限制测试(H0:alpha1+beta1 = 1,H1:alpha1 + beta1 ≠ 1)不起作用
Restriction test (H0: alpha1+beta1 = 1, H1:alpha1 + beta1 ≠ 1) on GARCH model in R not working
我正在尝试使用以下假设对 GARCH 模型(来自 'rugarch' 包的 ugarch)进行限制测试:
H0: alpha1 + beta1 = 1
H1: alpha1 + beta1 ≠ 1
1.Specify 使用带有选项 variance.model = list(model = "sGARCH") 的 ugarchspec 的受限模型,并使用 ugarchfit 对其进行估计。从槽拟合子槽似然中获取对数似然。
2.Specify 使用 ugarchspec 和选项 variance.model = list(model = "iGARCH") 的受限模型,并使用 ugarchfit 对其进行估计。如上获取对数似然。
3.Calculate LR=2(非受限模型的对数似然 − 受限模型的对数似然) 并获得 p 值作为 pchisq(q = LR, df = 1).
我使用 'rugarch' 包中的以下 'sGARCH' 和 'iGARCH' 模型。
(A) sGARCH(无限制模型):
speccR = ugarchspec(variance.model=list(model = "sGARCH",garchOrder=c(1,1)),mean.model=list(armaOrder=c(0,0), include.mean=TRUE,archm = TRUE, archpow = 1))
ugarchfit(speccR, data=data.matrix(P),fit.control = list(scale = 1))
下面是这个 sGARCH 输出:
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : sGARCH(1,1)
Mean Model : ARFIMA(0,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu -0.000355 0.001004 -0.35377 0.723508
archm 0.096364 0.039646 2.43059 0.015074
omega 0.000049 0.000010 4.91096 0.000001
alpha1 0.289964 0.021866 13.26117 0.000000
beta1 0.709036 0.023200 30.56156 0.000000
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu -0.000355 0.001580 -0.22482 0.822122
archm 0.096364 0.056352 1.71002 0.087262
omega 0.000049 0.000051 0.96346 0.335316
alpha1 0.289964 0.078078 3.71375 0.000204
beta1 0.709036 0.111629 6.35173 0.000000
LogLikelihood : 5411.828
Information Criteria
------------------------------------
Akaike -3.9180
Bayes -3.9073
Shibata -3.9180
Hannan-Quinn -3.9141
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 233.2 0
Lag[2*(p+q)+(p+q)-1][2] 239.1 0
Lag[4*(p+q)+(p+q)-1][5] 247.4 0
d.o.f=0
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 4.695 0.03025
Lag[2*(p+q)+(p+q)-1][5] 5.941 0.09286
Lag[4*(p+q)+(p+q)-1][9] 7.865 0.13694
d.o.f=2
Weighted ARCH LM Tests
------------------------------------
Statistic Shape Scale P-Value
ARCH Lag[3] 0.556 0.500 2.000 0.4559
ARCH Lag[5] 1.911 1.440 1.667 0.4914
ARCH Lag[7] 3.532 2.315 1.543 0.4190
Nyblom stability test
------------------------------------
Joint Statistic: 5.5144
Individual Statistics:
mu 0.5318
archm 0.4451
omega 1.3455
alpha1 4.1443
beta1 2.2202
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 1.28 1.47 1.88
Individual Statistic: 0.35 0.47 0.75
Sign Bias Test
------------------------------------
t-value prob sig
Sign Bias 0.2384 0.8116
Negative Sign Bias 1.1799 0.2381
Positive Sign Bias 1.1992 0.2305
Joint Effect 2.9540 0.3988
Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
group statistic p-value(g-1)
1 20 272.1 9.968e-47
2 30 296.9 3.281e-46
3 40 313.3 1.529e-44
4 50 337.4 1.091e-44
Elapsed time : 0.4910491
(B) iGARCH(受限模型):
speccRR = ugarchspec(variance.model=list(model = "iGARCH",garchOrder=c(1,1)),mean.model=list(armaOrder=c(0,0), include.mean=TRUE,archm = TRUE, archpow = 1))
ugarchfit(speccRR, data=data.matrix(P),fit.control = list(scale = 1))
但是,我得到 beta1 的以下输出,其标准误差、t 值和 p 值 N/A。
iGARCH 输出如下:
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : iGARCH(1,1)
Mean Model : ARFIMA(0,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu -0.000355 0.001001 -0.35485 0.722700
archm 0.096303 0.039514 2.43718 0.014802
omega 0.000049 0.000008 6.42826 0.000000
alpha1 0.290304 0.021314 13.62022 0.000000
beta1 0.709696 NA NA NA
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu -0.000355 0.001488 -0.2386 0.811415
archm 0.096303 0.054471 1.7680 0.077066
omega 0.000049 0.000032 1.5133 0.130215
alpha1 0.290304 0.091133 3.1855 0.001445
beta1 0.709696 NA NA NA
LogLikelihood : 5412.268
Information Criteria
------------------------------------
Akaike -3.9190
Bayes -3.9105
Shibata -3.9190
Hannan-Quinn -3.9159
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 233.2 0
Lag[2*(p+q)+(p+q)-1][2] 239.1 0
Lag[4*(p+q)+(p+q)-1][5] 247.5 0
d.o.f=0
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 4.674 0.03063
Lag[2*(p+q)+(p+q)-1][5] 5.926 0.09364
Lag[4*(p+q)+(p+q)-1][9] 7.860 0.13725
d.o.f=2
Weighted ARCH LM Tests
------------------------------------
Statistic Shape Scale P-Value
ARCH Lag[3] 0.5613 0.500 2.000 0.4538
ARCH Lag[5] 1.9248 1.440 1.667 0.4881
ARCH Lag[7] 3.5532 2.315 1.543 0.4156
Nyblom stability test
------------------------------------
Joint Statistic: 1.8138
Individual Statistics:
mu 0.5301
archm 0.4444
omega 1.3355
alpha1 0.4610
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 1.07 1.24 1.6
Individual Statistic: 0.35 0.47 0.75
Sign Bias Test
------------------------------------
t-value prob sig
Sign Bias 0.2252 0.8218
Negative Sign Bias 1.1672 0.2432
Positive Sign Bias 1.1966 0.2316
Joint Effect 2.9091 0.4059
Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
group statistic p-value(g-1)
1 20 273.4 5.443e-47
2 30 300.4 6.873e-47
3 40 313.7 1.312e-44
4 50 337.0 1.275e-44
Elapsed time : 0.365
如果我计算对数似然差来导出卡方值
正如建议的那样,我得到负值:
2*(5411.828-5412.268)=-0.88
受限模型的对数似然 "iGARCH" 为 5412.268,高于不受限模型 "sGARCH" 的对数似然 5411.828
这不应该发生。
我使用的数据按时间序列方式如下(由于space限制,我只发布前100条数据):
Time P
1 0.454213593
2 0.10713195
3 -0.106819399
4 -0.101610699
5 -0.094327846
6 -0.037176107
7 -0.101550977
8 -0.016309894
9 -0.041889484
10 0.103384357
11 -0.011746377
12 0.063304432
13 0.059539249
14 -0.049946177
15 -0.023251656
16 0.013989353
17 -0.002815588
18 -0.009678745
19 -0.011139779
20 0.031592303
21 -0.02348106
22 -0.007206591
23 0.077422089
24 0.064632768
25 -0.003396734
26 -0.025524166
27 -0.026632474
28 0.014614485
29 -0.012380888
30 -0.007463018
31 0.022759969
32 0.038667465
33 -0.028619484
34 -0.021995984
35 -0.006162809
36 -0.031187399
37 0.022455611
38 0.011419264
39 -0.005700445
40 -0.010106343
41 -0.004310162
42 0.00513715
43 -0.00498106
44 -0.021382251
45 -0.000694252
46 -0.033326085
47 0.002596086
48 0.011008057
49 -0.004754233
50 0.008969559
51 -0.00354088
52 -0.007213115
53 -0.003101495
54 0.005016228
55 -0.010762641
56 0.030770993
57 -0.015636325
58 0.000875417
59 0.03975863
60 -0.050207219
61 0.011308261
62 -0.021453315
63 -0.003309127
64 0.025687191
65 0.009467306
66 0.005519485
67 -0.011473758
68 0.00223934
69 -0.000913651
70 -0.003055385
71 0.000974694
72 0.000288611
73 -0.002432251
74 -0.0016975
75 -0.001565034
76 0.003332848
77 -0.008007295
78 -0.003086435
79 -0.00160435
80 0.005825885
81 0.020078093
82 0.018055453
83 0.181098137
84 0.102698818
85 0.128786594
86 -0.013587077
87 -0.038429879
88 0.043637258
89 0.042741709
90 0.016384872
91 0.000216317
92 0.009275681
93 -0.008595197
94 -0.016323335
95 -0.024083247
96 0.035922206
97 0.034863621
98 0.032401779
99 0.126333922
100 0.054751935
为了根据我的 H0 和 H1 假设进行限制检验,我可以知道如何解决这个问题吗?
估计过程似乎有问题...由于一个模型是另一个模型的限制版本,使用 iGARCH 确实会导致较低的可能性。
使用您的数据子集,
fit1 <- ugarchfit(speca, data = data.matrix(P))
# [1] 161.7373
fit2 <- ugarchfit(speca2, data = data.matrix(P))
# [1] 165.333
正如我在删除的 post 中所说,这些数字看起来很可疑,好像它们是 -loglikelihoods。然而,从残差中恢复可能性给出
-sum(log(2 * pi * sigma(fit1)^2)) / 2 - sum(residuals(fit1, standardize = TRUE)^2) / 2
# [1] 161.7373
-sum(log(2 * pi * sigma(fit2)^2)) / 2 - sum(residuals(fit2, standardize = TRUE)^2) / 2
# [1] 165.333
意思是我的怀疑是错误的(那么一定是密度值> 1)。出于这个原因,我认为没有办法使用当前输出来构建测试。 iGARCH 限制条件 奇迹般地 很好..
然而,一些实验表明使用
fit.control = list(scale = 1)
改变了一切。特别是,
fit1 <- ugarchfit(speca, data = data.matrix(P), fit.control = list(scale = 1))
likelihood(fit1)
# [1] 161.7373
-sum(log(2 * pi * sigma(fit1)^2)) / 2 - sum(residuals(fit1, standardize = TRUE)^2) / 2
# [1] 161.7373
fit2 <- ugarchfit(speca2, data = data.matrix(P), fit.control = list(scale = 1))
likelihood(fit2)
# [1] 19.5233
-sum(log(2 * pi * sigma(fit2)^2)) / 2 - sum(residuals(fit2, standardize = TRUE)^2) / 2
# [1] 19.5233
这有点道理given
(第 25 页)"scaling sometimes facilitates the estimation process"
(第46页)问:我的模型不收敛,怎么办?
“...此外,在拟合例程的 fit.control 列表中,在拟合之前执行数据缩放的选项通常会有所帮助,尽管它在某些设置下不可用...”
然而,第一个模型的可能性保持不变再次令人怀疑。然后我们有那个
fit1 <- ugarchfit(speca, data = data.matrix(P), fit.control = list(scale = 0), solver.control = list(trace = TRUE))
#
# Iter: 1 fn: -161.7373 Pars: -0.0454619 0.0085993 0.0002706 0.0593231 # 0.6898473
# Iter: 2 fn: -161.7373 Pars: -0.0454619 0.0085993 0.0002706 0.0593231 0.6898473
# solnp--> Completed in 2 iterations
coef(fit1)
# mu mxreg1 omega alpha1 beta1
# -0.0454619274 0.0085992743 0.0002706018 0.0593231138 0.6898472858
fit1 <- ugarchfit(speca, data = data.matrix(P), fit.control = list(scale = 1), solver.control = list(trace = TRUE))
# Iter: 1 fn: 114.8143 Pars: -0.72230 0.13663 0.06830 0.05930 0.68988
# Iter: 2 fn: 114.8143 Pars: -0.72228 0.13662 0.06830 0.05931 0.68986
# solnp--> Completed in 2 iterations
coef(fit1)
# mu mxreg1 omega alpha1 beta1
# -0.045463099 0.008599494 0.000270610 0.059310622 0.689858216
和
fit2 <- ugarchfit(speca2, data = data.matrix(P), fit.control = list(scale = 0), solver.control = list(trace = TRUE))
# Iter: 1 fn: -165.3330 Pars: 0.0292439 -0.0051098 0.0002221 0.7495846
# Iter: 2 fn: -165.3330 Pars: 0.0292434 -0.0051097 0.0002221 0.7495853
# solnp--> Completed in 2 iterations
coef(fit2)
# mu mxreg1 omega alpha1 beta1
# 0.0292434276 -0.0051096984 0.0002221457 0.7495853224 0.2504146776
fit2 <- ugarchfit(speca2, data = data.matrix(P), fit.control = list(scale = 1), solver.control = list(trace = TRUE))
# Iter: 1 fn: 111.2185 Pars: 0.46462 -0.08118 0.05607 0.74959
# Iter: 2 fn: 111.2185 Pars: 0.46458 -0.08118 0.05607 0.74959
# solnp--> Completed in 2 iterations
coef(fit2)
# mu mxreg1 omega alpha1 beta1
# 0.46458110 -0.08117626 0.05607215 0.74959242 0.25040758
由于多重不一致,这让事情变得更加奇怪...
这是我从包作者那里收到的答案"Alexios Galanos":
问题在于 GARCH 模型的平稳性存在限制,这可能会干扰
处于平稳边界的模型的求解器收敛。这是解决方案:
library(rugarch)
library(xts)
dat<-read.table("data.txt",header = TRUE, stringsAsFactors = FALSE)
dat = xts(dat[,2], as.Date(strptime(dat[,1],"%d/%m/%Y")))
spec1<-ugarchspec(mean.model=list(armaOrder=c(0,0), archm=TRUE, archpow=1), variance.model=list(model="iGARCH"))
spec2<-ugarchspec(mean.model=list(armaOrder=c(0,0), archm=TRUE, archpow=1), variance.model=list(model="sGARCH"))
mod1<-ugarchfit(spec1, dat, solver="solnp")
mod2<-ugarchfit(spec2,dat)
persistence(mod2)
>0.999
# at the limit of the internal constraint
mod2<-ugarchfit(spec2, dat, solver="solnp", fit.control = list(stationarity=0))
likelihood(mod2)
>5428.871
likelihood(mod1)
>5412.268
persistence(mod2)
1.08693
# above the limit
Here is one solution to change the constraint:
.garchconbounds2= function(){
return(list(LB = 1e-12,UB = 0.99999999999))
}
assignInNamespace(x = ".garchconbounds", value=.garchconbounds2, ns="rugarch")
mod2<-ugarchfit(spec2, dat, solver="solnp")
likelihood(mod2)
>5412.268
现在这个值和constrained model一样了(都是有效整合),但是constrained model少了一个参数
估计。
我这里根本不需要 fit.control=list(scale=1)。删除这个比例可能更好。
我正在尝试使用以下假设对 GARCH 模型(来自 'rugarch' 包的 ugarch)进行限制测试:
H0: alpha1 + beta1 = 1
H1: alpha1 + beta1 ≠ 1
1.Specify 使用带有选项 variance.model = list(model = "sGARCH") 的 ugarchspec 的受限模型,并使用 ugarchfit 对其进行估计。从槽拟合子槽似然中获取对数似然。
2.Specify 使用 ugarchspec 和选项 variance.model = list(model = "iGARCH") 的受限模型,并使用 ugarchfit 对其进行估计。如上获取对数似然。
3.Calculate LR=2(非受限模型的对数似然 − 受限模型的对数似然) 并获得 p 值作为 pchisq(q = LR, df = 1).
我使用 'rugarch' 包中的以下 'sGARCH' 和 'iGARCH' 模型。
(A) sGARCH(无限制模型):
speccR = ugarchspec(variance.model=list(model = "sGARCH",garchOrder=c(1,1)),mean.model=list(armaOrder=c(0,0), include.mean=TRUE,archm = TRUE, archpow = 1))
ugarchfit(speccR, data=data.matrix(P),fit.control = list(scale = 1))
下面是这个 sGARCH 输出:
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : sGARCH(1,1)
Mean Model : ARFIMA(0,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu -0.000355 0.001004 -0.35377 0.723508
archm 0.096364 0.039646 2.43059 0.015074
omega 0.000049 0.000010 4.91096 0.000001
alpha1 0.289964 0.021866 13.26117 0.000000
beta1 0.709036 0.023200 30.56156 0.000000
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu -0.000355 0.001580 -0.22482 0.822122
archm 0.096364 0.056352 1.71002 0.087262
omega 0.000049 0.000051 0.96346 0.335316
alpha1 0.289964 0.078078 3.71375 0.000204
beta1 0.709036 0.111629 6.35173 0.000000
LogLikelihood : 5411.828
Information Criteria
------------------------------------
Akaike -3.9180
Bayes -3.9073
Shibata -3.9180
Hannan-Quinn -3.9141
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 233.2 0
Lag[2*(p+q)+(p+q)-1][2] 239.1 0
Lag[4*(p+q)+(p+q)-1][5] 247.4 0
d.o.f=0
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 4.695 0.03025
Lag[2*(p+q)+(p+q)-1][5] 5.941 0.09286
Lag[4*(p+q)+(p+q)-1][9] 7.865 0.13694
d.o.f=2
Weighted ARCH LM Tests
------------------------------------
Statistic Shape Scale P-Value
ARCH Lag[3] 0.556 0.500 2.000 0.4559
ARCH Lag[5] 1.911 1.440 1.667 0.4914
ARCH Lag[7] 3.532 2.315 1.543 0.4190
Nyblom stability test
------------------------------------
Joint Statistic: 5.5144
Individual Statistics:
mu 0.5318
archm 0.4451
omega 1.3455
alpha1 4.1443
beta1 2.2202
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 1.28 1.47 1.88
Individual Statistic: 0.35 0.47 0.75
Sign Bias Test
------------------------------------
t-value prob sig
Sign Bias 0.2384 0.8116
Negative Sign Bias 1.1799 0.2381
Positive Sign Bias 1.1992 0.2305
Joint Effect 2.9540 0.3988
Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
group statistic p-value(g-1)
1 20 272.1 9.968e-47
2 30 296.9 3.281e-46
3 40 313.3 1.529e-44
4 50 337.4 1.091e-44
Elapsed time : 0.4910491
(B) iGARCH(受限模型):
speccRR = ugarchspec(variance.model=list(model = "iGARCH",garchOrder=c(1,1)),mean.model=list(armaOrder=c(0,0), include.mean=TRUE,archm = TRUE, archpow = 1))
ugarchfit(speccRR, data=data.matrix(P),fit.control = list(scale = 1))
但是,我得到 beta1 的以下输出,其标准误差、t 值和 p 值 N/A。
iGARCH 输出如下:
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : iGARCH(1,1)
Mean Model : ARFIMA(0,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu -0.000355 0.001001 -0.35485 0.722700
archm 0.096303 0.039514 2.43718 0.014802
omega 0.000049 0.000008 6.42826 0.000000
alpha1 0.290304 0.021314 13.62022 0.000000
beta1 0.709696 NA NA NA
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu -0.000355 0.001488 -0.2386 0.811415
archm 0.096303 0.054471 1.7680 0.077066
omega 0.000049 0.000032 1.5133 0.130215
alpha1 0.290304 0.091133 3.1855 0.001445
beta1 0.709696 NA NA NA
LogLikelihood : 5412.268
Information Criteria
------------------------------------
Akaike -3.9190
Bayes -3.9105
Shibata -3.9190
Hannan-Quinn -3.9159
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 233.2 0
Lag[2*(p+q)+(p+q)-1][2] 239.1 0
Lag[4*(p+q)+(p+q)-1][5] 247.5 0
d.o.f=0
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 4.674 0.03063
Lag[2*(p+q)+(p+q)-1][5] 5.926 0.09364
Lag[4*(p+q)+(p+q)-1][9] 7.860 0.13725
d.o.f=2
Weighted ARCH LM Tests
------------------------------------
Statistic Shape Scale P-Value
ARCH Lag[3] 0.5613 0.500 2.000 0.4538
ARCH Lag[5] 1.9248 1.440 1.667 0.4881
ARCH Lag[7] 3.5532 2.315 1.543 0.4156
Nyblom stability test
------------------------------------
Joint Statistic: 1.8138
Individual Statistics:
mu 0.5301
archm 0.4444
omega 1.3355
alpha1 0.4610
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 1.07 1.24 1.6
Individual Statistic: 0.35 0.47 0.75
Sign Bias Test
------------------------------------
t-value prob sig
Sign Bias 0.2252 0.8218
Negative Sign Bias 1.1672 0.2432
Positive Sign Bias 1.1966 0.2316
Joint Effect 2.9091 0.4059
Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
group statistic p-value(g-1)
1 20 273.4 5.443e-47
2 30 300.4 6.873e-47
3 40 313.7 1.312e-44
4 50 337.0 1.275e-44
Elapsed time : 0.365
如果我计算对数似然差来导出卡方值 正如建议的那样,我得到负值:
2*(5411.828-5412.268)=-0.88
受限模型的对数似然 "iGARCH" 为 5412.268,高于不受限模型 "sGARCH" 的对数似然 5411.828 这不应该发生。
我使用的数据按时间序列方式如下(由于space限制,我只发布前100条数据):
Time P
1 0.454213593
2 0.10713195
3 -0.106819399
4 -0.101610699
5 -0.094327846
6 -0.037176107
7 -0.101550977
8 -0.016309894
9 -0.041889484
10 0.103384357
11 -0.011746377
12 0.063304432
13 0.059539249
14 -0.049946177
15 -0.023251656
16 0.013989353
17 -0.002815588
18 -0.009678745
19 -0.011139779
20 0.031592303
21 -0.02348106
22 -0.007206591
23 0.077422089
24 0.064632768
25 -0.003396734
26 -0.025524166
27 -0.026632474
28 0.014614485
29 -0.012380888
30 -0.007463018
31 0.022759969
32 0.038667465
33 -0.028619484
34 -0.021995984
35 -0.006162809
36 -0.031187399
37 0.022455611
38 0.011419264
39 -0.005700445
40 -0.010106343
41 -0.004310162
42 0.00513715
43 -0.00498106
44 -0.021382251
45 -0.000694252
46 -0.033326085
47 0.002596086
48 0.011008057
49 -0.004754233
50 0.008969559
51 -0.00354088
52 -0.007213115
53 -0.003101495
54 0.005016228
55 -0.010762641
56 0.030770993
57 -0.015636325
58 0.000875417
59 0.03975863
60 -0.050207219
61 0.011308261
62 -0.021453315
63 -0.003309127
64 0.025687191
65 0.009467306
66 0.005519485
67 -0.011473758
68 0.00223934
69 -0.000913651
70 -0.003055385
71 0.000974694
72 0.000288611
73 -0.002432251
74 -0.0016975
75 -0.001565034
76 0.003332848
77 -0.008007295
78 -0.003086435
79 -0.00160435
80 0.005825885
81 0.020078093
82 0.018055453
83 0.181098137
84 0.102698818
85 0.128786594
86 -0.013587077
87 -0.038429879
88 0.043637258
89 0.042741709
90 0.016384872
91 0.000216317
92 0.009275681
93 -0.008595197
94 -0.016323335
95 -0.024083247
96 0.035922206
97 0.034863621
98 0.032401779
99 0.126333922
100 0.054751935
为了根据我的 H0 和 H1 假设进行限制检验,我可以知道如何解决这个问题吗?
估计过程似乎有问题...由于一个模型是另一个模型的限制版本,使用 iGARCH 确实会导致较低的可能性。
使用您的数据子集,
fit1 <- ugarchfit(speca, data = data.matrix(P))
# [1] 161.7373
fit2 <- ugarchfit(speca2, data = data.matrix(P))
# [1] 165.333
正如我在删除的 post 中所说,这些数字看起来很可疑,好像它们是 -loglikelihoods。然而,从残差中恢复可能性给出
-sum(log(2 * pi * sigma(fit1)^2)) / 2 - sum(residuals(fit1, standardize = TRUE)^2) / 2
# [1] 161.7373
-sum(log(2 * pi * sigma(fit2)^2)) / 2 - sum(residuals(fit2, standardize = TRUE)^2) / 2
# [1] 165.333
意思是我的怀疑是错误的(那么一定是密度值> 1)。出于这个原因,我认为没有办法使用当前输出来构建测试。 iGARCH 限制条件 奇迹般地 很好..
然而,一些实验表明使用
fit.control = list(scale = 1)
改变了一切。特别是,
fit1 <- ugarchfit(speca, data = data.matrix(P), fit.control = list(scale = 1))
likelihood(fit1)
# [1] 161.7373
-sum(log(2 * pi * sigma(fit1)^2)) / 2 - sum(residuals(fit1, standardize = TRUE)^2) / 2
# [1] 161.7373
fit2 <- ugarchfit(speca2, data = data.matrix(P), fit.control = list(scale = 1))
likelihood(fit2)
# [1] 19.5233
-sum(log(2 * pi * sigma(fit2)^2)) / 2 - sum(residuals(fit2, standardize = TRUE)^2) / 2
# [1] 19.5233
这有点道理given
(第 25 页)"scaling sometimes facilitates the estimation process"
(第46页)问:我的模型不收敛,怎么办?
“...此外,在拟合例程的 fit.control 列表中,在拟合之前执行数据缩放的选项通常会有所帮助,尽管它在某些设置下不可用...”
然而,第一个模型的可能性保持不变再次令人怀疑。然后我们有那个
fit1 <- ugarchfit(speca, data = data.matrix(P), fit.control = list(scale = 0), solver.control = list(trace = TRUE))
#
# Iter: 1 fn: -161.7373 Pars: -0.0454619 0.0085993 0.0002706 0.0593231 # 0.6898473
# Iter: 2 fn: -161.7373 Pars: -0.0454619 0.0085993 0.0002706 0.0593231 0.6898473
# solnp--> Completed in 2 iterations
coef(fit1)
# mu mxreg1 omega alpha1 beta1
# -0.0454619274 0.0085992743 0.0002706018 0.0593231138 0.6898472858
fit1 <- ugarchfit(speca, data = data.matrix(P), fit.control = list(scale = 1), solver.control = list(trace = TRUE))
# Iter: 1 fn: 114.8143 Pars: -0.72230 0.13663 0.06830 0.05930 0.68988
# Iter: 2 fn: 114.8143 Pars: -0.72228 0.13662 0.06830 0.05931 0.68986
# solnp--> Completed in 2 iterations
coef(fit1)
# mu mxreg1 omega alpha1 beta1
# -0.045463099 0.008599494 0.000270610 0.059310622 0.689858216
和
fit2 <- ugarchfit(speca2, data = data.matrix(P), fit.control = list(scale = 0), solver.control = list(trace = TRUE))
# Iter: 1 fn: -165.3330 Pars: 0.0292439 -0.0051098 0.0002221 0.7495846
# Iter: 2 fn: -165.3330 Pars: 0.0292434 -0.0051097 0.0002221 0.7495853
# solnp--> Completed in 2 iterations
coef(fit2)
# mu mxreg1 omega alpha1 beta1
# 0.0292434276 -0.0051096984 0.0002221457 0.7495853224 0.2504146776
fit2 <- ugarchfit(speca2, data = data.matrix(P), fit.control = list(scale = 1), solver.control = list(trace = TRUE))
# Iter: 1 fn: 111.2185 Pars: 0.46462 -0.08118 0.05607 0.74959
# Iter: 2 fn: 111.2185 Pars: 0.46458 -0.08118 0.05607 0.74959
# solnp--> Completed in 2 iterations
coef(fit2)
# mu mxreg1 omega alpha1 beta1
# 0.46458110 -0.08117626 0.05607215 0.74959242 0.25040758
由于多重不一致,这让事情变得更加奇怪...
这是我从包作者那里收到的答案"Alexios Galanos":
问题在于 GARCH 模型的平稳性存在限制,这可能会干扰 处于平稳边界的模型的求解器收敛。这是解决方案:
library(rugarch)
library(xts)
dat<-read.table("data.txt",header = TRUE, stringsAsFactors = FALSE)
dat = xts(dat[,2], as.Date(strptime(dat[,1],"%d/%m/%Y")))
spec1<-ugarchspec(mean.model=list(armaOrder=c(0,0), archm=TRUE, archpow=1), variance.model=list(model="iGARCH"))
spec2<-ugarchspec(mean.model=list(armaOrder=c(0,0), archm=TRUE, archpow=1), variance.model=list(model="sGARCH"))
mod1<-ugarchfit(spec1, dat, solver="solnp")
mod2<-ugarchfit(spec2,dat)
persistence(mod2)
>0.999
# at the limit of the internal constraint
mod2<-ugarchfit(spec2, dat, solver="solnp", fit.control = list(stationarity=0))
likelihood(mod2)
>5428.871
likelihood(mod1)
>5412.268
persistence(mod2)
1.08693
# above the limit
Here is one solution to change the constraint:
.garchconbounds2= function(){
return(list(LB = 1e-12,UB = 0.99999999999))
}
assignInNamespace(x = ".garchconbounds", value=.garchconbounds2, ns="rugarch")
mod2<-ugarchfit(spec2, dat, solver="solnp")
likelihood(mod2)
>5412.268
现在这个值和constrained model一样了(都是有效整合),但是constrained model少了一个参数 估计。
我这里根本不需要 fit.control=list(scale=1)。删除这个比例可能更好。