【发布时间】:2012-10-24 03:19:25
【问题描述】:
我昨天发布了这个问题,但收到了一些有价值的反馈,我的帖子还有一些不足之处:)。这是一个更新的尝试,希望更清晰:
我有一个 xts zoo 对象,想使用 R 确定过去 20 个周期内斜率系数的 t 统计量,然后测试该 t 值是否 > 2。
class(prices)
[1] "xts" "zoo"
tail(prices)
IWM SPY TLT
2012-10-24 81.20 141.02 121.48
2012-10-25 81.53 141.43 120.86
2012-10-26 81.14 141.35 122.64
2012-10-31 81.63 141.35 123.36
2012-11-01 82.49 142.83 122.35
2012-11-02 81.19 141.56 122.26
我不知道如何对每列与时间进行回归,因此我创建了一个带有索引的新列(天数)并执行了与索引的回归:
lastprices = last(prices,20)
prices.data.frame = as.data.frame(lastprices)
daynumber = index(prices.data.frame)
pdfd = data.frame(prices.data.frame, daynumber)
pdfd.lm = lm(pdfd$daynumber ~ ., data=pdfd)
tstat = coef(summary(pdfd.lm))
tstat[,"t value"]
(Intercept) IWM SPY TLT
4.5426630 -0.1788975 -1.3521969 -2.2362345
tstattest = ifelse(tstat[,"t value"]>2,1,0)
tstattest
(Intercept) IWM SPY TLT
1 0 0 0
我不禁认为这不是完成这项任务的最有效方式。有没有人知道如何在不创建 daynumber 列的情况下只对每列与时间进行回归?
谢谢 - 放轻松,我刚开始学习!
【问题讨论】:
-
您显然正在使用 zoo 或 xts 数据对象,因为这不是 lm 对象的典型输出。有些经常做 SO 的人会知道你在做什么,但是从听众中的非金融量化人员那里,如果你包含可以创建你正在使用的对象的代码,你会得到更快的回复,或者你可以产生
dput(head(data) )的输出 -
感谢 DWin。 dput(head(data) ) 的输出是: x[seq_len(n)] 中的错误:'environment' 类型的对象不是子集。代码开头如下:tickers = spl('TLT,GLD,IWM') data
-
此时我猜你正在使用一个不在 CRAN 上的包,因为我能找到的唯一一个带有
spl函数的包是 MCMCglmm,这看起来不像很适合这个问题。我已经放弃了,所以我没有寻找bt.prep。您确实需要提供所有包含您正在使用的功能的包的名称。 -
DWin - 我更新了完整的帖子。希望这更清楚。很想听听您的反馈。谢谢
标签: r time-series regression xts zoo