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

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

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

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

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

Давайте прыгать!

Пример 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() .

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

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() :

  • theta, phi : определяет углы направления обзора.
  • expand : Управляет размером оси Z.
  • ticktype : Управляет появлением делений на осях.

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

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.