我希望对一些数据进行缩放和居中,我知道如何进行缩放:
(scale(data.test[,1],center=TRUE,scale=TRUE))
我有365个观察值(一年),并希望为20天的回溯期缩放和居中我的数据。例如,我想这么做:“规范化为20天的回溯期”意味着我只需使用前20天的值来缩放我的第一个值 01/01/2014 (dd/mm/yy)。因此,使用11/12/13到31/12/13之间的值。对于02/01/14,从12/12/13到01/01/14进行缩放,依此类推。
规范化数据将是: =(数据-所有数据平均值)/所有数据标准差(见我的代码)
但是,因为我想“20天回溯期”意味着我只需要查看最近20个值,所以它将是 =(数据-前20个数据的平均值)/前20个数据的标准差
我想写一个循环,也许?因为我对R非常陌生,所以不知道如何在R中编写循环,甚至不知道是否有更好的方法实现我想要的效果...如果你能帮我解决这个问题就太好了。
for(i in 20:nrow(data)){ mean<-mean(data[i-20:i,1],na.rm=T) sd<-sd(data[i-20:i,1],na.rm=T)*sqr((20)/21) data.scale<-c(data.scale,(data[i,1]-mean)/sd) }
???? 此外,我遇到了一个错误:"object 'data.scale' not found"。谢谢您的帮助,能否在您的帖子中编辑一些代码解释呢?如果我理解您在做什么,下次我也可以自己做了 :) 谢谢 - Coralie mairedata.scale <- c()
。 - Christophe D.