比较分层贝叶斯与OLS

时间:2018-05-23 17:33:22

标签: machine-learning linear-regression bayesian hierarchical hierarchical-bayesian

我制作了两个模特。一个分层贝叶斯模型和一个最小二乘/ OLS模型,我想比较两者。

我知道对于OLS结果我只需打印摘要:

  model = sm.OLS(d_df.ix[:, -1], d_df.ix[:, :-1])
  result = model.fit()
  print(result.summary())

这将给出我的一些统计数据,如F统计量,AIC,BIC等。

据我所知,我无法为我的Hierarchical Bayes模型打印类似的摘要,但我不确定。

您是否有任何建议适合进行比较以及如何计算这些统计数据?

任何帮助将不胜感激! 非常感谢!

1 个答案:

答案 0 :(得分:0)

汇总统计数据的任何比较的意义完全取决于您的推理目标。您是否正在使用该模型制作具有前瞻性的预测,并关注预测准确性?或者您正在研究数据,试图量化回归系数以分析关系和影响大小?在不了解您的具体推理目标的情况下,没有孤立的,单一的方式来比较模型。

如果您的目标更多地集中在预测方面,那么您有一些选择。您可以使用OLS模型中的拟合参数对保持或测试集进行预测,然后查看均方根误差,或测试集目标值与预测之间的相关性或R平方(但是通常不是用于拟合模型的数据的R平方。)

对于贝叶斯模型,您可以选择参数的一个点估计,例如MAP估计,然后重复与OLS相同的测试集评估。这在概念上更容易,但未能利用贝叶斯模型为您提供参数的后验分布这一事实。

要利用后验,您可以使用pymcstan等工具从后验分布中绘制拟合系数向量的大量样本。然后,对于每个样本,计算您在测试数据上的性能指标,就像您为OLS所做的那样。然后,这将为您提供测试统计信息的分布,因此您可以看到测试集上的性能的平均值和标准差 - 您可以轻松地从标准OLS模型获得这些偏差。

如果您更关注效果大小或关于系数解释性分析的讨论,那么您可以单独查看您获得的OLS参数的频率(NHST)p值,以及回归的标准误差(标准残差的误差)。如果您关心频率统计意义的概念,这些指标会为您提供这些信息。

虽然您可以为贝叶斯模型中的系数计算贝叶斯p值和可靠(高密度)区间,但您必须注意不要直接将其与频率类似物进行比较。贝叶斯p值告诉您关于后验分布中的结果的相对极端,其中隐含地包括您关于先验和模型结构的假设。一个频繁的p值告诉你某个结果的相对极端假设零假设 - 这是一个不同的东西,并不等同于后验分布。

您可能还希望确保您的变量以一种有用的方式标准化,以使系数在各个模型中具有可比性。例如,您可能希望对输入预测变量进行z分数,或者如果您使用分类变量,甚至可以考虑将标准偏差标准化两倍(这使得系数可以根据拟合模型中的标准偏差单位直接解释)。

最后,您在贝叶斯案例中提到了一个层次模型,这表明您正在为不同的观察组建模不同的治疗效果。

在频率设置中为此创建直接等效项非常困难。您可以为不同的组成员身份添加指标变量,然后尝试将其他系数解释为"默认"当基线预测值处于其平均值时,指标系数作为边际附加效应。但是这种解释变得非常复杂,特别是随着群体数量的增加。

你也可以尝试使用从计量经济学中为随机效应和混合效应建模开发的机器,但它归结为许多相同的基于指标变量的技术,它也变得非常棘手,并且确保你和#39;正确建模错误的相关性(可能需要聚集的标准错误)。

坦率地说,我认为如果你有理由怀疑分层模型对贝叶斯方法有用,那么就完全忽略OLS方法。也许试着选择"无信息的先辈"对于你的元参数,除非那些先验可以基于以前的研究。然后只关注用于解释贝叶斯p值的标准方法,后验预测检查,测试样本准确度指标和贝叶斯可信区间。你可以用这种方式更好地花费精力体操来争论与混合效果模型的某些可解释性联系。