【发布时间】:2013-07-29 07:09:45
【问题描述】:
我正在处理小样本数据:
>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
我有以下问题:
- 要生成一组近似于基础分布的新值,我的方法是正确的还是有更好的工作流程?
- 如果我的方法是正确的,我如何使用这个结果从这个混合分布中生成一组随机值?
【问题讨论】:
-
我认为这个问题可能更适合 CrossValidated:stats.stackexchange.com
-
@DavidMarx 是的,我对此进行了辩论,甚至是否要交叉发布,但最终决定在这里写,因为我的第二个问题更多的是关于编码。但是,如果模组认为它更适合那里,我很乐意这样做。
-
我不确定您的方法是否明智。您没有指定您打算如何处理随机数。此外,您的样本量非常小,从如此小的样本量估计正态分布有点可疑。也许引导程序是实现最终目标的更好方法?
-
@Roland 是的,样本量很小,但这就是我所拥有的。这些数据来自一组研究,而且只有这么多。我曾想过使用
sample()进行引导,但必须回到我的笔记中,为什么我没有采用这种方法..也许这部分讨论应该继续进行交叉验证.. -
问题是你想从随机数中推断出什么。您的样本量可能太小,无法从您的方法中推断出任何合理的结果。
标签: r distribution random-sample mixed-models