标签: xts

哪个时间序列类在R中用于财务数据?

对于处理金融时间序列,如每日股票价格或日内数据,哪些时间序列包是首选?xts,普通动物园,或者时间系列还是别的什么?我同时使用xts和动物园,但有时候不确定只使用xts,或者有时候动物园有更轻的开销; 此外,我还记得Rmetrics对所有这些软件包的评论文章,声称xts甚至无法完成他们所做的一些测试.但我现在找不到报纸了.

r time-series zoo xts

8
推荐指数
1
解决办法
1077
查看次数

na.locf但不做尾随的NA

我有以下时间序列

> y<- xts(1:10, Sys.Date()+1:10)
> y[c(1,2,5,9,10)] <- NA
> y
           [,1]
2011-09-04   NA
2011-09-05   NA
2011-09-06    3
2011-09-07    4
2011-09-08   NA
2011-09-09    6
2011-09-10    7
2011-09-11    8
2011-09-12   NA
2011-09-13   NA
Run Code Online (Sandbox Code Playgroud)

一个直的na.locf给我这个:

> na.locf(y)
           [,1]
2011-09-04   NA
2011-09-05   NA
2011-09-06    3
2011-09-07    4
2011-09-08    4
2011-09-09    6
2011-09-10    7
2011-09-11    8
2011-09-12    8
2011-09-13    8
Run Code Online (Sandbox Code Playgroud)

我怎么做到这一点?

           [,1]
2011-09-04   NA
2011-09-05   NA
2011-09-06    3
2011-09-07    4
2011-09-08    4
2011-09-09    6
2011-09-10    7
2011-09-11    8
2011-09-12    NA
2011-09-13    NA
Run Code Online (Sandbox Code Playgroud)

我不希望最后一次观察结果除了最后一个非缺失值之外,即不会替换尾随的NA.非常感谢你的帮助!

r time-series zoo xts

8
推荐指数
1
解决办法
1805
查看次数

是否有解决R 2.15.2中do.call(cbind.xts,...)性能降低的问题?

我期望cbind.xtsdo.call(cbind.xts)以相似的经过时间执行.R2.11,R2.14也是如此.

对于R2.15.2和xts 0.8-8,do.call(cbind.xts,...)变体执行速度非常慢,这有效地破坏了我以前的代码.

正如Josh Ulrich在下面的评论中指出的那样,xts软件包维护者已经意识到了这个问题.与此同时,有一个方便的工作吗?

可重复的例子:

library(xts)

secs <- function (rows, from = as.character(Sys.time()), cols = 1, by = 1) 
{
    deltas <- seq(from = 0, by = by, length.out = rows)
    nacol <- matrix(data = NA, ncol = cols, nrow = rows)
    xts(x = nacol, order.by = strptime(from, format = "%Y-%m-%d %X") + 
        deltas)
}

n <- 20
d1 <- secs(rows=n*100,cols=n)
d2 <- secs(rows=n*100,cols=n)

system.time(cbind.xts(d1,d2))
Run Code Online (Sandbox Code Playgroud)

system.time(do.call(cbind.xts, list(d1,d2)))
Run Code Online (Sandbox Code Playgroud)

r xts

8
推荐指数
1
解决办法
1229
查看次数

缺失值时使用rollmean(NA)

我有一个数据集,里面有几个NA.我采取滚动平均值,并期望在没有NA窗口,滚动平均值应该产生一个号码,而不要NA,但是,rollmeanrzoo似乎并没有做到这一点.例:

require(zoo)
z = zoo(cbind(a=0:10, b=c(NA,10:1), c=sample(1:11,11)), 1:11) 
rollmeanr(z, k=3, fill=NA)
    a  b        c
1  NA NA       NA
2  NA NA       NA
3   1 NA 3.333333
4   2 NA 4.666667
5   3 NA 4.000000
6   4 NA 6.333333
7   5 NA 7.000000
8   6 NA 9.333333
9   7 NA 8.333333
10  8 NA 8.666667
11  9 NA 5.666667

rollapply(z, width=3, FUN=mean, by=1, by.column=TRUE, fill=NA, align="right")
    a  b        c
