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

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

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

二维码

扫码加我 拉你入群

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

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

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

ICSS algorithm.rar

大小:1.46 KB

 马上下载

完善版附Example

本附件包括:

  • ICSS algorithm.R

二维码

扫码加我 拉你入群

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

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

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程序您那有吗?可否分享?
二维码

扫码加我 拉你入群

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

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

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.png

原图尺寸 10.1 KB

ICSS package

ICSS package

ICSS_final function.png

原图尺寸 9.94 KB

ICSS_final function

ICSS_final function

ICSS程序计算结果对比.png

原图尺寸 14.23 KB

两个ICSS程序计算结果对比

两个ICSS程序计算结果对比

ICSS algorithm.rar

大小:1.73 KB

 马上下载

终版1.0

本附件包括:

  • ICSS algorithm.R

二维码

扫码加我 拉你入群

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

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

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。感谢,祝好。
二维码

扫码加我 拉你入群

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

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

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

原图尺寸 181.92 KB

Rplot.jpeg

ICSS algorithm.rar

大小:3.03 KB

 马上下载

终版2.0

本附件包括:

  • ICSS algorithm.R

二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群