2009-09-10 5 views
9

2つの独立した変数を持つ回帰の非線形の複数部分回帰結果を表すいい表面があります。回帰予測値を素敵な3Dサーフェスとしてプロットし、実際の値をサーフェスの周りにバウンドするポイントとして表示したいと思います。これは、回帰直線をプロットし、実線を線の周りの点として示す3D版です。私は格子でこれを行う方法を理解できません。私はRで別のグラフ作成ライブラリを使用してうれしく思いますが、3Dプロットを行う他のグラフ描画ライブラリについてはわかりません。格子内に格子をプロットするR

は、ここで私が何をしたいの簡易版です。

library(lattice) 
#set up some simplified data 
x <- seq(-.8, .8, .1) 
y <- seq(-.8, .8, .1) 
myGrid <- data.frame(expand.grid(x,y)) 
colnames(myGrid) <- c("x","y") 
myGrid$z <- myGrid$x + myGrid$y 
noise <- rnorm(length(myGrid$z),.3,.2) 
myGrid$z2 <- myGrid$x + myGrid$y + noise 

zは私の滑らかな表面で、z2は、表面上に主に少し私のうる​​さいポイントです。だから、表面は次のようになります。

wireframe(myGrid$z ~ myGrid$x * myGrid$y, xlab="X", ylab="Y", zlab="Z") 

alt text http://www.cerebralmastication.com/wp-content/uploads/2009/09/wireframe.png

との点の雲は、次のようになります

cloud(myGrid$z2 ~ myGrid$x * myGrid$y, xlab="X", ylab="Y", zlab="Z") 

alt text http://www.cerebralmastication.com/wp-content/uploads/2009/09/cloud.png

は一つにこれらの両方を取得することが可能です格子パネル?

答えて

0

メモリが使用されている場合、rcmdrはすでにrglを使用してこれを行います。しかし、それはRcmdrが適合するモデルに限定されるかもしれません。

一方、スクロール、ズーム、格子ができない...(速い!)スクロールができます。

+0

「私はゲームをプレイしていない」ので、私は私のLinuxボックスのグラフィックスカードにskimpedが、私は思いますそうでなければ私が決めたならば、RGLは確かに有益でしょう! – hatmatrix

+0

私もシンプルに(「ゲームはありません」)、OpenGLはしばしば本当にシンプルなハードウェアで動作します。私はあなたに2dのサポートが必要であることを思い出すので、それを撃つ。 –

6

私はrglが大好きです!しかし、格子内の3Dプロットも便利です。格子関数の 'panel'引数に渡すことができる独自の関数を書くことができます。たとえば、あなたが呼び出す

mypanel <- function(x,y,z,...) { 
    panel.wireframe(x,y,z,...) 
    panel.cloud(x,y,z,...) 
} 
wireframe(myGrid$z ~ myGrid$x * myGrid$y, xlab="X", ylab="Y", zlab="Z", 
      panel=mypanel) 

最後の関数は、ワイヤフレーム()、またはクラウドを()ことができます。パネル関数内でpanel.wireframe()とpanel.cloud()が呼び出されるため、結果は同じになります。

編集:それを指摘してくれてありがとう、アーロン、その後、おそらくあなたは別の変数としてZ2を渡すことができます。

mypanel <- function(x,y,z,z2,...) { 
    panel.wireframe(x,y,z,...) 
    panel.cloud(x,y,z2,...) 
} 
wireframe(z ~ x * y, data=myGrid, xlab="X", ylab="Y", zlab="Z", 
      panel=mypanel, z2=myGrid$z2) 
+2

ニース!しかし、クラウドに 'z'の代わりに' z2'の点を使うには、 'mypanel'関数で' panel.cloud(x、y、myGrid $ z2) 'を使います。 – Aaron

+0

ああ、どのように雲を描画するが、異なるxとyのですか? – Rekin

+0

おそらく、1)x、y、zの別のセットをmyGridにrbind()し、2)myGridにカテゴリ値を追加し、3)グループ変数にこのカテゴリ変数を渡します。 – hatmatrix

関連する問題