包装以适应学生分布的混合

时间:2017-06-29 12:45:24

标签: r numpy scipy statistics model-fitting

我正在寻找一个软件(python首选,但实际上是一个jupyter内核存在的任何东西)来将数据样本拟合为t分布的混合。

我已经搜索了很长一段时间,似乎这是一个不起眼的努力,因为大多数搜索结果都出现在高斯混合物中(我对此不感兴趣)。

迄今为止最有希望的候选人是“AdMit”和“MitSEM”R套餐。然而,我不知道R并且发现这些包的描述相当复杂,似乎它们的核心目标不是t的混合物的拟合,而是用它作为完成其他事情的一步。

这简直就是我希望软件完成的任务:

将t分布的混合拟合到某些数据并估算每个数据的“位置”“比例”和“自由度”。

我希望有人能指出我一个简单的包,我不敢相信这是一个如此模糊的用例。

2 个答案:

答案 0 :(得分:5)

这似乎有效(在R中):

模拟示例:

 set.seed(101)
 x <- c(5+ 3*rt(1000,df=5),
        10+1*rt(10000,df=20))

适用于:

 library(teigen)
 tt <- teigen(x,
        Gs=2,   # two components
        scale=FALSE,dfupdate="numeric",
        models=c("univUU")  # univariate model, unconstrained scale and df
        # (i.e. scale and df can vary between components)
 )

参数都相当接近(除了第二个组件的df,但这是一个非常难以估计的事情......)

 tt$parameters[c("df","mean","sigma","pig")]
 ## $df    ## degrees of freedom
 ## [1]  3.578491 47.059841  
 ## $mean  ## ("location")
 ##           [,1]
 ## [1,]  4.939179
 ## [2,] 10.002038
 ## $sigma    ## reporting variance rather than sd (I think?)
 ## , , 1
 ##          [,1]
 ## [1,] 8.763076
 ## , , 2
 ##          [,1]
 ## [1,] 1.041588
 ## $pig     ## mixture probabilities
 ## [1] 0.09113273 0.90886727

答案 1 :(得分:1)

迟到这个派对,但因为你更喜欢 Python 的东西,pypi 上似乎有几个包适合有限的学生 t 混合,包括:

https://pypi.org/project/studenttmixture/

https://pypi.org/project/student-mixture/

https://pypi.org/project/smm/

所以所有这些都可以用 pip 安装。

Scikit-learn 和其他常见的嫌疑人目前显然没有这个功能。