如何使用更少的包绘制双变量正态分布的表面和等高线
How to plot the surface and contours of a bivariate normal distribution using fewer packages
我将绘制双变量正态分布的 3D 表面及其等高线(它可以是任何双变量正态分布)。我想在绘图中使用 persp
和 contour
。
我在互联网上搜索,但我找到了很多方法来做到这一点。他们中的大多数人都使用了一些软件包。但是我想以使用更少的包甚至不安装任何包的方式来做到这一点(但是,我不知道这是可能的)。你能用双变量正态分布的例子告诉我你自己的方式吗?
[更少的包,更好的解决方案]。事实上,我希望看到绘制双变量正态分布的表面和轮廓的最简单方法。
您可以在 R 中做任何您喜欢的事情,而无需使用包,只要您准备好编写自己的代码来完成它。使用 persp
和 contour
只需几行 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 创建
我将绘制双变量正态分布的 3D 表面及其等高线(它可以是任何双变量正态分布)。我想在绘图中使用 persp
和 contour
。
我在互联网上搜索,但我找到了很多方法来做到这一点。他们中的大多数人都使用了一些软件包。但是我想以使用更少的包甚至不安装任何包的方式来做到这一点(但是,我不知道这是可能的)。你能用双变量正态分布的例子告诉我你自己的方式吗?
[更少的包,更好的解决方案]。事实上,我希望看到绘制双变量正态分布的表面和轮廓的最简单方法。
您可以在 R 中做任何您喜欢的事情,而无需使用包,只要您准备好编写自己的代码来完成它。使用 persp
和 contour
只需几行 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 创建