对于处理金融时间序列,如每日股票价格或日内数据,哪些时间序列包是首选?xts,普通动物园,或者时间系列还是别的什么?我同时使用xts和动物园,但有时候不确定只使用xts,或者有时候动物园有更轻的开销; 此外,我还记得Rmetrics对所有这些软件包的评论文章,声称xts甚至无法完成他们所做的一些测试.但我现在找不到报纸了.
我有以下时间序列
> 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.非常感谢你的帮助!
我期望cbind.xts并do.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) 我有一个数据集,里面有几个NA.我采取滚动平均值,并期望在没有NA窗口,滚动平均值应该产生一个号码,而不要NA,但是,rollmeanr在zoo似乎并没有做到这一点.例:
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) 我想提取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包含因变量nxtCl(一天的远期收盘价格)和自变量(一组相应的价格和技术指标).
我分为xts两个,一组是训练数据,另一组是测试/预测,分别是miData.train和miData.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) 我无法解决为什么在简单创建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) 我有一个问题是找到一种最有效的方法来计算具有多列的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) 我正在尝试计算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) 我是R的新手,但是在参加了一个介绍课程并稍微玩了一下后,我希望它可以1)更优雅地解决我的建模目标(与Excel相比,这是我的备份计划)和2)是一个有用的技能可以带走这个项目.
任务/目标:
我正在尝试使用驾驶日记数据来模拟和模拟电动汽车的潜在能源和温室气体排放.特别:
该类型的输出,我想: 注:该输出不与下面提供的样本数据.我用某些理论旅行的某一天的前十分钟作为例子

对于这个问题不是必不可少的,但知道可能有用:我将使用上面的输出来交叉引用其他特定于驾驶员的数据,以根据与该行程相关的事物计算汽油(或电力)的逐分钟消耗,如停车位置或行程距离.我想在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)