在R中移动SD-需要语法 数据
您可以使用在R中移动SD-需要语法 数据,r,R,您可以使用嵌入和应用,例如 data<-read.csv("http://ichart.finance.yahoo.com/table.csv?s=^NSEI&a=08&b=16&c=2006&d=08&e=26&f=2012&g=d&ignore=.csv") tmp <- data[order(data$Date), ] data<-tmp data'$'MovAvg60=filter(da
嵌入和应用,例如
data<-read.csv("http://ichart.finance.yahoo.com/table.csv?s=^NSEI&a=08&b=16&c=2006&d=08&e=26&f=2012&g=d&ignore=.csv")
tmp <- data[order(data$Date), ]
data<-tmp
data'$'MovAvg60=filter(data[,5],rep(1/60,60),sides=1)
##创建网格(每行包含60个条目)
e您可以使用zoo
包中的rollapply
将函数应用于移动窗口
## create grid (each row contains 60 entries)
e <- embed(data[,5], 60)
## calculate sd for each row
apply(e, MARGIN=1, FUN=sd)
# [1] 126.5202 125.5809 127.6456 128.2805 129.2382 129.8014 ...
可以使用以下公式():
如中所述,正如我在他链接的帖子中所提到的,TTR::runSD
将实现这一点(它可能比rollappy
更快)。我还建议您花一些时间学习其中一个财务工作流程,而不是重新发明轮子
# SD = sqrt(EX^2-(EX)^2)
data$MovSD60=sqrt(filter(data[,5]^2,rep(1/60,60),sides=1)-data$MovAvg60^2)
获取符号(“^NSEI”,from=“2006-08-16”,to=“2012-08-26”)
[1] “NSEI”
>NSEI$StDev60尾部(NSEI)
NSEI.打开NSEI.高NSEI.低NSEI.关闭NSEI.音量NSEI.调整后的StDev60
2012-08-17 5368.60 5399.95 5341.70 5366.30 0 5366.30 138.1689
2012-08-20 5366.30 5366.30 5366.30 5366.30 0 5366.30 138.1317
2012-08-21 5368.70 5425.15 5368.70 5421.00 0 5421.00 139.2909
2012-08-22 5395.75 5433.35 5394.80 5412.85 0 5412.85 138.7741
2012-08-23 5426.15 5448.60 5393.85 5415.35 0 5415.35 137.0164
2012-08-24 5392.60 5399.65 5371.00 5386.70 0 5386.70 130.5664
zoo
软件包中的rollapply
功能也可能对您有用。另外,请参见TTR
中的runSD
。请参阅。可能重复Hi,我尝试了上述rollapply语法,它导致SD列在第30列填充,即使移动平均线从第60列开始。@RoshanD'Almeida请参阅更新。我添加了参数align=“right”
。Du对此,结果向量以59NA
s开始。
# SD = sqrt(EX^2-(EX)^2)
data$MovSD60=sqrt(filter(data[,5]^2,rep(1/60,60),sides=1)-data$MovAvg60^2)
> getSymbols("^NSEI", from="2006-08-16", to="2012-08-26")
[1] "NSEI"
> NSEI$StDev60 <- runSD(Cl(NSEI), 60)
> tail(NSEI)
NSEI.Open NSEI.High NSEI.Low NSEI.Close NSEI.Volume NSEI.Adjusted StDev60
2012-08-17 5368.60 5399.95 5341.70 5366.30 0 5366.30 138.1689
2012-08-20 5366.30 5366.30 5366.30 5366.30 0 5366.30 138.1317
2012-08-21 5368.70 5425.15 5368.70 5421.00 0 5421.00 139.2909
2012-08-22 5395.75 5433.35 5394.80 5412.85 0 5412.85 138.7741
2012-08-23 5426.15 5448.60 5393.85 5415.35 0 5415.35 137.0164
2012-08-24 5392.60 5399.65 5371.00 5386.70 0 5386.70 130.5664