请选择 进入手机版 | 继续访问电脑版
楼主: 719812133
15446 24

[程序分享] ICSS Algorithm 代码R语言版 (迭代累积平方和算法) V2.4 [推广有奖]

  • 0关注
  • 7粉丝

副教授

37%

还不是VIP/贵宾

-

威望
0
论坛币
7510 个
通用积分
753.4973
学术水平
41 点
热心指数
38 点
信用等级
33 点
经验
97099 点
帖子
89
精华
0
在线时间
1583 小时
注册时间
2016-1-20
最后登录
2024-3-28

719812133 学生认证  发表于 2021-3-5 20:21:03 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
ICSS算法(Inclan & Tiao, 1994)主要用在计量经济学时间序列的分析上,用来识别时间序列的structural break(结构断点),一般常被用来外生地分析时间序列的结构变化时点,进而进一步以此断点为客观依据,去构造ICSS-GARCH模型(即GARCH模型带虚拟变量,考虑序列structural break)。论坛上已经有这个算法的MATLAB程序和GAUSS程序,但是还没有看到R的版本,刚好自己要用到,所以参考了论坛上别人MATLAB的版本,转写了一份R的代码,实现的计算效果是一样的,程序附在下面。Inclan & Tiao, 1994的论文我也附在下面。

PS: 直接在1楼这里下载最新的2.4版本就好,帖子不知道为什么后面楼层的回答显示不出来了,点上面"只看作者"旁边的"倒序"就可以看新楼层的回答,这份程序已修改多次,修改内容在楼层回答里都有备注。
二维码

扫码加我 拉你入群

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

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

关键词:Algorithm ICSS R语言 ics 平方和

ICSS algorithm.rar

758 Bytes

本附件包括:

  • ICSS algorithm.R

Tiao1994.pdf

1.01 MB

ICSS algorithm.rar

760 Bytes

更正版,更正了代码备注

本附件包括:

  • ICSS algorithm.R

ICSS algorithm (Version 2.4).rar

3.9 KB

本附件包括:

  • ICSS algorithm (Version 2.4).R

已有 4 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 鼓励积极发帖讨论
tulipsliu + 5 + 5 + 5 精彩帖子
cheetahfly + 30 奖励积极上传好的资料
llb_321 + 5 对论坛有贡献

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

本帖被以下文库推荐

719812133 学生认证  发表于 2021-4-12 14:52:56 |显示全部楼层 |坛友微信交流群
上一版本的程序没有给使用的例子,比较粗糙所以今天有人来问要怎么用,原来那份可能是不太方便理解和调用。所以我修改了下原来的程序,把该封装的变量都封装了下,同时附上了较为详细的源码备注、还有主函数说明、最后给了个Example。原来主函数调用的原理还是很简单的,现在只有一个输入变量就更方便使用了。算法的程序附在下面,以后请以这份为准吧。最后再提醒一下,这份程序是参考论坛里别人MATLAB代码转写的,核心逻辑都没有改变,只是使用上简便了些,实现的结果是一模一样的。我对这一类算法也没有很深的了解,只是转写了R拿来学习而已,若是以后大家发现有错误或者有可以改进的地方那就要自己多留意了。

ICSS algorithm.rar

1.46 KB

完善版附Example

本附件包括:

  • ICSS algorithm.R

使用道具

Camera_TJ 发表于 2021-4-17 13:11:08 |显示全部楼层 |坛友微信交流群
非常感谢你的贡献。顺便问一下:
1、你这个程序和目前CRAN中的ICSS Package 有功效的区分吗?2、现在经常使用的修正ICSS算法,主要是参考Sanso等在2013年写的《Testing for Changes in the Unconditional Variance of Financial Time Series 》,这个修正的ICSS算法的R程序您那有吗?可否分享?

使用道具

