楼主: gcwy
6039 12

[问答] garch模型的极大似然估计 [推广有奖]

  • 0关注
  • 3粉丝

讲师

88%

还不是VIP/贵宾

-

威望
0
论坛币
12 个
通用积分
7.8933
学术水平
1 点
热心指数
5 点
信用等级
0 点
经验
20100 点
帖子
113
精华
0
在线时间
1125 小时
注册时间
2012-9-19
最后登录
2024-4-24

楼主
gcwy 在职认证  发表于 2017-8-19 17:42:43 |只看作者 |坛友微信交流群|倒序 |AI写论文
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
开始学习自己用极大似然方法估计garch模型,下面是我写的代码,我写的极大似然估计结果与用garchFit函数估计的结果相差好大啊,不知道为什么,并且很明显是我的计算结果有问题,并且计算速度相当慢。但是我不知道问题出在哪里,是似然函数写错了?按理说结果应该不会相差很大啊?请高手指点。
  1. ##generate a time series based on garch(1,1) model##
  2. h0<-0
  3. sigma0<-1
  4. ht<-h0
  5. et<-sigma0
  6. a<-0.1
  7. b<-0.85
  8. for(i in 2:10100){
  9.   ht[i]<-1+a*ht[i-1]+b*et[i-1]^2
  10.   et[i]<-rnorm(1,0,ht[i]^0.5)
  11. }
  12. rt<-et[-1:-100]
  13. plot(rt,type="l")

  14. library(fGarch)
  15. m1<-garchFit(~1+garch(1,1),data=rt,trace=F)

  16. lf<-function(pa){
  17.   c<-pa[1]
  18.   mu<-pa[2]
  19.   a<-pa[3]
  20.   b<-pa[4]
  21.   ht<-0##we can adjust this paramater##
  22.   N<-length(rt)-1
  23.   for(i in 2:length(rt)){
  24.     ht[i]<-mu+b*(rt[i-1]-c)^2+a*ht[i-1]
  25.   }
  26.   l<--0.5*N*log(2*pi) - sum(log(ht[-1])) - sum(0.5*(rt[-1] -c)^2/ht[-1])
  27.   result<-l
  28.   return(result)
  29. }
  30. library(maxLik)
  31. A<-matrix(c(0,1,0,0,0,0,-1,-1),ncol=4,byrow=T)
  32. B<-matrix(c(0,1),ncol=1)
  33. est<-maxLik(lf,start=c(0,0.2,0,0.8),constraints = list(ineqA=A,ineqB=B))
  34. est
复制代码


二维码

扫码加我 拉你入群

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

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

关键词:GARCH模型 极大似然估计 ARCH模型 GARCH ARCH

回帖推荐

deem 发表于4楼  查看完整内容

似然函数不要加负号,因为maxLik是最大化,不是在做最小化。要速度快,你需要提供梯度和海森的信息
沙发
ryoeng 在职认证  发表于 2017-8-19 17:46:57 来自手机 |只看作者 |坛友微信交流群
提示: 作者被禁止或删除 内容自动屏蔽

使用道具

藤椅
gcwy 在职认证  发表于 2017-8-19 17:50:13 |只看作者 |坛友微信交流群
ryoeng 发表于 2017-8-19 17:46
幹嘛不直接使用現有的程序包呢?僕最近也剛好著手於Garch模式唷!
额,我主要以学习为主,想试试如果自己编会是个什么结果。如果碰到一些比较新的模型可能没有现成的程序包可用啊,要是最基础的都编不对,那复杂点的模型可就真不敢自己算了。

使用道具

板凳
deem 学生认证  发表于 2017-8-20 17:24:51 |只看作者 |坛友微信交流群
似然函数不要加负号,因为maxLik是最大化,不是在做最小化。要速度快,你需要提供梯度和海森的信息

使用道具

报纸
deem 学生认证  发表于 2017-8-20 17:25:41 |只看作者 |坛友微信交流群
deem 发表于 2017-8-20 17:24
似然函数不要加负号,因为maxLik是最大化,不是在做最小化。要速度快,你需要提供梯度和海森的信息
我改过后试了下,你的code是对的

使用道具

地板
gcwy 在职认证  发表于 2017-8-20 19:05:08 |只看作者 |坛友微信交流群
deem 发表于 2017-8-20 17:25
我改过后试了下,你的code是对的
您好!谢谢您的解答。请问您跑出来的结果和garchFit函数的输出结果接近吗?我算得差别挺大的。

使用道具

7
deem 学生认证  发表于 2017-8-20 19:09:49 |只看作者 |坛友微信交流群
gcwy 发表于 2017-8-20 19:05
您好!谢谢您的解答。请问您跑出来的结果和garchFit函数的输出结果接近吗?我算得差别挺大的。
完全一致的

使用道具

8
deem 学生认证  发表于 2017-8-20 19:13:23 |只看作者 |坛友微信交流群
deem 发表于 2017-8-20 19:09
完全一致的
我看错了,不一致


fig2.png (19.13 KB)

fig2.png

fig1.png (6.04 KB)

fig1.png

fig1.png (6.04 KB)

fig1.png

使用道具

9
gcwy 在职认证  发表于 2017-8-20 19:16:40 |只看作者 |坛友微信交流群
deem 发表于 2017-8-20 19:13
我看错了,不一致
是啊,我怕是我的似然函数就写错了。还在学习中,感谢老师的的指导。

使用道具

10
gcwy 在职认证  发表于 2017-8-22 09:33:37 |只看作者 |坛友微信交流群
deem 发表于 2017-8-20 19:13
我看错了,不一致
试了一段时间,两个问题:1、仔细检查后,我的似然函数写错了,2、目标函数里面用了for循环,貌似用for循环会大大降低运算速度,但是对于garch模型来说,如何写成非循环的形式呢?
  1. ##generate a time series based on garch(1,1) model##
  2. h0<-0
  3. sigma0<-1
  4. ht<-h0
  5. et<-sigma0
  6. a<-0.1
  7. b<-0.85
  8. for(i in 2:10100){
  9.   ht[i]<-1+a*ht[i-1]+b*et[i-1]^2
  10.   et[i]<-rnorm(1,0,ht[i]^0.5)
  11. }
  12. rt<-et[-1:-100]
  13. plot(rt,type="l")

  14. library(fGarch)
  15. m1<-garchFit(~1+garch(1,1),data=rt,trace=F)

  16. lf<-function(pa){
  17.   c<-pa[1]
  18.   mu<-pa[2]
  19.   a<-pa[3]
  20.   b<-pa[4]
  21.   ht<-0##we can adjust this paramater##
  22.   N<-length(rt)-1
  23.   for(i in 2:length(rt)){
  24.     ht[i]<-mu+b*(rt[i-1]-c)^2+a*ht[i-1]
  25.   }
  26.   l<--0.5*N*log(2*pi) - 0.5*sum(log(ht[-1])) - sum(0.5*(rt[-1] -c)^2/ht[-1])
  27.   result<-l
  28.   return(result)
  29. }
  30. library(maxLik)
  31. A<-matrix(c(0,1,0,0,0,0,-1,-1),ncol=4,byrow=T)
  32. B<-matrix(c(0,1),ncol=1)
  33. est<-maxLik(lf,start=c(0,0.2,0,0.8),constraints = list(ineqA=A,ineqB=B))
  34. est
复制代码

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 05:03