R言語のouter関数を使うと、3次元plotが簡単にできるので、その方法について紹介。まずはouter関数の呼び出し方は以下の通りである。
outer(X, Y, FUN="*", ...)
XとYの組み合わせに対してFUNを適用するようになっている。関数の返り値はX、Yがベクトル(ベクトル以外でも利用できるが、ベクトルで十分な場合が多い)であれば、2次元で表されるマトリックスになる。
> x <- 1:3 > y <- 1:5 > outer(x,y) # FUNを省略すると掛け算になる [,1] [,2] [,3] [,4] [,5] [1,] 1 2 3 4 5 [2,] 2 4 6 8 10 [3,] 3 6 9 12 15
これを用いると、(x,y)であらわされる座標に対しFUNを適用することでz=FUN(x,y)が得られ、x,y,zで3次元のグラフが描けるということが理解していただけると思う。試しに2次元標準正規分布を描いてみることにしよう。2次元分布生成のコードは舟尾暢男氏のR-Tipsにあるものを参考にさせていただいた。
x <- seq(-3,3,length=100) y <- x rho <- 0.9 gaussDist <- function(x,y,rho) { 1/(2*pi*sqrt(1-rho^2))*exp(-(x^2-2*rho*x*y+y^2) / (2*(1-rho^2))) } z <- outer(x,y,gaussDist,rho) filled.contour(x,y,z)
最後のfilled.contourによって、連続的な色で表現される等高線を描くようにしている。グラデーションを用いず、線だけでよいという場合にはcontour関数でよい。contour関数では、標高を表す数値はグラフの外でなく、よくある地図のように、数値が内部に書かれるようになる。
図を見れば明らかであるが、相関が強いため、確率密度の高い箇所が直線状に現れている。無相関になるにつれて、確率密度の等高線は直線から円に変化する。
0 件のコメント:
コメントを投稿