Как смоделировать и построить двумерное нормальное распределение в r


В статистике две переменные подчиняются двумерному нормальному распределению, если при сложении они имеют нормальное распределение.

В этом руководстве объясняется, как выполнить следующие задачи в R:

  • Симулируйте двумерное нормальное распределение
  • Постройте двумерное нормальное распределение, используя контурный график (2D-график)
  • Постройте двумерное нормальное распределение, используя поверхностный график (3D-график)

Пойдем!

Пример 1. Моделирование двумерного нормального распределения в R

Самый простой способ смоделировать двумерное нормальное распределение в R — использовать функцию mvrnorm() из пакета MASS .

Следующий код показывает, как использовать эту функцию для практической имитации двумерного нормального распределения:

 library (MASS)

#make this example reproducible
set. seed ( 0 )

#simulate bivariate normal distribution
bivariate_data <- as. data . frame (mvrnorm(n= 100 ,
                                        mu=c(0, 0),
                                        Sigma=matrix(c(5, 3, 4, 4), ncol= 2 )))

#view first six rows of bivariate dataset
head(bivariate_data)

           V1 V2
1 -2.03600343 -2.9623059
2 0.07719131 1.2948982
3 -3.26729701 -1.7928069
4 -2.62985132 -2.3015471
5 -1.75126215 0.3056698
6 3.67698436 2.2020238

Вот что делает каждый аргумент функции mvrnorm() :

  • n : определяет размер выборки.
  • mu : определяет среднее значение каждой переменной.
  • Сигма : определяет ковариационную матрицу двух переменных.

Конечным результатом является фрейм данных с двумя переменными, которые при сложении следуют нормальному распределению.

Пример 2. Построение двумерного нормального распределения

Самый простой способ построить двумерное нормальное распределение в R — использовать функции из пакета mnormt() .

Например, мы можем использовать функцию контура () этого пакета для создания контурного графика, который обеспечивает 2D-визуализацию двумерного нормального распределения:

 library (mnormt)

#make this example reproducible
set. seed ( 0 )

#create bivariate normal distribution
x <- seq(-3, 3, 0.1) 
y <- seq(-3, 3, 0.1)
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)

#create contour plot
contour(x, y, z)

двумерный нормальный контурный график в R

Мы также можем использовать функцию persp() для создания поверхностного графика, который обеспечивает трехмерную визуализацию двумерного нормального распределения:

 library (mnormt)

#make this example reproducible
set. seed ( 0 )

#create bivariate normal distribution
x <- seq(-3, 3, 0.1) 
y <- seq(-3, 3, 0.1)
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)

#create surface plot
persp(x, y, z, theta= -30 , phi= 25 , expand= 0.6 , ticktype=' detailed ')

двумерный график поверхности нормального распределения в R

Вот что делает каждый аргумент функции persp() :

  • тета, фи : устанавливает углы направления обзора.
  • развернуть : управляет размером оси Z.
  • тип галочки : управляет появлением делений на осях.

Конечным результатом является трехмерный поверхностный график двумерного нормального распределения.

Дополнительные ресурсы

В следующих руководствах объясняется, как использовать другие распределения вероятностей в R:

Как использовать нормальное распределение в R
Как использовать биномиальное распределение в R
Как использовать распределение Пуассона в R
Как использовать полиномиальное распределение в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *