私は、各行 (2396) が 34 の連続する時間セグメントからなる個別の状況を表す2396x34 double matrix
という名前を付けました。y
また、34 の連続する時間セグメントの 1 つの状況を表すnumeric[34]
名前もあります。x
y
現在、次のx
ように各行間の相関を計算しています。
crs[,2] <- cor(t(y),x)
cor
ここで必要なのは、上記のステートメントの関数を加重相関に置き換えることです。重みベクトルxy.wt
は 34 要素の長さであるため、34 の連続する時間セグメントのそれぞれに異なる重みを割り当てることができます。
関数を見つけて、最初にデータを取得すれば、Weighted Covariance Matrix
関数と同じように機能するはずだと考えました。実際、関数が相関行列を返すように指定することもできます。残念ながら、2 つの変数 (と) を別々に指定できないため、同じ方法で使用できるようには見えません。cov.wt
scale
cor
x
y
速度をあまり犠牲にすることなく、説明した方法で加重相関を取得する方法を知っている人はいますか?
編集:おそらく、私が探しているのと同じ結果を得るためにy
、関数の前にいくつかの数学関数を適用できます。cor
たぶん、各要素に を掛けたらxy.wt/sum(xy.wt)
?
編集 #2パッケージに別の関数corr
が見つかりました。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