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))
我遇到的问题是,我希望正态分布不只是围绕其均值,而是在一条直线或一个圆上。在后一种情况下,我希望输出类似于火山。我想我必须首先在循环中创建一些概率。我怎样才能做到这一点?或者我还应该使用一些表面命令来绘制输出吗?不过,我很确定这与双变量法线无关。
最佳
富士
第一部分很简单:只是不要让您的 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))
我想在 (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))
我遇到的问题是,我希望正态分布不只是围绕其均值,而是在一条直线或一个圆上。在后一种情况下,我希望输出类似于火山。我想我必须首先在循环中创建一些概率。我怎样才能做到这一点?或者我还应该使用一些表面命令来绘制输出吗?不过,我很确定这与双变量法线无关。
最佳 富士
第一部分很简单:只是不要让您的 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))