楼主: 百变小倩
16776 32

[问答] 请问怎样用R语言产生arch, arch-m, garch, garch-m的随机数? [推广有奖]

  • 0关注
  • 1粉丝

已卖:135份资源

硕士生

8%

还不是VIP/贵宾

-

威望
0
论坛币
275 个
通用积分
80.4166
学术水平
9 点
热心指数
6 点
信用等级
6 点
经验
4541 点
帖子
93
精华
0
在线时间
76 小时
注册时间
2012-7-18
最后登录
2021-5-15

楼主
百变小倩 发表于 2015-11-30 15:46:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

现在写论文遇到一个问题,我需要用r语言产生ARCH, ARCH in mean (ARCH-M), GARCH, GARCH in mean(GARCH-M) 四个时间序列模型的随机数,可是我并不知道 rugarch 包的用法,ugarchspec里的各个参数应该怎么指定呢?


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:garch-m GARCH ARCH ARC RCH R语言 时间序列 garch

已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
tulipsliu + 3 + 3 + 3 + 3 精彩帖子

总评分: 论坛币 + 3  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

本帖被以下文库推荐

沙发
百变小倩 发表于 2015-12-6 15:07:39
设置好ugarchspec各个参数之后,下一步应该怎样做呢,ugarchsim必须要使用ugarchfit拟合,可是我并没有data去拟合啊,我只是想R给出随机数,该怎样做呢。
求教大神,困扰很久了,搜不到相关知识

藤椅
百变小倩 发表于 2015-12-6 19:15:19
目前的探索结果:
1. 目测fGarch包没办法产生arch-m, garch-m等稍微复杂点的模型?不过产生arch, garch是足够用了,所以决定还是用fGarch包来产生arch, garch 模拟随机数,并进行接下来经验似然方法参数估计。
2. 已经知道该怎样使用rugarch包设置garch族不同模型的参数,然而怎样得到随机模拟数据还是迷茫。。不得不承认基础薄弱,理论和实践都一知半解>_<
3. 下面将总结的ugarchspec参数设置方法列下来,以免将来有需要的时候遗忘,也许可以帮助跟我一样探索阶段的菜鸟。

板凳
百变小倩 发表于 2015-12-6 19:16:11
##rugarch包可以用来构造各种各样的garch族模型,首先使用ugarchspec指定各个参数,然后使用ugarchfit来拟合模型,最后使用ugarchsim函数模拟---
##ugarchspec参数设定包括:
#1)方差方程: variance.model
#2)均值方程: mean.model
#3)分布方程: distribution.model
##比如模拟ARCH模型
##设定ARCH模型参数
variance.model = list(model = "GARCH", garchOrder = c(1, 0),submodel = NULL, external.regressors = NULL, variance.targeting = FALSE)
mean.model = list(armaOrder = c(1, 0), include.mean = TRUE, archm = FALSE, archpow = 1, arfima = FALSE, external.regressors = NULL, archex = FALSE)
distribution.model="nrom"
fixed.pars=list(ar1=0.3,ma1=0.3)
myspec=ugarchspec(variance.model = list(model = "fGARCH", garchOrder = c(1, 0),submodel = "GARCH", external.regressors = NULL, variance.targeting = FALSE),mean.model = list(armaOrder = c(1, 0), include.mean = TRUE, archm = FALSE, archpow = 1, arfima = FALSE, external.regressors = NULL, archex = FALSE),distribution.model="norm",fixed.pars=list(ar1=0.3,alpha1=0.3,omega=0))
##以上产生的就是AR(1)-ARCH(1)。
已有 1 人评分学术水平 收起 理由
ryoeng + 1 观点有启发

总评分: 学术水平 + 1   查看全部评分

报纸
百变小倩 发表于 2016-1-4 13:08:05
然而我还是需要找到模拟ARCH-M, GARCH-M 的方法!>_<我已知如何设置好ugarchspec各个参数,接下来该怎么simulation呢。。求教大神~~~

地板
百变小倩 发表于 2016-1-4 13:20:54
我决定每天过来顶帖n遍,直到解决了这一问题^_^