1  NA …
Run Code Online (Sandbox Code Playgroud)

r zoo xts

8
推荐指数
2
解决办法
9503
查看次数

提取xts对象的数值

我想提取xts对象的数值.我们来看一个例子

data <- new.env()
starting.date <- as.Date("2006-01-01")
nlookback <- 20
getSymbols("UBS", env = data, src = "yahoo", from = starting.date)
Reg.curve <- rollapply(Cl(data$UBS), nlookback, mean, align="right")
Run Code Online (Sandbox Code Playgroud)

Reg.cuve仍然是一个XTS对象,但实际上我在行走机构只关心.如何修改Reg.curve以获得数字向量?

r xts

8
推荐指数
1
解决办法
9353
查看次数

我在R中使用了错误的数据类型和predict.nnet()

我对R的不了解导致我停止工作并寻求你的帮助.我正在寻找从一些时间序列数据构建神经网络,然后使用单独的数据和训练的神经网络返回的模型构建预测.

我创建了一个xts包含因变量nxtCl(一天的远期收盘价格)和自变量(一组相应的价格和技术指标).

我分为xts两个,一组是训练数据,另一组是测试/预测,分别是miData.trainmiData.test.随后我将这两个xts改为缩放数据帧.

miData.train <- scale(as.data.frame(miData.train))
miDate.test <- scale(as.data.frame(miData.test))
Run Code Online (Sandbox Code Playgroud)

使用该包nnet我可以从训练数据构建一个神经网络:

nn <- nnet(nxtCl ~ .,data=miData.train,linout=T,size=10,decay=0.001,maxit=10000)
Run Code Online (Sandbox Code Playgroud)

str()此返回的公式对象的输出是:

> str(nn)
List of 18
$ n            : num [1:3] 11 10 1
$ nunits       : int 23
$ nconn        : num [1:24] 0 0 0 0 0 0 0 0 0 0 ...
$ conn         : num [1:131] 0 1 2 3 4 5 6 7 8 9 …
Run Code Online (Sandbox Code Playgroud)

r machine-learning predict neural-network xts

7
推荐指数
0
解决办法
1882
查看次数

xts error - order.by需要适当的基于时间的对象

我无法解决为什么在简单创建xts对象时出错

xts(rep(0, NROW(TICK.NYSE)), order.by = index(TICK.NYSE))
Error in xts(rep(0, NROW(TICK.NYSE)), order.by = index(TICK.NYSE)) : 
  order.by requires an appropriate time-based object
Run Code Online (Sandbox Code Playgroud)

14天前,当我上次使用相同的代码时(这时,唯一的区别是TICK.NYSE长度增长,因为自那时起添加了数据).

更多细节如下:

> Sys.getenv("TZ")
[1] "EST"
> tail(xts(rep(0, NROW(TICK.NYSE)), order.by = index(TICK.NYSE)))
Error in xts(rep(0, NROW(TICK.NYSE)), order.by = index(TICK.NYSE)) : 
  order.by requires an appropriate time-based object
> class(index(TICK.NYSE["T09:30/T09:31"]))
[1] "POSIXct"
> tail(xts(rep(0, NROW(tail(TICK.NYSE))), order.by = index(tail(TICK.NYSE))))
Error in xts(rep(0, NROW(tail(TICK.NYSE))), order.by = index(tail(TICK.NYSE))) : 
  order.by requires an appropriate time-based object
> tail(TICK.NYSE)
                    TICK-NYSE.Open TICK-NYSE.High TICK-NYSE.Low TICK-NYSE.Close
2012-03-15 14:54:00           -278            -89 …
Run Code Online (Sandbox Code Playgroud)

r xts

7
推荐指数
1
解决办法
4008
查看次数

滚动回归多列

我有一个问题是找到一种最有效的方法来计算具有多列的xts对象的滚动线性回归.我已经在stackoverflow上搜索并阅读了之前的几个问题.

这个问题和答案很接近,但在我看来还不够,因为我想计算所有回归中因变量不变的多元回归.我试图用随机数据重现一个例子:

