所以,我试图绘制一个以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])))
答案 0 :(得分:1)
一些意见:
dmvnorm(y=c(i,j))
错误,您需要评估c(x3[i], x4[j])
处的密度。 plot()
声明,但plot()
最多只需要两个变量(您有3个),您需要使用类似{{{1}的内容1}}或image()
。 以下是您要找的内容:
levelplot()