【发布时间】:2022-11-16 22:39:18
【问题描述】:
来自 Python 的 statsmodels 库的回归结果包括值 llf,我认为这是拟合期间获得的对数似然。然而,我对新数据的对数似然感兴趣,我在predict() 中使用的数据。是否有一个函数(即使没有记录)我可以调用来获取它?特别是,我对 OrderedModel 的对数似然感兴趣。
【问题讨论】:
标签: python statsmodels
来自 Python 的 statsmodels 库的回归结果包括值 llf,我认为这是拟合期间获得的对数似然。然而,我对新数据的对数似然感兴趣,我在predict() 中使用的数据。是否有一个函数(即使没有记录)我可以调用来获取它?特别是,我对 OrderedModel 的对数似然感兴趣。
【问题讨论】:
标签: python statsmodels
在 statsmodels 中不能直接计算新数据的对数似然。 (例如参见https://github.com/statsmodels/statsmodels/issues/7947) 模型 loglike 方法始终使用数据、endog、exog 和其他模型特定数组,这些数组作为属性附加到模型。
像 GLM 这样的几个模型和像 Logit、Poisson 这样的标准离散模型有一个 get_distribution 方法(在 statsmodels 0.14 中),它为类似于预测的新数据返回一个 scipy stats 兼容分布实例。此分布实例具有 pdf 和 logpdf 方法,可用于计算预测的对数似然。
但是,这还不适用于 OrderedModel 等模型。
两种可能的解决方法,可能适用于大多数情况(我没有检查 OrderedModel)
model.loglike。这将使用基于预测数据而非原始模型的 nobs 和自由度。因此,依赖于这些的结果可能不适合某些用例。这两个都是 hack,可能适用于 loglike 但可能不适用于某些其他模型或结果统计。
一种正确的方法是编写新函数来直接计算类对数,或者转换预测概率以创建多项式分布实例。
【讨论】: