我有一個名爲y
的2396x34 double matrix
,其中每行(2396)表示由34個連續時間段組成的獨立情況。加權皮爾森的相關性?
我也有一個numeric[34]
名爲x
,代表了34個連續時間段的單一情況。
目前,我計算每一行之間的相關性在y
和x
這樣的:
crs[,2] <- cor(t(y),x)
我現在需要的是一個加權相關更換cor
功能在上面的語句。權重矢量xy.wt
的長度爲34個元素,因此可以爲34個連續時間段中的每一個分配不同的權重。
我發現Weighted Covariance Matrix
函數cov.wt
,並認爲如果我第一個scale
的數據它應該像cor
函數一樣工作。實際上你可以指定函數返回一個相關矩陣。不幸的是,我似乎不能以相同的方式使用它,因爲我無法單獨提供我的兩個變量(x
和y
)。
有沒有人知道我可以用我描述的方式獲得加權相關而不犧牲很多速度?
編輯:也許有些數學函數可以在cor
功能之前,爲了得到我正在尋找同樣的結果應用到y
。也許如果我乘以xy.wt/sum(xy.wt)
每個元素?
編輯#2我在boot
包中發現了另一個函數corr
。
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
非常好!那樣做了。再次感謝!我認爲使用R編寫的函數會比內置函數慢很多,但我猜不是嗎? – 2012-02-27 09:15:03