从标题开始,我有一些大致正常分布的数据,我想找到它的两个基础组件。
我拟合数据分布两个法线的总和,意思是m 1 和m 2 和标准偏差s 1 和s <子> 2 子>。两个高斯按权重因子缩放,使w 1 + w 2 = 1
我可以使用vglm
包的VGAM
函数成功执行此操作,例如:
fitRes <- vglm(mydata ~ 1, mix2normal1(equalsd=FALSE),
iphi=w, imu=m1, imu2=m2, isd1=s1, isd2=s2))
这很慢,根据数据可能需要几分钟,但我可以忍受。
现在我想看看我的数据分布如何随着时间的推移而变化,所以基本上我会在几个(30-50)块中分解我的数据并重复每个数据的拟合过程。
所以,问题如下:
1)如何加快适应过程?我试图使用nls
或mle
看起来更快,但大多数都不能很好地适应(但成功地获得了这些功能可能给我带来的所有可能的错误)。我也不清楚如何对这些函数施加限制(w在[0; 1]和w 1 + w 2 = 1)
2)我如何自动选择一些好的起始参数(我知道这是一个100万美元的问题,但你永远不会知道,也许有人有答案)?现在我有一个小界面,允许我选择参数,直观地看到初始分布看起来很酷,但我想自动完成这项任务。
我想过依赖于对应于y的第3和第4四分位数的x作为两个均值的起始参数?你做一件合情合理的事吗?
答案 0 :(得分:2)
首先要做的事情:
fit mixture model
?对混合模型进行了大量研究,因此您可以找到一些东西。