【问题标题】:Gaussian mixture modelling (Mclust) in R on simple normal distribution failsR中简单正态分布的高斯混合建模(Mclust)失败
【发布时间】:2015-01-02 21:48:34
【问题描述】:

我试图理解 Mclust,所以我认为最简单的方法是使用高斯混合建模来建模高斯。我本来期望 G=1 是最合适的。但是,我得到 G=6,如果我打印它们,它们甚至不会接近原始高斯。任何提示这里有什么问题?

x<-seq(-4,4,length=200)
y<-dnorm(x,mean=0, sd=1)
plot(x,y, type="l", lwd=2)
mod1<-Mclust(y)
ColourVec<-c('green','cyan','blue','red','yellow','yellow','yellow')
for (i in 1:max(mod1$G)){
  tmp<-mod1$classification==i  
  par(new=T)
  plot(density(mod1$data[tmp],adjust=2),col=ColourVec[i],xlim=c(-4,4),ylim=c(0,0.4))  
}

干杯! 都灵

【问题讨论】:

  • 尚未使用mclust,但我认为您想要rnorm(200,mean=0, sd=1) 而不是调用dnorm()

标签: r statistics gaussian


【解决方案1】:

Mclust(y,) 将数据 y 作为输入,例如。如果您想要来自单变量法线的数据,则需要通过rnorm() 模拟 y。这导致:

library(mclust)
x<-seq(-4,4,length=200)
y<-rnorm(200,mean=0, sd=1)
plot(x,dnorm(x,mean=0, sd=1), type="l", lwd=2)
mod1<-Mclust(y)
ColourVec<-c('green','cyan','blue','red','yellow','yellow','yellow')
for (i in 1:max(mod1$G)){
  tmp<-mod1$classification==i  
  lines(density(mod1$data[tmp],adjust=2),col=ColourVec[i])   
}

增加模拟次数当然会降低您对核平滑密度的偏差。 增加到 N=2000 次模拟,1000 次来自 2 个具有相同 sd 的不同单变量高斯,但不同的方法导致:

N<-2000
x<-seq(-4,7,length=200)
y<-c( rnorm(N/2,mean=0,sd=1), rnorm(N/2,mean=3,sd=1) )
plot(x,dnorm(x,mean=0, sd=1), type="l", lwd=2,xlim=c(-3,7))
lines(x,dnorm(x,mean=3, sd=1), lwd=2) 

mod1<-Mclust(y)
ColourVec<-c('green','cyan','blue','red','yellow','yellow','yellow')
for (i in 1:max(mod1$G)){
  tmp<-mod1$classification==i  
  lines(density(mod1$data[tmp],adjust=2),col=ColourVec[i])  
}

【讨论】:

    猜你喜欢
    • 2020-08-12
    • 2016-09-16
    • 1970-01-01
    • 2014-12-20
    • 2014-01-14
    • 2013-03-27
    • 1970-01-01
    • 2019-06-17
    • 2015-04-19
    相关资源
    最近更新 更多