使用统计模型本地线性趋势模型处理缺失值
Posted
技术标签:
【中文标题】使用统计模型本地线性趋势模型处理缺失值【英文标题】:Handle missing values with Stats Models Local Linear Trend model 【发布时间】:2021-09-03 09:27:59 【问题描述】:我正在使用 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
有没有办法以与局部线性趋势模型相同的方式处理缺失值?
【问题讨论】:
【参考方案1】: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
这行得通。
【讨论】:
以上是关于使用统计模型本地线性趋势模型处理缺失值的主要内容,如果未能解决你的问题,请参考以下文章