关于使用 StatsModels MICE 估算温度数据的建议

数据挖掘 Python 时间序列 统计数据 数据插补
2022-03-08 00:23:38

这可能是一个愚蠢的问题,但我无法弄清楚如何将使用 StatsModels MICE 估算的值实际返回到我的数据中。我有一个数据框(dfLocal),其中包含多年来五个相邻站点(LOC1:LOC5)的每小时温度记录,我想估算任何给定站点的缺失数据。按照我的例子:

imp = mice.MICEData(dfLocal)
fml = 'LOC1 ~ LOC2 + LOC3 + LOC4 + LOC5'
mice = mice.MICE(fml, sm.OLS, imp)
results = mice.fit(10, 10)
print(results.summary())

dfLocal.dropna(axis=0, how='all', inplace=True)
imp.data = imp.data.set_index(dfLocal.index)

# In this case I only want to fill one specific set of missing data
# hence gap_start and gap_end
dfLocal.loc[gapStart:gapEnd, 'LOC1'] = imp.data[fillSite]

我对 MICE 的理解大致是,缺失值会被多次估算,然后结合起来从众多值中找到最佳值。我发现从上述代码中实际获得任何数字的唯一方法是使用,imp.data但我担心这可能只是它们组合之前的个人估算之一?但是,我似乎可以从拟合模型 ( results) 中得到总结?

我远不是统计学家(也不是程序员),所以我一直在阅读 mouse.MICE 的代码和一般 MICE 应用程序的其他资源,但我会尽可能地感谢任何有关这方面的指导。找不到太多关于在线使用 statsmodels 的 MICE 的信息。通常我会在 Gist 上发布一些数据,但全套数据有点大。就是说,如果你认为它会有所帮助,我会上传它。

谢谢!

1个回答

MICE 确实生成了几个数据集,但它并没有组合这些数据集。相反,它使您的模型适合每个数据集并组合这些模型。如果您真的需要一个估算数据集,您可以选择一个或以任何对您的问题有意义的方式将它们组合起来(或者您可能会使用另一种方法更好):

现在,对于statsmodels实现,imp.data只跟踪最新的估算集[1]您可以循环更新而不是使用[2]fit中的示例来获取所有数据集