719812133 学生认证  发表于 2021-4-17 19:58:17 |显示全部楼层 |坛友微信交流群
Camera_TJ 发表于 2021-4-17 13:11
非常感谢你的贡献。顺便问一下:
1、你这个程序和目前CRAN中的ICSS Package 有功效的区分吗?2、现在经常使 ...
您好,不提醒还不知道原来R已经有这个算法的package了。功效上的话应该是基本上一致的,如果你是指计算结果的话,但是我看了这个R包作者Köstlmeier写的源代码,他那个代码较多,程序也应该更考究一些吧,但是核心算法都是一致的思路,Github上也有这个包的信息,包作者那一栏似乎ICSS算法的第一作者Inclan也有参与,所以如果担心程序不准确就请以这个ICSS Package为准吧。同时他的critical value取的是1.358 (95%),而我这份是设定为1.629 (99%),具体参见Inclan和Tiao1994论文里Table 1给出的critical value参照表。所以我又修改了下程序,让critical value成为一个可选择的变量,这个参数会影响ICSS判断的断点位置,大家可以自己根据实际情况决定ICSS断点判别的严格程度。程序附在下面。图片是两份程序对rugarch包的dmbp[,1]这个example data的计算结果对比,如果两个程序都设置成1.358 (95%)的critical value,能看到其实断点位置都很接近了,相差并不大,但是我这份会算多几个break points,这可能和程序写法有关。那有了这个对比参照,这份转写来的R程序应该准确度还是可以的。至于修正ICSS算法 (Modified ICSS (Sanso2004))的程序我这里也没有,不知道目前有没有什么软件能现成地计算这个修正版的。

ICSS package

ICSS package

ICSS_final function

ICSS_final function

两个ICSS程序计算结果对比

两个ICSS程序计算结果对比

ICSS algorithm.rar

1.73 KB

终版1.0

本附件包括:

  • ICSS algorithm.R

使用道具

Camera_TJ 发表于 2021-4-18 18:21:20 |显示全部楼层 |坛友微信交流群
你非常棒,十分感谢。现在关于ICSS的认识,基本上还是基于收益率的残差序列的假定(iid~N( , )),但实际上对于真实的金融时序数据有很多不符点,因此2003年开始就有很多文章在使用Sanso等(2003)人写的《Testing for Changes in the Unconditional Variance of Financial Time Series》这篇文章中指出的不符点进行修正后的ICSS算法进行断点识别,当然主要还是基于逐点构建似然比统计量的思想,只不过是检验统计量进行了修正。写这篇文章的作者是使用GAUSS实现的,但是能力有限,我确实不懂,仅了解一点R的皮毛,而R上没有关于修正ICSS算法的包或公开的程序,所以如果你能实现 GAUSS程序转换成R代码,那么最好不过了。可否加个QQ:309447790。感谢,祝好。

使用道具

719812133 学生认证  发表于 2021-6-29 21:58:33 |显示全部楼层 |坛友微信交流群
ICSS algorithm的代码又更新了一遍,进行了一次封装,直接调用计算即可得到丰富的计算结果。
eg:
计算后直接展示结果,一步到位方便研究分析,考虑到有些人计算的断点会比较多,所以结果支持输出到本地 (eg: write = T),同时还支持输入日期:
The total observations of the input series is: 1974
The number of break points detected by ICSS is: 17
The position of break points detected by ICSS is: 175 506 571 805 858 1029 1085 1152 1415 1542 1658 1676 1804 1818 1881 1890 1948
The number of total periods is: 18
The observation and respective standard deviation of the period are:

                        Period's observations Standard deviation
period_1 (1 - 174)      174                   0.3706            
period_2 (175 - 505)    331                   0.5012            
period_3 (506 - 570)    65                    1.0092            
period_4 (571 - 804)    234                   0.6257            
period_5 (805 - 857)    53                    0.3966            
period_6 (858 - 1028)   171                   0.1950            
period_7 (1029 - 1084)  56                    0.3398            
period_8 (1085 - 1151)  67                    0.4669            
period_9 (1152 - 1414)  263                   0.3315            
period_10 (1415 - 1541) 127                   0.5920            
period_11 (1542 - 1657) 116                   0.4216            
period_12 (1658 - 1675) 18                    1.0171            
period_13 (1676 - 1803) 128                   0.2546            
period_14 (1804 - 1817) 14                    0.6953            
period_15 (1818 - 1880) 63                    0.1877            
period_16 (1881 - 1889) 9                     0.5216            
period_17 (1890 - 1947) 58                    0.1730            
period_18 (1948 - 1974) 27                    0.3404            


下面是计算后可直接提取的数据,方便后续其他计算:

num_breakpoint # 断点数
breakpoint # 断点位置
num_period # 时期数
period_observation # 各个时期的观测值数目
period_sd # 各个时期的标准差



支持对计算结果直接画图(returns和标准差一同展示),只需一行代码,部分画图参数可自定义,同样支持输入日期。
Rplot.jpeg

ICSS algorithm.rar

3.03 KB

终版2.0

本附件包括:

  • ICSS algorithm.R

已有 1 人评分论坛币 学术水平 收起 理由
llb_321 + 5 + 5 精彩帖子

总评分: 论坛币 + 5  学术水平 + 5   查看全部评分

