如何使用statsmodels进行数据拟合

1 投票
1 回答
2443 浏览
提问于 2025-04-17 22:59

我有一个数据集,需要把它拟合到一个叫做GEV分布的模型上。这个数据是一维的,存储在一个numpy数组里。目前,我在用scipy.stats.genextreme.fit(data)这个方法,虽然能用,但结果完全不准确(通过绘制概率密度函数可以明显看出来)。经过一些调查,我发现我的数据在对数空间下拟合得不好,而scipy在它的最大似然估计(MLE)算法中使用了对数空间,所以我需要尝试像GMM这样的其他方法,而这个方法只能在statsmodels中找到。问题是,我找不到类似于scipy的fit函数的东西。我找到的所有例子似乎都处理比我更复杂的数据。此外,statsmodels在使用时需要endogexog这两个参数,但我对它们完全没有头绪。

这应该很简单,所以我肯定是漏掉了什么明显的东西。有没有人用过statsmodels这样的方法,如果有的话,能给我一些指引吗?

1 个回答

0

我猜你想要的是高斯混合模型(GMM),而不是广义矩估计(GMM)。前者的高斯混合模型在scikit-learn中可以找到,点击这里查看。后者的代码在statsmodels里,但还在不断完善中。

编辑 其实我不太确定你是不是想要GMM。也许你只是想要一个核密度估计器(KDE)。这个在statsmodels中可以找到,点击这里查看,还有一个示例

嗯,如果你确实想用(广义) 矩估计法来拟合某种概率加权的GEV,那么你需要指定矩条件,但我手头没有关于如何在statsmodels中指定矩条件的(G)MM的现成示例。你可能更适合在邮件列表上询问。

撰写回答