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
のように機能するはずです。実際には、相関行列も返す関数を指定することができます。残念ながら、2つの変数(x
とy
)を別々に供給することができないため、同じ方法で使用できるようには見えません。
多くのスピードを犠牲にすることなく記述した方法で加重相関を得る方法は誰にも分かりますか?
編集:おそらくいくつかの数学関数は、私が探している同じ結果を得るために前cor
関数にy
にも適用することができる。たぶん私は各要素をxy.wt/sum(xy.wt)
で掛けていますか?
編集#2boot
パッケージに別の機能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.
これは私が必要とするものではありませんが、それはより近くです。あなたが戻って相関の定義に行くことができます
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で書かれた関数は、Rに組み込まれた関数よりもかなり遅くなると思っていましたが、そうは思いませんか? –