在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对此,结果向量以59
NA
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