0

3Dプロットされたジョイント密度関数のどこに特定の観測値が表示されるかをマークする必要があります-密度プロットにベクトル(x、y、f(x、y)+ something_small)を追加して、ポイントがどこにあるかを示すことを想定しています。trans3d()を使ってみましたが、うまくいきませんでした。

次に例を示します。

library(MASS)
Sigma <- matrix(c(12,1,1,12),2,2)
Sample <- mvrnorm(n=1000, rep(0, 2), Sigma)
empDen <- kde2d(Sample[,1],Sample[,2])
par(bg = "white")

x <- empDen$x
y <- empDen$y
z <- empDen$z
nrz <- nrow(z)
ncz <- ncol(z)
jet.colors <- colorRampPalette( c("lightblue", "blue") ) 
nbcol <- 100
color <- jet.colors(nbcol)
zfacet <- z[-1, -1] + z[-1, -ncz] + z[-nrz, -1] + z[-nrz, -ncz]
facetcol <- cut(zfacet, nbcol)
persp(x, y, z, col = color[facetcol], phi = 15, theta = -50, xlab="x", ylab="y", zlab="Empirical Joint Density", border=NA)

問題は、サンプル[1、]が同時密度のどこに現れるかをどのように示すか、つまりこれをプロットに追加するかです。

ヒントをありがとう!

4

1 に答える 1

1

これは機能します:

fmt=persp(x, y, z, col = color[facetcol], phi = 15, theta = -50, xlab="x", ylab="y", zlab="Empirical Joint Density", border=NA)
pt = Sample[1,]
points(trans3d(pt[1],pt[2],.001,fmt),pch=20, col="Red")
lines(trans3d(c(pt[1],pt[1]), c(pt[2],pt[2]), c(0,.001),fmt),col="Red",cex=2) 

ただし、各ポイントの値を手動で指定するのではなく、.001 を経験的な結合密度に基づく情報に置き換えるとよいでしょう。

于 2012-12-12T20:37:06.550 に答える