直接谷歌一下,“时间序列分析 R语言”,就能得到你想要的结果
以下结果来自, 作者:詹鹏 2012-9-20 22:46:46
包
library(zoo) #时间格式预处理
library(xts) #同上
library(timeSeires) #同上
library(urca) #进行单位根检验
library(tseries) #arma模型
library(fUnitRoots) #进行单位根检验
library(FinTS) #调用其中的自回归检验函数
library(fGarch) #GARCH模型
library(nlme) #调用其中的gls函数
library(fArma) #进行拟合和检验
基本函数
数学函数
abs,sqrt:绝对值,平方根 log, log10, log2 , exp:对数与指数函数 sin,cos,tan,asin,acos,atan,atan2:三角函数 sinh,cosh,tanh,asinh,acosh,atanh:双曲函数
简单统计量
sum, mean, var, sd, min, max, range, median, IQR(四分位间距)等为统计量,sort,order,rank与排序有关,其它还有ave,fivenum,mad,quantile,stem等
1、数据保存在xlsx文件中,如下:
Date Return RV BPV
2002/07/01
-001106
0000118
0000109
2002/07/02
0006543
906E-05
873E-05
2002/07/03
0003455
551E-05
565E-05
2002/07/04
-001033
618E-05
602E-05
2002/07/05
0005269
749E-05
493E-05
2002/07/08
0006217
357E-05
385E-05
2002/07/09
-00017
504E-05
466E-05
2、在R中,首先利用xlsx包读取数据。
require(xlsx)
realData = readxlsx("F:/Synchros/Working/2014-002S3/data/szzzRealDataxlsx", 1, header=TRUE)
# class(realData) 显示为dataframe
# mode(realData) 显示为list
# 分开来看,class(realData[,1])显示为 factor
# class(realData[,2])显示为 numeric
3、试图利用xts包创建xts对象
realDataxts <- asxts(realData, descr='my new xts object')
# 错误于asPOSIXltcharacter(x, tz, ) :
# character string is not in a standard unambiguous format
似乎问题在于第一列的数据类型,但要如何处理呢?
有没有直接从EXCEL中读取数据,然后进行时间序列建模的好方法呢?求教。
参考资料:
这个帖子中,的样本数据集为
head(sample_matrix) Open High Low Close2007-01-02 5003978 5011778 4995041 50117782007-01-03 5023050 5042188 5023050 50397672007-01-04 5042096 5042096 5026414 50332362007-01-05 5037347 5037347 5022103 50334592007-01-06 5024433 5024433 5011121 50181122007-01-07 5013211 5021561 4999185 4999185
sample_matrix的第一列为numeric,可以直接用以构建xts对象。
用分片选取部分数据即可,试试这个codedata还是不行。提示:
错误于xts(realData[, -1], realData[, 2]) :
orderby requires an appropriate time-based object
我想还是软件无法识别第一列是关于时间的对象。。。。
多谢
楼主,你可以把数据贴一小部分用xlsx的格式上来不?
这个难度不是很大,但是要亲自处理一下数据,才知道 是啊 就是数据导入与对象构建的问题 主要是R学的不系统 自己处理不知道怎么折腾
这种基本问题 很多帖子或者教程都找不到答案。
附件已添加,劳烦帮忙,3Q
本帖最后由 jiangbeilu 于 2014-11-27 13:46 编辑
复制代码
xx和Date之间是有一个美元符号的"$",好像显示不出来。看不到的话,就把代码改一下。已经上传了好几次,都是只显示第一行library(xlsx),实在是没有办法。
options那句,是把读入的character向量,不让它转变成Factor型向量;
strptime函数可以按照一定格式来提取时间,你的时间读入,前面是有一个空格的,不知道你注意没有。
转化成时间之前,后面的代码我就不写了,希望你可以继续做下去。至少代码运行是没有问题的。
不是我不想贴代码,是因为代码上传每次都只显示第一行:library(xlsx)
注间strptime那里,“ %Y/%m/%d"里面有一个空格的。
——多谢帮忙。时间确实没问题了。但想参照下面的程序,将xx转换为xts对象,就失败了。
library(xts)
data(sample_matrix)
head(sample_matrix)
Open High Low Close
2007-01-02 5003978 5011778 4995041 5011778
2007-01-03 5023050 5042188 5023050 5039767
2007-01-04 5042096 5042096 5026414 5033236
2007-01-05 5037347 5037347 5022103 5033459
2007-01-06 5024433 5024433 5011121 5018112
2007-01-07 5013211 5021561 4999185 4999185
samplexts <- asxts(sample_matrix, descr='my new xts object')
class(samplexts)
[1] "xts" "zoo"
复制代码
延续您的代码,我把最后一行改为:
asxts(xx)
复制代码
错误信息为:
误于asPOSIXltcharacter(x, tz, ) :
character string is not in a standard unambiguous format
是哪儿出了问题呢?
你转化成矩阵之后,时间都没有一个变量名,很明显要出错的。确实。太不认真了,问题已经解决。十分感谢。不过没太明白您说的时间缺少变量名的意思,不是“Date”?我用的代码是:
xxxts = xts(xx[,c(2:4)], orderby = xx[,1])
我想知道x[,1]是什么?
因为你要用asxts转变成时间序列数据,首先系统要识别哪个是时间变量,你贴出来的数据,如果时间是第一列的话,那么没有变量名,怎么转化?
——就是我附件里面的数据,即:
Date Return RV BPV
date变量,没有转化为R可以识别的时间数据,你需要使用strptime这个函数,把时间进行一下整理,然后才能用asxts函数来处理。
你在没有处理之前,你所谓的date变量只是一系列字符串向量,没有时间意义的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)