3D-график нормального распределения в R вокруг точки (x,y)

Я хочу построить одномерную функцию нормальной плотности нормального распределения на (x,y,z) систему координат. Код, который я использую:

library(rgl)
open3d()

x <- seq(0, 10, length=100)
y <- seq(0, 10, length=100)


z = outer(x,y, function(x,y) dnorm(x,2.5,1)*dnorm(y,2.5,1))

persp3d(x, y, z,col = rainbow(100))

Проблема, с которой я сталкиваюсь, состоит в том, что я хочу, чтобы нормальное распределение было не только вокруг его среднего значения, но также и по прямой или окружности. В последнем случае я ожидаю, что выход будет похож на вулкан. Я думаю, я должен сначала создать некоторые вероятности в цикле. Как я могу это сделать? Или я должен также использовать какую-нибудь поверхностную команду для вывода результатов? Я уверен, что это не имеет ничего общего с двумерным нормальным.

Лучший Фудзи

1 ответ

Решение

Первая часть проста: просто не позволяйте z зависит от y например:

z = outer(x,y, function(x,y) dnorm(x,2.5,1))
persp3d(x, y, z,col = rainbow(100))

Во второй части вы можете себе представить, что средства нормального распределения лежат на x^2+y^2=1 круг. У вас будет бесконечное нормальное распределение с радиальными направлениями. Попробуй это:

#define the volcano function
volcano<-function(x,y,sigma=1/2) {
  alpha<-atan(y/x)+pi*(x<0)
  d<-sqrt((cos(alpha)-x)^2 + (sin(alpha)-y)^2)
  dnorm(d,0,sigma)
}
x<-seq(-2,2,length.out=100)
y<-seq(-2,2,length.out=100)
z<-outer(x,y,volcano)
persp3d(x, y, z,col = rainbow(100))
Другие вопросы по тегам