如何使用更少的包绘制双变量正态分布的表面和等高线

How to plot the surface and contours of a bivariate normal distribution using fewer packages

我将绘制双变量正态分布的 3D 表面及其等高线(它可以是任何双变量正态分布)。我想在绘图中使用 perspcontour。 我在互联网上搜索,但我找到了很多方法来做到这一点。他们中的大多数人都使用了一些软件包。但是我想以使用更少的包甚至不安装任何包的方式来做到这一点(但是,我不知道这是可能的)。你能用双变量正态分布的例子告诉我你自己的方式吗? [更少的包,更好的解决方案]。事实上,我希望看到绘制双变量正态分布的表面和轮廓的最简单方法。

您可以在 R 中做任何您喜欢的事情,而无需使用包,只要您准备好编写自己的代码来完成它。使用 perspcontour 只需几行 R 代码就可以可视化二维表面,但是 生成 表面(即创建二维密度图,是不简单。

以下是如何仅使用 mnormt 包(如评论中所要求的)生成二维双变量正态分布表面的方法。对于这个例子,我制作了一个虚拟的方差-协方差矩阵。

library(mnormt)

x     <- seq(-5, 5, 0.25) 
y     <- seq(-5, 5, 0.25)
mu    <- c(0, 0)
sigma <- matrix(c(2, -1, -1, 2), nrow = 2)
f     <- function(x, y) dmnorm(cbind(x, y), mu, sigma)
z     <- outer(x, y, f)

contour(x, y, z)


persp(x, y, z, theta = -30, phi = 25, 
      shade = 0.75, col = "gold", expand = 0.5, r = 2, 
      ltheta = 25, ticktype = "detailed")

reprex package (v0.3.0)

于 2020-06-17 创建