require(xts)
require(RcppArmadillo)  # Load libraries

data <- matrix(sample(1:10000, 1500), 1500, 5, byrow = TRUE)  # Random data
data[1000:1500, 2] <- NA  # insert NAs to make it more similar to true data
data <- xts(data, order.by = as.Date(1:1500, origin = "2000-01-01"))

NR <- nrow(data)  # number of observations
NC <- ncol(data)  # number of factors
obs <- 30  # required number of observations for rolling regression analysis
info.names <- c("res", "coef")

info <- array(NA, dim = …
Run Code Online (Sandbox Code Playgroud)

r apply linear-regression xts rolling-computation

7
推荐指数
1
解决办法
3857
查看次数

xts :: period.apply和cumprod

我正在尝试计算xts对象子集的累积乘积.这是一个我想要的例子,以及使用period.apply或其他一些基于c ++的快速函数可以更快/更优雅的问题吗?

# install.packages("qmao", repos="http://R-Forge.R-project.org")
require(qmao) # for do.call.rbind()

# I need something like cumprod over xts but by endpoints (subsets of xts)
test <- xts(rep(0.01, length(as.Date(13514:13523, origin="1970-01-01"))), as.Date(13514:13523, origin="1970-01-01"))
ep <- c(0, 5, NROW(test))
# This does not do the trick
period.prod(test, INDEX=ep)
# So, try the obvious, but it does not do the trick
period.apply(test, INDEX=ep, FUN=function(x) cumprod(1 + x))

# Well, write your own
# Hm, there is no split.xts that takes ep (endpoints) as parameter...
# …
Run Code Online (Sandbox Code Playgroud)

finance r xts

7
推荐指数
1
解决办法
1369
查看次数

将时间戳(开始,结束)转换为时间序列数据.align.time()和colnames的错误

我是R的新手,但是在参加了一个介绍课程并稍微玩了一下后,我希望它可以1)更优雅地解决我的建模目标(与Excel相比,这是我的备份计划)和2)是一个有用的技能可以带走这个项目.

任务/目标:

我正在尝试使用驾驶日记数据来模拟和模拟电动汽车的潜在能源和温室气体排放.特别:

  1. 我有驱动日记数据(开始和结束时间戳,加上数千个驱动程序的其他数据 - 下面的基本示例),我想将其翻译成:
  2. 24小时时间序列数据,这样,对于24小时的每一分钟,我确切地知道谁在驾驶车辆,以及它属于哪个"行程"(对于该驾驶员而言).我的问题集中在这个问题上.

该类型的输出,我想: 注:该输出与下面提供的样本数据.我用某些理论旅行的某一天的前十分钟作为例子

在此输入图像描述

对于这个问题不是必不可少的,但知道可能有用:我将使用上面的输出来交叉引用其他特定于驾驶员的数据,以根据与该行程相关的事物计算汽油(或电力)的逐分钟消耗,如停车位置或行程距离.我想在R中做这个,但在进入这一步之前必须先弄清楚上面的问题.

我到目前为止的解决方案基于:

问题:

示例简化数据:

a <- c("A","A","A","B","B","B","C","C","C")
b <- c(1, 2, 3, 1, 2, 3, 1, 2, 3)
c <- as.POSIXct(c(0.29167, 0.59375, 0.83333, 0.45833, 0.55347, 0.27083, 0.34375, 0.39236, 0.35417)*24*3600 + as.POSIXct("2013-1-1 00:00") )
d <- as.POSIXct(c(0.334027778, 0.614583333, 0.875, 0.461805556, 0.563888889, 0.295138889, 0.375, 0.503472222, 0.364583333)*24*3600 + as.POSIXct("2013-1-1 00:00"))
e <- c(2, 8, 2, 5, 5, 2, 5, 5, 2)
f <- as.POSIXct(c(0, 0.875, 0, 0.479166666666667, 0.580555555555556, 0.489583333333333, 0.430555555555556, …
Run Code Online (Sandbox Code Playgroud)

time r time-series xts

7
推荐指数
1
解决办法
1158
查看次数