首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >H0: alpha1+beta1 = 1,H1:α1+ beta1≠1对R不起作用的GARCH模型的约束检验

H0: alpha1+beta1 = 1,H1:α1+ beta1≠1对R不起作用的GARCH模型的约束检验
EN

Stack Overflow用户
提问于 2018-03-10 10:39:57
回答 2查看 533关注 0票数 2

我试图使用以下假设对GARCH模型(从“rugarch”包中提取的ugarch)进行限制测试:

代码语言:javascript
复制
 H0: alpha1 + beta1 = 1

 H1: alpha1 + beta1 ≠ 1 

所以我试着听从151578的建议

1.使用variance.model =list选项( model = "sGARCH")使用ugarchspec指定受限模型,并使用ugarchfit对其进行估计。从时隙匹配子时隙似然获得对数似然。

2.使用variance.model =list选项( model = "iGARCH")使用ugarchspec指定受限模型,并使用ugarchfit对其进行估计。如上所示,获取日志可能性。

3.计算LR=2(无限制模型的−对数似然-受限模型的似然),得到p值为pchisq(q = LR,df = 1)。

我有以下的'sGARCH‘和'iGARCH’模型,我使用的'rugarch‘包。

(A) sGARCH (无限制模式):

代码语言:javascript
复制
 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输出:

代码语言:javascript
复制
    *---------------------------------*
    *          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 (限制性模式):

代码语言:javascript
复制
 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))

然而,我得到了具有N/A的标准误差t值和p值的beta1输出。

以下是iGARCH输出:

代码语言:javascript
复制
    *---------------------------------*
    *          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 

如果按建议计算对数似然差来导出卡方值,则得到如下负值:

代码语言:javascript
复制
 2*(5411.828-5412.268)=-0.88

受限模型"iGARCH“的对数似然为5412.268,高于非限制模型"sGARCH”中不应发生的对数可能性。

我所使用的数据按时间顺序排列如下(由于篇幅限制,我只张贴前100份数据):

代码语言:javascript
复制
   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假设中进行限制测试,我可以知道如何解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-17 09:56:42

这是我从软件包作者"Alexios Galanos“那里得到的答复:

问题是GARCH模型的平稳性受到限制,这可能会干扰处于平稳性边缘的模型的求解器收敛。以下是解决办法:

代码语言:javascript
复制
  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

现在,该值与约束模型相同(它们都是有效集成的),但约束模型需要估计的参数少一个。

我根本不需要fit.control=list(scale=1)。也许最好删除这个比例。

票数 0
EN

Stack Overflow用户

发布于 2018-03-10 18:23:38

估计程序好像有问题..。由于一个模型是另一个模型的受限版本,使用iGARCH确实会降低可能性。

使用你的数据子集,

代码语言:javascript
复制
fit1 <- ugarchfit(speca, data = data.matrix(P)) 
# [1] 161.7373
fit2 <- ugarchfit(speca2, data = data.matrix(P))
# [1] 165.333

正如我在我删除的帖子中所说,这些数字看起来可疑,好像它们是-loglikelihoods。然而,从残差中恢复可能性

代码语言:javascript
复制
-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的限制令人惊奇地符合。

然而,一些实验表明

代码语言:javascript
复制
fit.control = list(scale = 1)

改变了一切。特别地,

代码语言:javascript
复制
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

这在某种程度上是合理的给定的

(第25页)“缩放有时有助于估计过程”

(第46页)问:我的模型不收敛,我能做什么?

"...Additionally,在拟合例程的fit.control列表中,在拟合之前执行数据缩放的选项通常会有所帮助,尽管在某些设置下是不可用的.“

然而,第一种模式的可能性保持不变,这再次令人怀疑。那我们就有了

代码语言:javascript
复制
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

代码语言:javascript
复制
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 

这使得事情变得更奇怪因为多个矛盾..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49208097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档