R语言建立时间序列的两个函数


金融数据必须是时间序列,才可进行经济统计分析。建立时间序列,必须有日期作为数据框的一列。R语言建立时间序列的两个函数是ts()和as.xts()。

1.ts()

        library(stats)          #stats软件包是R语言环境启动的7个软件包

        ts(gm,frequency=12,start=c(1975,1))

        这个命令表示:

        (1)  frequency=12表明时间单位为年,而且在每一个时间单位中有12个均匀间隔的观察值。

                  因此gm是月数据,在金融数据中,常用的有月收益率数据。

        (2)  start=c(1975,1)表示开始时间为1975年1月。

        (3)  gm应是列数据,而不能是多列金融数据。而且gm在数据框中选择出来时,应有日期在同一个数据框中。

       frequency和start是R中ts()函数产生时间序列对象需要的两个基本参数。frequency的用法,

           (a)frequency=4表明时间单位是年,每一个时间单位中有4个季节观察值。

           (b)frequency=365表明时间单位是年,每一个时间单位中有365个日期观察值。

              若样本容量T<365,则可用frequency=T表示。

       start的用法。

           (a)若ts(gm,frequency=365,start=c(2014,1,1))建立时间序列。

                  但是,若用  ts(gm,frequency=365,start=c(2014,1,1),end(2014,12,31))结果将不同。

           (b)若用ts(gm,frequency=1,start=c(2014,1,1))则,创建的时间序列start和end不同,将1年的时间单位用1天表示。

                  这个用法一般是gm只有一年的数据,对此年的数据进行以天为单位的经济统计。

                然而金融数据大多数并不是以365个数据为一年的数据,比如股市一年的有效数据一般在240多天,因此frequence的选择应该与一年的实际数据为准。

  完整的函数表示:

     ts(data = NA, start = 1, end = numeric(0), frequency = 1, deltat = 1,

        ts.eps = getOption("ts.eps"),  class = , names = ) 

       详细信息可见R语言系统

    >?ts

       e.g. 参数class


class to be given to the result, or none if NULL or "none". The default is"ts" for a single series,c("mts", "ts", "matrix") for multiple series.

 

2.as.xts()

      as.xts()与ts()不同,要求行名是日期。因此数据框中的日期必须赋值到行名,

     而且删除日期所在的列。

eg1.  as.xts()建立时间序列的主要命令

      da=read.table("m-gm3dxjsh2016.txt",header=T)

      gm2016=da[,1:2]   #da[1]是日期,da[2]是金融数据

      rownames(gm2016)=gm2016[,1]   #将日期赋值到行名,注意不能用gm2016[1],否则长度不同

      gm=gm2016[-1]    # 去掉第一列

      gm1=as.xts(gm[,1])  # 建立金融数据的时间序列,实际上这个语句并能运行,原因见eg2.

     将日期赋值到行名的编程方法有很多,第二个程序的数据文件不同。

eg2.as.xts()建立时间序列的完整程序

> da=read.table("D:/programsdata/financialCapital/m-gm3dx2016.txt",head=T)      

>head(da)
      date       gm       vw       ew       sp
1 19750131 0.252033 0.141600 0.299260 0.122812
2 19750228 0.028571 0.058411 0.053918 0.059886
3 19750331 0.054487 0.030191 0.081497 0.021694
4 19750430 0.045593 0.046497 0.031093 0.047265
5 19750530 0.037209 0.055140 0.072876 0.044101
6 19750630 0.107955 0.051473 0.071792 0.044323

>gm2016=da[,1:2]   #gm2016是数据框

>head(gm2016)

date       gm
1 19750131 0.252033
2 19750228 0.028571
3 19750331 0.054487
4 19750430 0.045593
5 19750530 0.037209
6 19750630 0.107955

> dim(gm2016)      
[1] 408   2

> str(gm2016)    #成员date是int型
'data.frame':   408 obs. of  2 variables:
 $ date: int  19750131 19750228 19750331 19750430 19750530 19750630 19750731 19750829 19750930 19751031 ...
 $ gm  : num  0.252 0.0286 0.0545 0.0456 0.0372 ...

  

 > d=as.character(gm2016[,1])       #将int型日期转换成Date型

> d1=as.Date(d,format="%Y%m%d")
> head(d1)
[1] "1975-01-31" "1975-02-28" "1975-03-31" "1975-04-30" "1975-05-30"
[6] "1975-06-30"                         
> class(d1)
[1] "Date"

> gm=gm2016[,2,drop=FALSE]   #获得数据框gm2016的第二列,drop=FALSE防止出现向量
> class(gm)      #gm是数据框
[1] "data.frame"


> head(gm)
        gm
1 0.252033
2 0.028571
3 0.054487
4 0.045593
5 0.037209
6 0.107955
> str(gm)    #成员gm的类型是num数值型
'data.frame':   408 obs. of  1 variable:
 $ gm: num  0.252 0.0286 0.0545 0.0456 0.0372 ...

> rownames(gm)=d1   #gm的行名是R语言标准时间表示
> head(gm)
                 gm
