Как построить поверхность и контуры двумерного нормального распределения, используя меньшее количество пакетов - PullRequest
0 голосов
/ 17 июня 2020

Я собираюсь построить трехмерную поверхность двумерного нормального распределения и его контуры (это может быть любое двумерное нормальное распределение). Я хочу использовать в своем рисунке persp и contour. Я искал в Inte rnet, но нашел много способов сделать это. Большинство из них использовали какие-то пакеты. Но я хотел бы сделать это таким образом, чтобы использовать меньше пакетов или даже без установки какого-либо пакета (однако я не знаю, что это возможно). Не могли бы вы показать мне свой собственный путь на примере двумерного нормального распределения? [Меньше пакетов, лучшее решение]. В самом деле, я хотел бы увидеть самый простой способ рисования поверхности и контуров двумерного нормального распределения.

1 Ответ

1 голос
/ 17 июня 2020

Вы можете делать в R все, что захотите, без использования пакетов, если вы готовы написать для этого свой собственный код. Визуализация 2-мерной поверхности возможна всего в нескольких строках кода R с использованием persp и contour, но создание поверхности (то есть создание 2-мерного графика плотности - нетривиально.

Вот как вы можете сгенерировать двумерную поверхность нормального распределения, используя только пакет 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")

Создано 17.06.2020 с помощью пакета REPEX (v0.3.0)

...