メーリング リストに何度か投稿されている cor.prob() 関数を使用して、相関行列 (下の対角線) と p 値 (上の対角線) を取得しています。
cor.prob <- function (X, dfr = nrow(X) - 2) {
R <- cor(X)
above <- row(R) < col(R)
r2 <- R[above]^2
Fstat <- r2 * dfr/(1 - r2)
R[above] <- 1 - pf(Fstat, 1, dfr)
R[row(R) == col(R)] <- NA
R
}
d <- data.frame(x=1:5, y=c(10,16,8,60,80), z=c(10,9,12,2,1))
cor.prob(d)
> cor.prob(d)
x y z
x NA 0.04856042 0.107654038
y 0.8807155 NA 0.003523594
z -0.7953560 -0.97945703 NA
上記の相関行列 (下半分に相関、上半分に p 値) を 4 列の行列 (2 つのインデックス、相関、および p 値) にまとめるにはどうすればよいでしょうか? 例えば:
i j cor pval
x y .88 .048
x z -.79 .107
y z -.97 0.0035
this のような前の質問への回答を見てきましたが、p 値と相関のために別々の列を持つ 4 列の行列ではなく、3 列の行列のみが返されます。
どんな助けでも大歓迎です!