আর-তে কোভেরিয়েট সহ মডেল - একটি গির্চ (1,1) ফিট করুন


10

টাইম সিরিজ মডেলিংয়ের সাথে সাধারণ আরিমা মডেল ইত্যাদির আকারে আমার কিছু অভিজ্ঞতা আছে। এখন আমার কাছে এমন কিছু ডেটা রয়েছে যা অস্থিরতা ক্লাস্টারিংয়ের প্রদর্শন করে এবং আমি ডেটাতে একটি জিআরচ (1,1) মডেল ফিট করে শুরু করার চেষ্টা করতে চাই।

আমার কাছে একটি ডেটা সিরিজ এবং বেশ কয়েকটি ভেরিয়েবল রয়েছে বলে আমি মনে করি এটি এটি প্রভাবিত করে। সুতরাং বেসিক রিগ্রেশন পদগুলিতে এটি দেখতে মনে হচ্ছে:

Yটি=α+ +β1এক্সটি1+ +β2এক্সটি2+ +εটি

তবে আমি কীভাবে এটিকে কোনও জিআরচ (1,1) - মডেল রূপে প্রয়োগ করতে পারি তার সম্পূর্ণ ক্ষতিতে আছি? আমি rugarchপ্যাকেজ এবং fGarchপ্যাকেজটি দেখেছি R, তবে ইন্টারনেটে যে উদাহরণগুলি পাওয়া যায় তা ছাড়া আমি অর্থবহ কিছু করতে পারিনি।

উত্তর:


12

rugarchপ্যাকেজটি ব্যবহার করে এবং কিছু জাল তথ্য সহ বাস্তবায়নের উদাহরণ এখানে । ফাংশন ugarchfitগড় সমীকরণের বহিরাগত regressors অন্তর্ভুক্তি (ব্যবহার করে নোট জন্য করতে পারবেন external.regressorsমধ্যে fit.specনিচের কোডে)।

স্বরলিপিগুলি স্থির করতে, মডেলটি হ'ল যেখানে এবং সময়ে covariate বোঝাতে , এবং "স্বাভাবিক" অনুমানের / পরামিতি উপর প্রয়োজনীয়তা এবং নতুনত্ব প্রক্রিয়ার সঙ্গে ।

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)

আপনি কীভাবে প্যারামিটারগুলি (ল্যাম্বদা, ওমেগা, আলফা, বিটা) অনুমান করলেন ??
chs

1
@chs ugarchfitফাংশনটির সাথে প্যারামিটারের অনুমানগুলি পাওয়া গেছে ।
কোয়ান্টেবেেক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.