私は、各行 (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.wtscalecorxy
速度をあまり犠牲にすることなく、説明した方法で加重相関を取得する方法を知っている人はいますか?
編集:おそらく、私が探しているのと同じ結果を得るために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