R-分别绘制3d中的两个二元法线及其等高线

R-分别绘制3d中的两个二元法线及其等高线,r,plot,normal-distribution,R,Plot,Normal Distribution,我一直在玩MASS包,可以简单地使用image和par(new=TRUE)绘制两个二元正态分布,例如: # lets first simulate a bivariate normal sample library(MASS) bivn <- mvrnorm(1000, mu = c(0, 0), Sigma = matrix(c(1, .5, .5, 1), 2)) bivn2 <- mvrnorm(1000, mu = c(0, 0), Sigma = matrix(c(1.5,

我一直在玩MASS包,可以简单地使用image和par(new=TRUE)绘制两个二元正态分布,例如:

# lets first simulate a bivariate normal sample
library(MASS)
bivn <- mvrnorm(1000, mu = c(0, 0), Sigma = matrix(c(1, .5, .5, 1), 2))
bivn2 <- mvrnorm(1000, mu = c(0, 0), Sigma = matrix(c(1.5, 1.5, 1.5, 1.5), 2))

# now we do a kernel density estimate
bivn.kde <- kde2d(bivn[,1], bivn[,2], n = 50)
bivn.kde2 <- kde2d(bivn2[,1], bivn[,2], n = 50)

# fancy perspective
persp(bivn.kde, phi = 45, theta = 30, shade = .1, border = NA)
par(new=TRUE)
persp(bivn.kde2, phi = 45, theta = 30, shade = .1, border = NA)

这是实现我想要的最好的方法还是我只是在给自己制造麻烦?欢迎提出任何建议。谢谢大家!

也许您可以使用
rgl
库。它允许您创建交互式三维绘图

require(rgl)

col1 <- rainbow(length(bivn.kde$z))[rank(bivn.kde$z)]
col2 <- heat.colors(length(bivn.kde2$z))[rank(bivn.kde2$z)]
persp3d(x=bivn.kde, col = col1)
with(bivn.kde2, surface3d(x,y,z, color = col2))
require(rgl)

我不太确定你想看什么?两种密度之间的差异是什么?为什么不把它们并排画出来呢?我正在研究jeffries-matusita距离的行为,我想看看这两个分布是如何重叠的,每个“变量”的j-m距离是如何移动的,以及这两个类(两个分布)的分类是如何进行的。
require(rgl)

col1 <- rainbow(length(bivn.kde$z))[rank(bivn.kde$z)]
col2 <- heat.colors(length(bivn.kde2$z))[rank(bivn.kde2$z)]
persp3d(x=bivn.kde, col = col1)
with(bivn.kde2, surface3d(x,y,z, color = col2))
res <- list(x = bivn.kde$x, y = bivn.kde$y, z = bivn.kde$z - bivn.kde2$z)
col3 <- heat.colors(length(res$z))[rank(res$z)]
persp3d(res, col = col3)