使用道具

719812133 学生认证  发表于 2021-7-6 17:20:09 |显示全部楼层 |坛友微信交流群
程序更新到2.1,同时说明文档也已更新勘误。R cran已经有ICSS包了,Inclan也是作者之一,因此写这份ICSS程序的初衷纯粹是出于自己练手,目前很多程序只能求断点然后就没下文了,并不是很方便,基于断点的后续呈现代码并不难,但也可能会比较繁琐。所以这份程序不收论坛币也不收费,仅用作交流,能帮到大家便是一件好事,毕竟还是不少人有使用这个算法的需求,程序部分功能的更新也来自于一些坛友的反馈,在这里表示感谢。
(1) 在2.0基础上改进了画图函数,允许更多自定义。
原来的画图函数默认只有单y轴 (即左y轴),同时刻度是按照标准差来展示的,2.1的画图函数允许使用者自定义这个左y轴是要跟着标准差还是收益率来展示刻度 (在相当一部分已发表论文里,展示的ICSS图并没有声明其y轴是以标准差还是收益率来展示刻度,所以把这个选择交给使用者,按需使用即可)。同时还允许以双y轴 (左y轴和右y轴) 展示,左y轴刻度如果设定为标准差 (收益率),那么右y轴的刻度就自动为收益率 (标准差),同样按需使用即可。左y轴,右y轴,x轴的名称均可自定义,依旧支持输入日期。

(2) 同时新加入一个函数 (用于直接求虚拟变量dummy variable)。
仅需调用一行函数,就可以对ICSS计算后的对象直接构造虚拟变量。针对被计算的序列,ICSS算法识别出来的断点们会构成若干个时期,该函数对每一个时期都构造了相应的一个虚拟变量,有多少个时期就有多少个虚拟变量,以矩阵形式存储 (以方便与其他R程序包虚拟变量的使用进行对接),矩阵的每一列就是一个虚拟变量。考虑到有的使用者不想要第一个时期也设为虚拟变量,那么只要去掉矩阵第一列即可。若是不想每一个时期都设为虚拟变量,则可以按需自己合并矩阵各列。最后,该函数还支持将得到的虚拟变量导出到本地,方便大家使用 (write = T)。





ICSS algorithm (Version 2.1).zip

3.74 KB

本附件包括:

  • ICSS algorithm (Version 2.1).R

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 鼓励积极发帖讨论

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

使用道具

yangming98 发表于 2021-7-6 22:44:48 来自手机 |显示全部楼层 |坛友微信交流群
719812133 发表于 2021-3-5 20:21
ICSS算法(Inclan & Tiao, 1994)主要用在计量经济学时间序列的分析上,用来识别时间序列的structural break( ...
好的好的好的好的

使用道具

719812133 学生认证  发表于 2021-7-12 16:10:43 |显示全部楼层 |坛友微信交流群
程序更新到2.2

1. 在ICSS计算返回的结果里加入了每一个时期的均值。

2. 改进了画图函数,原先2.1中的收益率和标准差在画图时,y轴区间并没有采用相同的区间,所以这一次将收益率和标准差画图的y轴区间都进行了统一,都向收益率的数量级看齐,和大部分英文期刊上的画图方式保持一致。因为y轴区间都统一了,所以便不再区分左y轴的刻度是以收益率还是标准差为基准了,现在刻度都是一样的,所以双y轴画图下左右y轴的刻度都一致。允许使用者自定义画图时收益率序列的宽窄,也允许自定义画图时展示的标准差倍数(默认是±3倍标准差,和大部分期刊论文保持一致,可以自定义为1倍或2倍,倍数越大则画图时标准差离收益率的距离越大,取决于自己的画图需求)。同时允许自定义画图展示的均值,均值可以是每一个ICSS识别的时期各自的均值(部分论文会这样展示),也可以是统一为默认的一条横线(y=0),均值画图也可以自定义颜色和线型。

ICSS algorithm (Version 2.2).zip

3.94 KB

本附件包括:

  • ICSS algorithm (Version 2.2).R

使用道具

ying2646 发表于 2021-8-31 22:44:38 |显示全部楼层 |坛友微信交流群
楼主,我在运行中遇到两个问题:1,使用的数据有日期,但是输出的结果日期变成了排序数。2,我的数据只有400个,但是结构突变点却出现200个。我是R新手,问题可能比较低级,如果楼主有看到,希望楼主能帮我解答一下,万分感谢。或者可以加一下qq嘛,1102251153.

使用道具

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

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

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

GMT+8, 2024-3-29 09:10