我有一个2396x34 double matrix
命名y
,其中每一行(2396)代表一个由 34 个连续时间段组成的单独情况。
我还有一个代表 34 个连续时间段的单一情况的numeric[34]
名称。x
目前我正在计算每一行之间的相关性y
,x
如下所示:
crs[,2] <- cor(t(y),x)
我现在需要的是用加权相关替换cor
上述语句中的函数。权重向量有 34 个元素长,因此可以为 34 个连续时间段中的每一个分配不同的权重。xy.wt
我找到了这个Weighted Covariance Matrix
函数cov.wt
,并认为如果我首先scale
获取数据,它应该像cor
函数一样工作。事实上,您也可以指定函数返回一个相关矩阵。不幸的是,我似乎不能以相同的方式使用它,因为我无法分别提供我的两个变量 (x
和y
)。
有谁知道我可以在不牺牲太多速度的情况下以我描述的方式获得加权相关性的方法?
编辑:也许可以y
在函数之前应用一些数学函数cor
,以获得我正在寻找的相同结果。也许如果我将每个元素乘以xy.wt/sum(xy.wt)
?
编辑#2corr
我在boot
包中发现了另一个函数。
corr(d, w = rep(1, nrow(d))/nrow(d))
d
A matrix with two columns corresponding to the two variables whose correlation we wish to calculate.
w
A vector of weights to be applied to each pair of observations. The default is equal weights for each pair. Normalization takes place within the function so sum(w) need not equal 1.
这也不是我需要的,但它更接近。
编辑#3 这是一些生成我正在使用的数据类型的代码:
x<-cumsum(rnorm(34))
y<- t(sapply(1:2396,function(u) cumsum(rnorm(34))))
xy.wt<-1/(34:1)
crs<-cor(t(y),x) #this works but I want to use xy.wt as weight