R双变量正态dmvnorm图

时间:2014-10-03 02:12:18

标签: r

所以,我试图绘制一个以12.5和7.5为中心的双变量法线,但它总是偏离中心。实际上,我正在尝试从双变量分布中进行采样,并快速绘制它以确保其有效。此外,当我将dmvnorm中的mu切换为50时,它将起作用。我知道这不是最好的代码/图形,但它的格式是为什么试图弄清楚发生了什么。我不知道错误是在抽样还是在图表中。这是怎么回事?

library(mixtools)

x3<-seq(10,15,by=.05)
x4<-seq(5,10,by=.05)
y<-matrix(NA,nrow=length(x3)*length(x4),ncol=3)
dim(y)
counter<-1
for(i in seq(1,length(x3))){
  for(j in seq(1,length(x4))){
    #Change 12.5 and 7.5 to 50's will put it in the center
    y[counter,]<-c(dmvnorm(y=c(i,j),mu=c(12.5,7.5),sigma=matrix(c(1000,0,0,1000),nrow=2))*1000,x3[i],x4[j])
    counter<-counter+1
  }
}
plot(y[,2],y[,3],pch=16,col=rgb(0,y[,1],0,maxColorValue=(dmvnorm(y=c(12.5,7.5),mu=c(12.5,7.5),sigma=matrix(c(1000,0,0,1000),nrow=2))*1000)),asp=1,xlim=c(min(y[,2]),max(y[,2])),ylim=c(min(y[,3]),max(y[,3])))

1 个答案:

答案 0 :(得分:1)

一些意见:

  1. dmvnorm(y=c(i,j))错误,您需要评估c(x3[i], x4[j])处的密度。
  2. 我没有仔细阅读您的plot()声明,但plot()最多只需要两个变量(您有3个),您需要使用类似{{{1}的内容1}}或image()
  3. 以下是您要找的内容:

    levelplot()