如何使用更少的包绘制二元正态分布的表面和轮廓

Roj*_*jer 2 3d r surface contour

我将绘制二元正态分布的 3D 曲面及其轮廓(可以是任何二元正态分布)。我想在我的绘图中使用perspand 。contour我在网上搜索了一下,但发现了很多方法。他们中的大多数人都使用过一些软件包。但我想以使用更少的软件包甚至不安装任何软件包的方式来执行此操作(但是,我不知道这是可能的)。您能否通过二元正态分布的示例向我展示您自己的方式?[更少的包,更好的解决方案]。事实上,我希望看到绘制二元正态分布的表面和轮廓的最简单方法。

All*_*ron 5

只要您准备好编写自己的代码来执行此操作,您就可以在 R 中执行任何您喜欢的操作,而无需使用包。persp使用和仅需几行 R 代码即可可视化二维表面contour,但生成表面(即创建二维密度图)并非易事。

以下是如何仅使用该包生成二维二元正态分布曲面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)
Run Code Online (Sandbox Code Playgroud)


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

由reprex 包(v0.3.0)于 2020-06-17 创建