7
百变小倩 发表于 2016-1-10 22:35:19
##GARCH(1,1)-M random number generation
##y[t] = mu + c * h[t] + epsilon[t]
##epsilon[t] = eta[t] * sqrt(h[t])
##h[t] = omega + alpha * epsilon[t-1]^2 + beta * h[t-1]
T<-1000
epsilon<-numeric(T)
h<-numeric(T)
eta<-numeric(T)
omega<-numeric(1)
alpha<-numeric(1)
beta<-numeric(1)
mu<-numeric(1)
y<-numeric(T)
#step1: generate eta~N(0,1)
eta<- rnorm(T)
#epsilon[1]= , h[1]= , mu=0, omega=0
mu=0
c=0.2
omega=0.2
alpha<-0.3
beta<-0.1
for(t in 1:(T-1)){
  epsilon[1]=sqrt(omega/(1-alpha-beta))
  h[1]=(epsilon[1]/eta[1])^2
  h[t+1]= omega + alpha * (epsilon[t])^2 + beta * h[t]
  epsilon[t+1] = eta[t+1] * sqrt(h[t+1])
  y[t+1] = mu + c * h[t+1] + epsilon[t+1]    y[1]=mean(y)
}

8
百变小倩 发表于 2016-1-10 22:37:32
以上是我用r产生garch(1,1)-m随机数的过程,理论上应该是没问题吧?然而还是不自信,如果r里有自动化生成的语句就放心了,而且自己产生的随机数不太适合我接下来进行经验似然估计参数。。。愁啊愁,谁能告诉我r里面怎样产生garch-m的语句

9
百变小倩 发表于 2016-1-12 14:55:06
在Research Gate 上发帖问了同样的问题,没想到很快得到了解答,一位University of Balochistan的教授给了我蔡瑞胸的程序,未来可能会用到这一块内容的筒子们注意了,接下来高能预警,来自Ruey Tsay 的garch in mean model 模拟数产生的程序,见附件!!我反正是惊呆了,我要去细细研读了,目测智商不够

garchM-simulation-Rcode.docx
下载链接: https://bbs.pinggu.org/a-1955234.html

94.06 KB

需要: 1 个论坛币  [购买]

已有 3 人评分学术水平 热心指数 信用等级 收起 理由
ryoeng + 1 观点有启发
lj5203344 + 1 + 1 + 1 精彩帖子
日新少年 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 3  热心指数 + 2  信用等级 + 2   查看全部评分

10
百变小倩 发表于 2016-1-17 15:53:32
再发一个修正版的简单点的程序吧: 还是那个教授帮我略微修改了一下我的程序,应该会更合理点,获得的随机数更稳定:
然而不确定正确性,目前为止,我根据这个程序产生的随机数做的garch-m的经验似然估计效果是还不错,但不知道实证分析会不会理想。。。会再更新。
##GARCH(1,1)-M random number generation
##y[t] = mu + c * h[t] + epsilon[t]
##epsilon[t] = eta[t] * sqrt(h[t])
##h[t] = omega + alpha * epsilon[t-1]^2 + beta * h[t-1]
nT<-1000; burnin = 500; T = burnin + nT
epsilon<-numeric(T)
h<-numeric(T)
eta<-numeric(T)
y<-numeric(T)
#step1: generate eta~N(0,1)
eta<- rnorm(T)
mu=0
delta=0.2
omega=0.2
alpha<-0.1
beta<-0.8

h[1]=(omega/(1-alpha-beta))^2
epsilon[1] = eta[1] * sqrt(h[1])
y[1] = mu + delta * h[1] + epsilon[1]

for(t in 2:T){
  h[t]= omega + alpha * (epsilon[t-1])^2 + beta * h[t-1]
  epsilon[t] = eta[t] * sqrt(h[t])
  y[t] = mu + delta * h[t] + epsilon[t]
}

# Remove burin period
data = y[burnin+1:nT]
vol = h[burnin+1:nT]
# Plot data(y) and vol(h)
par(mfrow=c(1,1))
ts.plot(data)
ts.plot(vol)
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
loooooy + 1 + 1 + 1 精彩帖子
ryoeng + 1 观点有启发

总评分: 学术水平 + 2  热心指数 + 1  信用等级 + 1   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 09:01