【发布时间】:2020-01-30 22:56:48
【问题描述】:
我正在尝试理解 flexmix,特别是在尝试拟合最简单的可想象的二项式混合模型(两个仅截距模型的混合)时我做错了什么。
set.seed(42)
data=data.frame(class=rbinom(1000,size=1,prob=0.3)) %>% # 30% in class 1, 70% in class 0
mutate(yes=map_dbl(class,~ifelse(.x,rbinom(1,1,prob=0.8),rbinom(1,1,prob=0.4)))) # class 1 = 80%, class 2 = 40%
# Algebraic
(mean(data$yes==1)-0.4)/(0.8-0.4)
# = 0.295 this is what the model should recover, right?
library(flexmix)
mo1=FLXMRglm(offset=rep(log(.4/.6), nrow(data)),family="binomial")
mo2=FLXMRglm(offset=rep(log(.8/.2), nrow(data)),family="binomial")
flexfit <- flexmix(cbind(yes,1-yes) ~ -1, data=data, k=2, model=list(mo1, mo2))
flexfit
summary(flexfit)
此代码返回属于第一类的所有数据点。我是否错误地设置了模型?还是我对混合模型的工作方式存在更根本的误解?
【问题讨论】:
标签: r mixture-model