R语言 实现双变量高斯分布的可视化

R语言 实现双变量高斯分布的可视化

高斯分布(更好地称为正态分布)是统计学中最基本的概率分布之一。双变量高斯分布由两个独立的随机变量组成。在观察双变量高斯分布时,人们可以注意到一个钟形曲线。如果aX1 +bX2 对所有a、b∈R都具有正态分布,那么两个随机变量X1 和X2 就是双变量正态。

双变量高斯分布的概率分布函数(PDF)

密度函数描述了一个随机变量X在给定样本中的相对可能性。在数学上,双变量高斯分布中两个变量X和Y的PDF由以下公式给出。

在R中实现双变量高斯分布的可视化

其中

R语言 实现双变量高斯分布的可视化

  • μ = 平均数
  • σ = 标准差
  • ρ = X1 和X2 的相关度

如果P=2,那么这就是一个双变量高斯分布。

R语言 实现双变量高斯分布的可视化

我们将通过使用 mnormt() 包中的函数来绘制R中的双变量高斯分布,使其可视化。

install.packages('mnormt')
R

我们将使用dmnorm( )来模拟正态分布。

dmnorm( ): mnorm(x, mean = rep(0, d), varcov, log = FALSE)

参数 描述
x 一个长度为d的向量,其中’d=ncol(varcov)’。
mean 分布的期望值。
varcov 分布的方差-协方差矩阵。
log 如果为’TRUE’,则计算密度的对数。

现在,我们将使用 contour( ) 函数来创建一个等值线图,以获得双变量高斯分布的二维可视化效果

library(mnormt)
set.seed(0)
x1 <- seq(-4, 4, 0.1)
x2 <- seq(-5, 5, 0.1)
mean <- c(0, 0)
cov <- matrix(c(2, -1, -1, 2), nrow=2)
f <- function(x1, x2) dmnorm(cbind(x1, x2), mean, cov)
y <- outer(x1, x2, f)
 
# create contour plot
contour(x1, x2, y)
R
n : sample size.
mean : mean of each variable.
cov : covariance matrix of the two variables.
R

输出

在R中实现双变量高斯分布的可视化

为了实现分布的三维可视化,我们将使用软件包的 persp( ) 函数创建一个表面图。

persp(x = seq(0, 1, length.out = nrow(z)),y = seq(0, 1, length.out = ncol(z)),z, xlim = range(x), ylim = range(y),zlim = range(z, na。rm = TRUE),xlab = NULL, ylab = NULL, zlab = NULL,main = NULL, sub = NULL,theta = 0, phi = 15, r = sqrt(3), d = 1,scale = TRUE, expand = 1,col = "white", border = NULL, theta = -135, lphi = 0, shade = NA, box = TRUE, axes = TRUE, nticks = 5, ticktype = "simple", ... )

参数 描述
x, y 网格线的位置。
xlim, ylim, zlim x-、y-和z-的极限值。
xlab, ylab, zlab 轴的标题。
theta, phi 定义观察方向的角度。
scale 应用于Z坐标的扩展因子。
col 面层的颜色。
border 面片周围的线的颜色。
shade 面片上的阴暗面。
box 是否要显示曲面的边框。
ticktype 勾股的类型。
install.packages('mnormt')
library(mnormt)
 
set.seed(0)
x1 <- seq(-4, 4, 0.1)
x2 <- seq(-5, 5, 0.1)
mean <- c(0, 0)
cov <- matrix(c(2, -1, -1, 2), nrow=2)
f <- function(x1, x2) dmnorm(cbind(x1, x2), mean, cov)
y <- outer(x1, x2, f)
 
#create surface plot
persp(x1, x2, y, theta=-20, phi=20, col = 'blue',
      expand=0.8, ticktype='detailed')
R

输出

在R中实现双变量高斯分布的可视化

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册