私はcorr()関数を使って加重熟考を計算しようとしています。最初の引数は、相関を計算したい 2 つの変数に対応する 2 つの列を持つ行列であり、2 番目の引数は観測値の各ペアに適用される重みのベクトルです。
ここに例があります。
> head(d)
Shade_tolerance htot
1 4.56 25.0
2 2.73 23.5
3 2.73 21.5
4 3.97 17.0
5 4.00 25.5
6 4.00 23.5
> head(poids)
[1] 5.200440e-07 5.200440e-07 1.445016e-06 1.445016e-06 1.445016e-06 1.445016e-06
> corr(d,poids)
[1] 0.1357279
それで私はそれを手に入れ、それを自分のマトリックスで使用することができましたが、因子のレベルに応じて異なる相関を計算したいと思います。tapply() 関数を使用しているかのようにしましょう。
> head(d2)
Shade_tolerance htot idp
1 4.56 25.0 19
2 2.73 23.5 19
3 2.73 21.5 19
4 3.97 17.0 18
5 4.00 25.5 18
6 4.00 23.5 18
だから私の夢は次のようなことをすることです:
tapply(as.matrix(d2[,c(1,2)]), d2$idp, corr)
ただし、tapply() でわかるように、最初の要素は行列ではなくベクトルである必要があります。
誰かが私に解決策を持っていますか?
どうもありがとうございました。
編集:私があなたに示したデータフレームの一部で、加重相関の重みが欠落していることに気付きました。したがって、因子のレベルに応じて行列と重みの両方を取得する方法がいくつかあります。
> head(df)
Shade_tolerance htot idp poids
1 4.56 25.0 19 5.200440e-07
2 2.73 23.5 19 5.200440e-07
3 2.73 21.5 19 1.445016e-06
4 3.97 17.0 19 1.445016e-06
5 4.00 25.5 19 1.445016e-06
6 4.00 23.5 19 1.445016e-06
明確であることを願っています。