繁体   English   中英

R在(x,y)点附近的3D正态分布图

[英]3D Plot of normal distribution in R around a (x,y) point

我想在(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))

在此处输入图片说明

我遇到的问题是我希望正态分布不仅在其均值周围,而且还希望在直线或圆上。 在后一种情况下,我希望输出类似于火山。 我想我必须首先在循环中创建一些概率。 我怎样才能做到这一点? 还是我还应该使用一些Surface命令来绘制输出? 我很确定这与二元正态无关。

最好的富士

第一部分很简单:例如,不要让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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM