90

同じタイプの92セットのデータがあります。

任意の 2 つの組み合わせの相関行列を作成したいと考えています。

つまり、 の行列が必要です92x92

要素 ( cicj) が と の間の相関関係になるようにcicjます。

それ、どうやったら出来るの?

4

5 に答える 5

106

例、

 d <- data.frame(x1=rnorm(10),
                 x2=rnorm(10),
                 x3=rnorm(10))
cor(d) # get correlations (returns matrix)
于 2012-05-21T07:39:39.690 に答える
76

「corrplot」パッケージを使用できます。

d <- data.frame(x1=rnorm(10),
                 x2=rnorm(10),
                 x3=rnorm(10))
M <- cor(d) # get correlations

library('corrplot') #package corrplot
corrplot(M, method = "circle") #plot matrix

ここに画像の説明を入力

詳細はこちら: http://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html

于 2014-07-31T18:48:56.073 に答える
18

cor関数は、相関の計算に行列の列を使用します。したがって、行数は行列xと行列yの間で同じでなければなりません。元。:

set.seed(1)
x <- matrix(rnorm(20), nrow=5, ncol=4)
y <- matrix(rnorm(15), nrow=5, ncol=3)
COR <- cor(x,y)
COR
image(x=seq(dim(x)[2]), y=seq(dim(y)[2]), z=COR, xlab="x column", ylab="y column")
text(expand.grid(x=seq(dim(x)[2]), y=seq(dim(y)[2])), labels=round(c(COR),2))

ここに画像の説明を入力してください

編集:

単一の行列で計算された相関行列のカスタムの行と列のラベルの例を次に示します。

png("corplot.png", width=5, height=5, units="in", res=200)
op <- par(mar=c(6,6,1,1), ps=10)
COR <- cor(iris[,1:4])
image(x=seq(nrow(COR)), y=seq(ncol(COR)), z=cor(iris[,1:4]), axes=F, xlab="", ylab="")
text(expand.grid(x=seq(dim(COR)[1]), y=seq(dim(COR)[2])), labels=round(c(COR),2))
box()
axis(1, at=seq(nrow(COR)), labels = rownames(COR), las=2)
axis(2, at=seq(ncol(COR)), labels = colnames(COR), las=1)
par(op)
dev.off()

ここに画像の説明を入力してください

于 2012-05-21T07:33:50.523 に答える
2

ここでこれを達成する他の方法があります: (相関行列をグラフにプロット)、ボックス内の相関を使用したバージョンが気に入っています。これらのインデックス番号だけでなく、x 列と y 列に変数名を追加する方法はありますか? 私にとって、それはこれを完璧な解決策にします。ありがとう!

編集: [Marc in the box] の投稿にコメントしようとしましたが、自分が何をしているのかはっきりとわかりません。しかし、私は自分自身でこの質問に答えることができました。

d が行列 (または元のデータ フレーム) で、列名が必要な場合、次のように動作します。

axis(1, 1:dim(d)[2], colnames(d), las=2)
axis(2, 1:dim(d)[2], colnames(d), las=2)

las=0 は名前を通常の位置に戻します。私の名前は長いので、las=2 を使用して軸に対して垂直にしました。

edit2: image() 関数がグリッドに数値を表示しないようにするには (そうしないと、変数ラベルが重なってしまいます)、xaxt='n' を追加します。例:

image(x=seq(dim(x)[2]), y=seq(dim(y)[2]), z=COR, col=rev(heat.colors(20)), xlab="x column", ylab="y column", xaxt='n')
于 2013-02-12T20:07:45.163 に答える