फिट एक गार्च (1,1) - मॉडल के साथ covariates में आर


10

मुझे समय श्रृंखला मॉडलिंग के साथ कुछ अनुभव हैं, सरल ARIMA मॉडल और इतने पर। अब मेरे पास कुछ डेटा है जो अस्थिरता को प्रदर्शित करता है, और मैं डेटा पर एक GARCH (1,1) मॉडल की फिटिंग के साथ शुरू करने का प्रयास करना चाहता हूं।

मेरे पास एक डेटा श्रृंखला और कई चर हैं जो मुझे लगता है कि इसे प्रभावित करते हैं। तो मूल प्रतिगमन शब्दों में, ऐसा दिखता है:

yटी=α+β1एक्सटी1+β2एक्सटी2+εटी

लेकिन मैं इसे GARCH (1,1) - मॉडल में लागू करने के तरीके पर एक पूर्ण नुकसान में हूं! मैंने rugarch-पैकेज और -पैकेज को अंदर देखा fGarchहै R, लेकिन मैं कुछ भी सार्थक नहीं कर पाया हूं, इसके अलावा उदाहरण इंटरनेट पर मिल सकते हैं।

जवाबों:


12

यहां rugarchपैकेज का उपयोग करके और कुछ नकली डेटा के साथ कार्यान्वयन का एक उदाहरण है । समारोह ugarchfitमतलब समीकरण में बाहरी regressors के शामिल किए जाने (के उपयोग पर ध्यान दें के लिए अनुमति देता है external.regressorsमें fit.specनीचे दिए गए कोड में)।

yटी=λ0+λ1एक्सटी,1+λ2एक्सटी,2+εटी,εटी=σटीजेडटी,σटी2=ω+αεटी-12+βσटी-12,
एक्सटी,1एक्सटी,2टीजेडटी

उदाहरण में प्रयुक्त पैरामीटर मान इस प्रकार हैं।

## Model parameters
nb.period  <- 1000
omega      <- 0.00001
alpha      <- 0.12
beta       <- 0.87
lambda     <- c(0.001, 0.4, 0.2)

एक्सटी,1एक्सटी,2yटीR

यहां छवि विवरण दर्ज करें

## Dependencies
library(rugarch)

## Generate some covariates
set.seed(234)
ext.reg.1 <- 0.01 * (sin(2*pi*(1:nb.period)/nb.period))/2 + rnorm(nb.period, 0, 0.0001)
ext.reg.2 <- 0.05 * (sin(6*pi*(1:nb.period)/nb.period))/2 + rnorm(nb.period, 0, 0.001)
ext.reg   <- cbind(ext.reg.1, ext.reg.2)

## Generate some GARCH innovations
sim.spec    <- ugarchspec(variance.model     = list(model = "sGARCH", garchOrder = c(1,1)), 
                          mean.model         = list(armaOrder = c(0,0), include.mean = FALSE),
                          distribution.model = "norm", 
                          fixed.pars         = list(omega = omega, alpha1 = alpha, beta1 = beta))
path.sgarch <- ugarchpath(sim.spec, n.sim = nb.period, n.start = 1)
epsilon     <- as.vector(fitted(path.sgarch))

## Create the time series
y <- lambda[1] + lambda[2] * ext.reg[, 1] + lambda[3] * ext.reg[, 2] + epsilon

## Data visualization
par(mfrow = c(3,1))
plot(ext.reg[, 1], type = "l", xlab = "Time", ylab = "Covariate 1")
plot(ext.reg[, 2], type = "l", xlab = "Time", ylab = "Covariate 2")
plot(y, type = "h", xlab = "Time")
par(mfrow = c(1,1))

एक फिट ugarchfitनिम्नानुसार किया जाता है।

## Fit
fit.spec <- ugarchspec(variance.model     = list(model = "sGARCH",
                                                 garchOrder = c(1, 1)), 
                       mean.model         = list(armaOrder = c(0, 0),
                                                 include.mean = TRUE,
                                                 external.regressors = ext.reg), 
                       distribution.model = "norm")
fit      <- ugarchfit(data = y, spec = fit.spec)

पैरामीटर का अनुमान है

## Results review
fit.val     <- coef(fit)
fit.sd      <- diag(vcov(fit))
true.val    <- c(lambda, omega, alpha, beta)
fit.conf.lb <- fit.val + qnorm(0.025) * fit.sd
fit.conf.ub <- fit.val + qnorm(0.975) * fit.sd
> print(fit.val)
#     mu       mxreg1       mxreg2        omega       alpha1        beta1 
#1.724885e-03 3.942020e-01 7.342743e-02 1.451739e-05 1.022208e-01 8.769060e-01 
> print(fit.sd)
#[1] 4.635344e-07 3.255819e-02 1.504019e-03 1.195897e-10 8.312088e-04 3.375684e-04

और इसी सच्चे मूल्य हैं

> print(true.val)
#[1] 0.00100 0.40000 0.20000 0.00001 0.12000 0.87000

निम्न आंकड़ा 95% विश्वास अंतराल और सच्चे मूल्यों के साथ एक पैरामीटर अनुमान दिखाता है। Rउत्पन्न करने के लिए यह प्रदान की जाती है इस्तेमाल किया कोड के नीचे है।

यहां छवि विवरण दर्ज करें

plot(c(lambda, omega, alpha, beta), pch = 1, col = "red",
     ylim = range(c(fit.conf.lb, fit.conf.ub, true.val)),
     xlab = "", ylab = "", axes = FALSE)
box(); axis(1, at = 1:length(fit.val), labels = names(fit.val)); axis(2)
points(coef(fit), col = "blue", pch = 4)
for (i in 1:length(fit.val)) {
    lines(c(i,i), c(fit.conf.lb[i], fit.conf.ub[i]))
}
legend( "topleft", legend = c("true value", "estimate", "confidence interval"),
        col = c("red", "blue", 1), pch = c(1, 4, NA), lty = c(NA, NA, 1), inset = 0.01)

आपने पैरामीटर (लैम्ब्डा, ओमेगा, अल्फा, बीटा) का अनुमान कैसे लगाया ??
च्स

1
@chs ugarchfitफ़ंक्शन के साथ पैरामीटर अनुमान प्राप्त किए गए थे ।
क्वांटिबेक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.