【原创】R语言对美国加拿大外汇数据进行时间序列分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
对美国加拿大外汇数据进行时间序列分析
1)Download the exchange rate of your desired currency pairs for at lea
st two years from the website: http://fx.sauder.ubc.ca/data.html, and r
ead the data into R. (5 points)
数据读取
首先我们从网站http://fx.sauder.ubc.ca/data.html下载CAD和USD需货币对的两年
汇率,并将数据读入R
data=read.table("data.txt",header=T,skip=1)
浏览数据
data
Jul.Day YYYY.MM.DD Wdy CAD.USD
1 2457025 2015/01/02 Fri 1.1728
2 2457028 2015/01/05 Mon 1.1787
3 2457029 2015/01/06 Tue 1.1804
4 2457030 2015/01/07 Wed 1.1851
5 2457031 2015/01/08 Thu 1.1812
【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
6 2457032 2015/01/09 Fri 1.1857
7 2457035 2015/01/12 Mon 1.1930
8 2457036 2015/01/13 Tue 1.1948
9 2457037 2015/01/14 Wed 1.1958
10 2457038 2015/01/15 Thu 1.1932
11 2457039 2015/01/16 Fri 1.1986
12 2457042 2015/01/19 Mon 1.1966
13 2457043 2015/01/20 Tue 1.2085
...
585 2457877 2017/05/03 Wed 1.3714
586 2457878 2017/05/04 Thu 1.3743
587 2457879 2017/05/05 Fri 1.3712
588 2457882 2017/05/08 Mon 1.3705
589 2457883 2017/05/09 Tue 1.3728
590 2457884 2017/05/10 Wed 1.3672
591 2457885 2017/05/11 Thu 1.3707
592 2457886 2017/05/12 Fri 1.3714
593 2457889 2017/05/15 Mon 1.3641
594 2457890 2017/05/16 Tue 1.3596
595 2457891 2017/05/17 Wed 1.3614
596 2457892 2017/05/18 Thu 1.3611
597 2457893 2017/05/19 Fri 1.3544
598 2457897 2017/05/23 Tue 1.3490
599 2457898 2017/05/24 Wed 1.3460
600 2457899 2017/05/25 Thu 1.3453
601 2457900 2017/05/26 Fri 1.3456
绘制时间序列图
【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
收集历史资料,加以整理,编成时间序列,并根据时间序列绘成统计图。时间序列分析通
常是把各种可能发生作用的因素进行分类,传统的分类方法是按各种因素的特点或影响效
果分为四大类:(1)长期趋势;(2)季节变动;(3)循环变动;(4)不规则变动。
从时间序列图形来看,序列有明显趋势,所以该序列一定不是平稳序列。因为原序
列为非平稳序列,所以选择一阶差分继续分析
2)Decompose the time series data into trend, seasonality and error com
ponents. (10 points)
开始分解季节性时间序列
【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
一个季节性时间序列中会包含三部分,趋势部分、季节性部分和无规则部分。分解时间
序列就是要把时间序列分解成这三部分,然后进行估计。
对于可以使用相加模型进行描述的时间序列中的趋势部分和季节性部分,我们可以使用 R
中的“decompose()” 函数来估计。这个函数可以估计出时间序列中趋势的、季节性的
和不规则的部分,而此时间序列须是可以用相加模型描述的。
“decompose()” 这个函数返回的结果是一个列表对象, 里面包含了估计出的季节性部
分, 趋势部分和不规则部分, 他们分别对应的列表对象元素名为“seasonal” 、 “tren
d” 、 和“random” 。
【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
要剔除某个趋势时(我们就去掉季节因素),我们可以运用减法去掉该因素,下图就是
去掉季节性因素后的修正序列。
【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
看图中的横轴lag表示滞后阶数,纵轴表示对应各阶的相关系数,0阶滞后表示对自己的
自相关系数,所以一般对应的相关系数值为1,再看图中上下的蓝色虚线内为95%置信区
间,若lag>0对应的相关系数均在该区间内则表示该变量自相性问题不严重
【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
看图中的横轴lag表示滞后阶数,纵轴表示对应各阶的相关系数,0阶滞后表示对自己的
自相关系数,所以一般对应的相关系数值为1,再看图中上下的蓝色虚线内为95%置信区
间,若lag>0对应的相关系数均在该区间内则表示该变量自相性问题不严重
3)Use Holt’s exponential smoothing to make short-term forecasts.
指数平滑法
(Exponential Smoothing,ES)是布朗(Robert G..Brown)所提出,布朗认
为时间序列的态势具有稳定性或规则性,所以时间序列可被合理地顺势推延;他认为最近
的过去态势,在某种程度上会持续到未来,所以将较大的权数放在最近的资料。
【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
指数平滑法是生产预测中常用的一种方法。也用于中短期经济发展趋势预测,所有预测
方法中,指数
一次指数平滑法
平滑是用得最多的一种。简单的全期平均法是对时间数列的过去数据一个不漏地全部加以
同等利用;移动平均法则不考虑较远期的数据,并在加权移动平均法中给予近期资料更大
的权重;而指数平滑法则兼容了全期平均和移动平均所长,不舍弃过去的数据,但是仅给
予逐渐减弱的影响程度,即随着数据的远离,赋予逐渐收敛为零的权数。
也就是说指数平滑法是在移动平均法基础上发展起来的一种时间序列分析预测法,它是
通过计算指数平滑值,配合一定的时间序列预测模型对现象的未来进行预测。其原理是任
一期的指数平滑值都是本期实际观察值与前一期指数平滑值的加权平均。
简单指数平滑法。简单指数平滑适用于可用相加模型描述,并且处于恒定水平和没有季
节变动的时间序列地短期预测。
简单指数平滑法提供了一种方法估计当前时间点上的水平。为了更加准确的估计当前时
间的水平,我们使用alpha参数来控制平滑,alpha的取值在0-1之间。当alpha越接近
0,临近预测的观测值在预测中的权重就越小。
【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
从该图中可以看出整个曲线处于大致不变的水平,且随机变动在整个时间序列范围内也可
以认为是大致不变的,所以该序列可以大致被描述为一个相加模型,因此我们可以使用简
单指数平滑法进行预测。我们采用R中的HoltWinters()函数,为了能够使用HoltWinte
rs中的指数平滑,我们需要进行参数设置:beta=FALSE和gamma=FALSE,预测结果如
下图:
此外我们可以画出预测值和实际值,看看预测效果:
Holt-Winters exponential smoothing without trend and without seasonal
component.