非高斯动态回归模型¶
简介¶
对于非高斯状态空间模型,我们拥有与高斯状态空间模型相同的基本框架,但现在可能使用非高斯的测量密度。也就是说,我们关注的是以下形式的问题:
通常基于MCMC的方案是解决此问题的正确方法。目前PyFlux为了速度使用BBVI,但平均场近似意味着状态可能存在一些偏差(尽管预测结果通常还不错)。未来,PyFlux将使用更结构化的近似方法。
非高斯动态回归模型与动态线性回归模型具有相同的形式,但采用非高斯测量密度。
示例¶
请查看笔记本https://github.com/RJT1990/talks/blob/master/PyDataTimeSeriesTalk.ipynb以及金融领域beta系数非高斯估计的示例。这里的API来自旧版本,但展示了该模型类型的应用。
类描述¶
-
class
NDynReg(formula, data, family)¶ 非高斯动态回归模型
参数 类型 描述 formula string 使用Patsy符号指定回归模型 data pd.DataFrame 包含单变量时间序列 family pf.Family instance The distribution for the time series, e.g pf.Normal()属性
-
latent_variables¶ 一个包含模型潜在变量信息的pf.LatentVariables()对象,包括先验设置、任何拟合值、初始值和其他潜在变量信息。当模型被拟合时,这里就是潜在变量被更新/存储的地方。有关此对象内属性的信息以及访问潜在变量信息的方法,请参阅潜在变量文档。
方法
-
adjust_prior(index, prior)¶ 调整模型潜在变量的先验分布。潜在变量及其索引可以通过打印附加到模型实例的
latent_variables属性来查看。参数 类型 描述 index int 要更改的潜变量索引 prior pf.Family instance Prior distribution, e.g. pf.Normal()返回: void - 修改模型的
latent_variables属性
-
fit(method, **kwargs)¶ 估计模型的潜在变量。用户选择一个推断选项,该方法会返回一个结果对象,同时更新模型的
latent_variables属性。参数 类型 描述 method str 推断选项:例如 'M-H' 或 'MLE' 请参阅文档中的贝叶斯推断和经典推断部分,了解完整的推断选项列表。可以输入与所选特定推断模式相关的可选参数。
返回: 包含估计潜在变量信息的pf.Results实例
-
plot_fit(**kwargs)¶ 绘制模型对数据的拟合情况。可选参数包括figsize,即绘图图形的尺寸。
返回 : void - 显示一个matplotlib绘图
-
plot_ppc(T, nsims)¶ 绘制后验预测检查的直方图,使用用户选择的差异度量。此方法仅在使用贝叶斯推断进行拟合时有效。
参数 类型 描述 T function Discrepancy, e.g. np.meanornp.maxnsims int PPC需要进行多少次模拟 返回值: void - 显示一个matplotlib绘图
-
plot_predict(h, oos_data, past_values, intervals, **kwargs)¶ 绘制模型的预测结果,并附带置信区间。
参数 类型 描述 h int 预测向前多少步 oos_data pd.DataFrame 包含h步外生变量的数据框 past_values int 要绘制的历史数据点数量 intervals boolean 是否绘制区间 需要明确的是,oos_data参数应该是一个与初始化模型实例时使用的初始数据框格式相同的DataFrame。原因在于,要预测未来值,您需要指定关于未来外生变量的假设。例如,如果您预测h步向前,该方法将从oos_data中获取前h行数据,并提取您在patsy公式中指定的外生变量值。
可选参数包括figsize - 图表绘制的尺寸。请注意 如果您使用最大似然估计或变分推断,显示的区间将不会 反映潜在变量的不确定性。只有Metropolis-Hastings方法能提供完全贝叶斯 预测区间。由于平均场推断的局限性(无法考虑后验相关性), 变分推断的贝叶斯区间不予显示。
返回 : void - 显示一个matplotlib绘图
-
plot_predict_is(h, fit_once, fit_method, **kwargs)¶ 绘制模型在样本内的滚动预测。这意味着用户假装数据的最后一部分是样本外的,并在每个时间段后进行预测并评估其表现。用户可以选择是在开始时一次性拟合参数,还是在每个时间步都进行拟合。
参数 类型 描述 h int 使用多少个先前的时间步 fit_once boolean 是否只拟合一次,还是每个时间步都拟合 fit_method str 选择哪种推断方法,例如'MLE' 可选参数包括figsize - 要绘制的图形尺寸。h是一个整数,表示要模拟性能的前几步。
返回 : void - 显示一个matplotlib绘图
-
plot_z(indices, figsize)¶ 返回潜在变量及其相关不确定性的绘图。
参数 类型 描述 indices int or list 要绘制的潜变量索引 figsize tuple matplotlib图形的大小 返回 : void - 显示一个matplotlib绘图
-
predict(h, oos_data)¶ 返回模型预测结果的DataFrame。
参数 类型 描述 h int 预测向前多少步 oos_data pd.DataFrame 包含h步外生变量的数据框 需要明确的是,oos_data参数应该是一个与初始化模型实例时使用的原始数据框格式相同的DataFrame。原因在于,要预测未来值,您需要指定关于未来外生变量的假设。例如,如果要预测未来h步,该方法将从oos_data中获取前5行数据,并采用您在patsy公式中指定为外生变量的值。
请注意,如果您使用最大似然估计或变分推断,显示的区间将不会反映潜在变量的不确定性。只有Metropolis-Hastings方法能提供完全贝叶斯预测区间。由于平均场推断的局限性(未考虑后验相关性),变分推断的贝叶斯区间未予显示。
返回 : pd.DataFrame - 模型预测结果
-
predict_is(h, fit_once, fit_method)¶ 返回模型样本内滚动预测的DataFrame。
参数 类型 描述 h int 使用多少个先前的时间步 fit_once boolean 是否只拟合一次,还是每个时间步都拟合 fit_method str 选择哪种推断方法,例如'MLE' 返回 : pd.DataFrame - 模型预测结果
-
参考文献¶
Harvey, A. C. (1989). 《预测、结构时间序列模型与卡尔曼滤波》。 剑桥大学出版社,剑桥。
Ranganath, R., Gerrish, S., 和 Blei, D. M. (2014). 黑盒变分推断。 发表于《人工智能与统计学》。