楼主: $hj@!!!
3330 4

[问答] TSA包里的gBox函数例子怎么跑不出来 [推广有奖]

  • 0关注
  • 0粉丝

学前班

50%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
1 小时
注册时间
2013-11-4
最后登录
2016-2-28

楼主
$hj@!!! 发表于 2016-2-23 20:20:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
TSA包里面的gBox函数的例子library(tseries)data(CREF)r.cref=diff(log(CREF))*100m1=garch(x=r.cref,order=c(1,1))summary(m1)#Box(m1,x=r.cref,method='squared')为啥跑出的结果是这样(M, filter = beta, method = "recursive", sides = 1, init = rep(sigma2,  :   dims [product 2]与对象长度[1]不匹配求高手们解答!!


二维码

扫码加我 拉你入群

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

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

关键词:box TSA Recursive Squared Library library filter method

沙发
丁丁琪琪 发表于 2016-3-4 19:04:50
我也碰到了这个问题,在自己的数据上。
题主有找到问题的原因么?

藤椅
丁丁琪琪 发表于 2016-3-7 15:01:33
查了下gBox的代码,问题出现在第28行
>> M = filter(M, filter = beta, method = "recursive", sides = 1, init = rep(sigma2, length(beta)))
简要的结论就是:M的列数和传入的init的长度不同, 导致filter函数里面报错。这里的M是列数为2的矩阵,init是长度为1的向量。

更详细的:
跟着代码追到filter内:
# line 11
>> nser <- NCOL(x)  # x指上面的M,nser为2
....
# line 48
>> dim(init) <- c(nfilt, nser) # 这里nflit为1, nser为2

我们知道,传入的init是个长度为1的向量。line 48将一个长度为1的向量,转换成一个(1,2)的矩阵,导致报错。

如果不指定init的话,就不会报错。因为filter函数的默认值是init = NULL,也就不会出现上面向量转矩阵的问题。

个人BB:
我不是太理解filter的意义和目的(gBox的计算思路也没仔细理解),所以不知道怎么修正。
不能确定是TSA的gBox函数出了问题,还是stats的filter出了问题。

刚开始我觉得stats包作为一个基础包,应该假设它是对的,需要修正gBox函数。
但是查看filter代码的时候,发现一个很明显的错误,见filter的line14.
所以想想也有可能是stats包出了问题。因为它假设init是NULL,并且在line 47的向量转矩阵的时候也没有进行错误处理。属于一种reasonable的BUG。

另:TSA包中gBox的函数说明,最后的gBox代码是打#号的,所以很可能作者本身也没跑通。
但是他应该比较确信自己的计算没有问题,所以还是放了出来。

板凳
暗示治疗 发表于 2016-5-11 18:39:45
丁丁琪琪 发表于 2016-3-7 15:01
查了下gBox的代码,问题出现在第28行
>> M = filter(M, filter = beta, method = "recursive", sides = 1, ...
所以找到解决方案了吗

报纸
sjkai 发表于 2016-7-8 15:59:39
我也出现这个报错,用R语言的时候

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

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