statsmodels - 使用统计模型本地线性趋势模型处理缺失值
问题描述
我正在使用 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
有没有办法以与局部线性趋势模型相同的方式处理缺失值?
解决方案
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
这行得通。
推荐阅读
- visual-studio - 如何在 Visual Studio 中标记或突出显示代码段?
- c++ - 创建一个继承自另一个类的类?
- ios - 如何在 SpriteKit 中使用 SKShapeNode 通过触摸特定路径来绘制路径
- java - 如何在java中的pdf中显示泰卢固语字体
- asp.net-core - 如何使用模型绑定将值修补为空
- c# - 在 C# 中的类之间设置 Int 变量
- c# - 使用c#打印水平镜像的ascii艺术
- ruby-on-rails - 如何从终端中删除这条线(在图片中)?
- shell - 找不到 Shell 脚本命令,但在终端中有效
- node.js - Bash 错误的退出代码