3次元散布図の代替


7

プレゼンテーションでは、3次元データを視覚化する必要があります。それらを「散布図のスタイル」で視覚化する必要があります。

最初のアイデアは

  • 三次元散布図
  • 散布図行列
  • 次元削減(PCA)とその後の2次元散布図

これらの概念に代わるものは何ですか?可能であれば、回答にRコードを含めてください。

編集:3次元のオブジェクトが40個あります。各観測は、1から6までの整数値を取ることができます。


3
回答は、データの構造とセマンティクスによって異なります。使用しているものに応じて、パネル化された散布図、または色で示された3番目の次元の散布図を使用できます。あなたのデータについてもう少し教えてください、そしておそらくサンプルを投稿できますか?
ステファンコラサ2017

1
私の分野では、最も多くの例がPCAプロットです。PCAを使用すると、1つの次元しか失われません。
HelloWorld 2017

1
平行座標プロットは、このスケール(3次元、40ポイント)で優れている場合がありparcoordMASSパッケージの関数を介して利用できます。次元の順序を変更すると、これらのプロットがより魅力的になる場合があることに注意してください。
G5W 2017

1
私が目にする主な問題は、1から6までの整数値しか持てないことです。これにより、ポイントがオーバーラップするため、データが何をしているかを確認することが非常に難しくなります。plot(jitter(y2) ~ jitter(x2), pch = 15)参照などのプロットされたポイントをジッターする可能性が最も高くなります:thomasleeper.com/Rcourse/Tutorials/jitter.html
Tavrock

回答:


3

主にリストに追加する必要があるのはcoplotsだと思いますが、それまでに進んでみましょう。2つの連続変数を視覚化するための開始点は、常に散布図である必要があります。3つ以上の変数を使用すると、自然に散布図行列に一般化されます(多くの変数がある場合は、それを複数の行列に分割する必要がある場合があります。参照:大きなN離散の散布図行列から情報を抽出する方法データ、&多くの変数?)。認識すべきことは、散布図行列は、高次元空間からの2D 周辺 投影のセットであることです。しかし、これらのマージンは、最も興味深く、有益ではないかもしれません。正確あなたが見たいと思うかもしれないマージンはトリッキーな質問です(cf.、射影追跡)。しかし、調べる最も簡単な次のセットは、変数を直交させるセット、つまり主成分分析から生じる変数の散布図です。これをデータ削減に使用し、最初の2つの主成分の散布図を見ることで言及しました。その背後にある考え方は理にかなっていますが、最初の2つだけを見る必要はありません。他のものも検討する価値があるかもしれません(たとえば、分散の小さいPCが「有用」であるPCAの例を参照)。それらの散布図行列も。PCAの出力のもう1つの可能性は、バイプロットを作成することです。、元の変数が散布図の上の主成分(矢印として)に関連付けられる方法をオーバーレイします。また、主成分の散布図行列をバイプロットと組み合わせることができます。

上記のすべては、私が述べたように、限界です。コプロットは条件付きですここでの私の答えの上部は、条件付きと限界を対比しています)。文字通り、「coplot」は「条件付きプロット」の混合語です。コプロットでは、他の次元のデータのスライス(またはサブセット)を取得し、それらのサブセットのデータを一連の散布図にプロットします。それらを読む方法を学ぶと、それらは高次元データのパターンを探索するためのオプションのセットへの素晴らしい追加になります。

これらのアイデアを説明するために、RandUデータセット(1970年代に人気があったアルゴリズムによって生成された疑似ランダムデータ)の例を次に示します。

data(randu)
windows()
  pairs(randu)

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

pca = princomp(randu)
attr(pca$scores, "dimnames")[[1]][1:400] = "o"
windows()
  par(mfrow=c(3,3), mar=rep(.5,4), oma=rep(2,4))
  for(i in 1:3){
    for(j in 1:3){
      if(i<j){
        plot(y=pca$scores[,i], x=pca$scores[,j], axes=FALSE); box()
      } else if(i==j){
        plot(density(pca$scores[,i]), axes=FALSE, main=""); box()
        text(0, .5, labels=colnames(pca$scores)[i])
      } else {
        biplot(pca, choices=c(j,i), main="", xaxp=c(-10,10,1), yaxp=c(-10,10,1))
      }
    }
  }

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

windows()
  coplot(y~x|z, randu)

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.