Estimation des paramètres d'un mélange de lois normales avec flexmix
Bonjour,
je souhaite estimer les paramètres d'un mélange de deux lois normales ~ N(0,1)+N(4,1) .
Pour cela j'utilise le package 'flexmix'.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| require(flexmix)
#require(lattice)
dat <- data.frame(y=c(rnorm(500,0,1), rnorm(500,4,1)), class=gl(2,500))
# densityplot(x=~y, data=dat)
(ex1_flx2 <- stepFlexmix(y~1, k=2, nrep=100, data= dat, model=FLXMRglm(~1) ))
parameters(ex1_flx2)
# Comp.1 Comp.2
# coef.(Intercept) 1.875679 2.141521
# sigma 2.279147 2.279306
table(true=dat$class, pred=clusters(ex1_flx2))
# pred
# true 1 2
# 1 497 3
# 2 17 483 |
Je ne comprends pas pourquoi les estimations sont totalement fausses, alors que le classement est correct 98%.
Le problème vient-il de flexmix ou bien de la fonction parameters ?
PS : j'ai testé sur des données avec des variances différentes et le résultat obtenu était correct.