我正在尝试使用从R-bloggers获取的代码进行单变量分发,以进行kmeans聚类。作者使用的示例是使用getSymbols('SPY')
获得的S& P 500。我正在尝试将代码应用于我自己的数据。我需要弄清楚:
如何修改代码以便正确重新运行我的数据,因为创建者的某些输入需要改变,我认为。
我需要知道为什么它只会滞后数据1天(见下文),因为我的数据是按月计算的,需要根据我的数据改变滞后。
我看到代码所做的是将数据滞后一个周期。作者的代码每天使用S& P数据,但我的数据是每月一次。我遇到的问题是,通过使用作者的代码,它使我的数据滞后一天而不是一个月。我一直在努力更好地理解代码,但我无法看到修改代码的位置,因此它会滞后1个月。
我的数据:
Composite
2006-07-31 -3.35
2006-08-31 3.46
2006-09-30 3.80
2006-10-31 4.24
2006-11-30 2.97
2006-12-31 -0.33
以下是代码,我稍作修改以省略nas:
###################if you want uniform distribution - uncomment the following lines##############
rez=na.omit(apply(
(nasa),2,function(x){
y=(xts(x,order.by=as.POSIXct(as.Date(attr(x,'names')))))
print(xts(rollapply(y,20,function(z){which(order(z)==20)/20},align='right')))
}))
nasa=xts(rez,order.by=as.POSIXct(tail(index(nasa),-19)))
colnames(nasa)=c('Percent of High')
原始代码:
https://github.com/kafka399/Rproject/blob/master/kmeans/kmeans.R