首页 > 解决方案 > 使用统计模型本地线性趋势模型处理缺失值

问题描述

我正在使用 statsmodels 来拟合局部线性趋势状态空间模型,该模型使用文档中示例中的代码从 sm.tsa.statespace.MLEModel 类继承:

https://www.statsmodels.org/dev/examples/notebooks/generated/statespace_local_linear_trend.html

状态空间模型和卡尔曼滤波器应该自然地处理缺失值,但是当我添加一些空值时,状态空间模型会输出空值。在文档中的另一个示例中,实现 SARIMAX 似乎丢失的数据似乎是自动处理的:

https://www.statsmodels.org/dev/examples/notebooks/generated/statespace_sarimax_internet.html

有没有办法以与局部线性趋势模型相同的方式处理缺失值?

标签: statsmodelsmissing-datakalman-filterstate-space

解决方案


Chad Fulton 回复了我在 github 上提出的问题:

https://github.com/statsmodels/statsmodels/issues/7684

状态空间模型确实可以处理 endog 变量中的 NaN 值。我认为问题在于,在此示例代码中,起始参数计算为:

@property
def start_params(self):
    return [np.std(self.endog)]*3

要处理数据中的 NaN 值,您需要将其替换为:

@property
def start_params(self):
    return [np.nanstd(self.endog)]*3

这行得通。


推荐阅读