我正在处理小样本数据:
>dput(dat.demand2050.unique)
c(79, 56, 69, 61, 53, 73, 72, 86, 75, 68, 74.2, 80, 65.6, 60, 54)
其密度分布如下所示:
我知道这些值来自两个状态 - 低和高 - 并假设基础过程是正常的,我使用mixtools
包来拟合双峰分布:
set.seed(99)
dat.demand2050.mixmdl <- normalmixEM(dat.demand2050.unique, lambda=c(0.3,0.7), mu=c(60,70), k=2)
这给了我以下结果:(
实线是拟合曲线,虚线是原始密度)。
# get the parameters of the mixture
dat.demand2050.mixmdl.prop <- dat.demand2050.mixmdl$lambda #mix proportions
dat.demand2050.mixmdl.means <- dat.demand2050.mixmdl$mu #modal means
dat.demand2050.mixmdl.dev <- dat.demand2050.mixmdl$sigma #modal std dev
混合参数为:
>dat.demand2050.mixmdl.prop #mix proportions
[1] 0.2783939 0.7216061
>dat.demand2050.mixmdl.means #modal means
[1] 56.21150 73.08389
>dat.demand2050.mixmdl.dev #modal std dev
[1] 3.098292 6.413906
我有以下问题:
- 要生成一组近似于基础分布的新值,我的方法是正确的还是有更好的工作流程?
- 如果我的方法是正确的,我如何使用这个结果从这个混合分布中生成一组随机值?