1975-01-31 0.252033    #注意19750131是不允许的
1975-02-28 0.028571
1975-03-31 0.054487
1975-04-30 0.045593
1975-05-30 0.037209
1975-06-30 0.107955

>library(xts)

>gm2=as.xts(gm)

比较

ts()和as.xts()两个函数产生的时间序列的plot图略有不同。然而acf图和pacf图则相同。

nm1=as.xts(data1)

nm2=ts(data1,frequency=365,start=c(2014,1,1),end=c(2014,12,31))

acf(nm1,lag=20) 

pacf(nm1,lag=20)

acf(nm2,lag=20)

pacf(nm2,lag=20)

plot(nm1)

plot(nm2)

    acf和pacf图

                                                                      图1        acf和pacf图

ts()和as.xts()plot图

                                                                    图2     两个函数产生的时间序列的plot图

可以看到plot图中,ts()产生的时间序列更为精细,而as.xts()的时间序列则略微粗糙。


经济分析同类文章:http://rsoftware.h.baike.com/category-407327.html

建立时间序列是ARIMA和ARCH模型的基础。



  • 11
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《时间序列分析及运用r语言》电子课本是一本非常有价值的书籍,它通过详细的讲解和大量的实例,为读者提供了关于时间序列分析方面的知识和技能,以及如何运用r语言进行时间序列分析。通过学习该书籍,读者能够掌握处理时间序列的基础知识,了解时间序列分析的较新的理论和方法,同时,还能够了解不同类型的时间序列,并通过r语言进行实际分析和模型构建。 该书籍主要分为两部分:时间序列基础和时间序列分析在r语言中的实际应用。时间序列基础涵盖了时间序列的概念和基础知识,如时序图、周期性和趋势等。在该部分,作者还介绍了不同类型的时间序列,如ARIMA模型、GARCH模型和指数平滑模型等。读者还可以学习如何使用r语言进行时间序列的可视化和模型构建。 在后一部分,作者通过实际案例,向读者展示了如何使用r语言处理实际的时间序列数据,如股票价格、GDP等。作者还介绍了一些在时间序列分析中常用的r包,如ggplot2、forecast和tseries等。在每一个案例中,作者为读者提供了详细的指导和代码,使得读者可以轻松地跟随实例进行实践操作。 总之,该书籍是一本非常实用和全面的时间序列分析教材,尤其适合那些想要学习时间序列分析的初学者和使用r语言进行时间序列分析的人员。它不仅包含了基础知识和理论,同时也提供了实际的数据集和代码示例,使得读者能够从实践中掌握实际应用技能。 ### 回答2: 《时间序列分析及运用r语言》电子课本涵盖了时间序列分析的基本理论和实践应用,以及R语言时间序列分析中的应用。该教材内容十分丰富,主要分为三个部分: 第一部分介绍了时间序列分析的基本概念和常用方法,如平稳性检验、时间序列模型建立和选择、指数平滑法和ARIMA模型等。并通过丰富的案例应用,深入阐述了这些方法的实际应用和解决问题的能力。 第二部分详细介绍了R语言时间序列分析中的应用,包括R语言基础知识、时间序列数据的读取和处理、常见时间序列分析函数R语言中的绘图函数等,通过大量的代码实现和案例应用,帮助读者熟练掌握R语言时间序列分析中的使用,进而提升分析水平。 第三部分结合实例,深入介绍了时间序列分析在金融、经济和其他领域中的应用,如股票价格预测、宏观经济数据分析等,并通过具体实例的讲解,让读者更好地掌握时间序列分析的实战能力。 通过学习该电子课本,读者不仅可以掌握时间序列分析的基本理论和实践应用,更可以深入了解R语言时间序列分析中的使用,并在实践中不断提升分析水平。值得一提的是,虽然该教材内容较为深入,但是编写风格简明易懂,适合广大读者使用。 ### 回答3: 《时间序列分析及运用R语言》电子课本是一本介绍时间序列分析和使用R语言进行分析的指导书。该书以理论和实践相结合的方式,深入浅出地介绍了时间序列的基本概念、数据探索、预处理、模型建立和应用等内容。 该课本第一章为读者介绍了时间序列的基本概念,包括时间序列的定义、性质及其产生过程。接下来的章节讲解了时间序列数据采集和预处理技术,如平稳性检验、季节性检验和白噪声检验等。同时,该课本还介绍了时间序列模型的建立和评估,包括ARIMA模型、GARCH模型、扩展卡尔曼滤波器等。 该书还利用R语言实现时间序列的分析,包括时间序列对象、数据组织、图形显示等基本的数据操作。同样,R语言实现了时间序列模型的研究和应用,如实践中的平稳性检验以及建立ARIMA模型的过程。 总的来说,《时间序列分析及运用R语言》电子课本的优点是系统性、实用性、通俗易懂;它为读者提供了时间序列分析的基本理论、数据预处理技术和模型建立方法,并且利用R语言实现了这些理论和方法的具体应用。不仅适用于时间序列专业领域的学生和研究者,也适用于需要分析时间序列数据的实际工作者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值