0

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

我知道对于 OLS 结果,我可以简单地打印摘要:

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

这会给我一些统计数据,如 F 统计量、AIC、BIC 等。

据我所知,我无法为我的分层贝叶斯模型打印类似的摘要,但我不确定。

你有什么建议适合比较的统计数据以及我如何计算这些统计数据?

任何帮助都感激不尽!非常感谢!

4

1 回答 1

0

任何汇总统计比较的意义完全取决于您的推理目标。您是否使用该模型进行前瞻性预测,并关心预测准确性?或者您是否正在研究数据,试图量化回归系数以分析关系和效应大小?在不知道您的特定推理目标的情况下,没有孤立的、单一的方法来比较模型。

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

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

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

如果您更关心效应大小或对系数的解释性分析的讨论,那么您可以分别查看您为 OLS 参数获得的常客 (NHST) p 值,以及回归的标准误差(残差)。如果您关心频率统计显着性的概念,这些指标将为您提供该信息。

虽然您可以计算贝叶斯模型中系数的贝叶斯 p 值和可信(高密度)区间,但您必须小心不要直接将其与常客类似物进行比较。贝叶斯 p 值告诉您后验分布中结果的相对极端值,其中隐含地包括您对先验和模型结构的假设。一个常客 p 值告诉你一些关于假设零假设的结果的相对极端——这是另一回事,不等于后验分布。

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

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

在常客环境中很难为此创建一个直接的等价物。您可以为不同的组成员添加指标变量,然后尝试将其他系数解释为“默认”组中的基线效应,并将指标的系数解释为基线预测变量处于其平均值时的边际附加效应。但是这种解释变得非常复杂,尤其是当组的数量变得更大时。

您也可以尝试使用为随机效应和计量经济学的混合效应建模而开发的机制,但它归结为许多相同的基于指标变量的技术,而且解释和确保您正在建模也变得非常棘手正确关联错误(这可能需要聚集标准错误)。

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

于 2018-05-23T18:49:21.643 回答