我正在尝试使用 PyMC3 来实现具有分类变量及其交互作用的分层模型。在 R 中,公式将采用以下形式:
y ~ x1 + x2 + x1:x2
Run Code Online (Sandbox Code Playgroud)
然而,在教程https://pymc-devs.github.io/pymc3/GLM-hierarchical/#partial-pooling-hierarchical-regression-aka-the-best-of-both-worlds他们明确说 glm 没有还没有很好地使用分层建模。
那么我将如何添加 x1:x2 项呢?它会是一个具有两个分类父级(x1 和 x2)的分类变量吗?
您可以手动将交互项添加到您的线性模型中。您必须添加 3 个回归系数 (beta) 和一个截距。然后,您可以按如下方式估计 y 的可能性:
y = pm.Normal('regression',
mu=intercept + beta_x1 * data_x1 + beta_x2 * data_x2 + beta_interaction * data_x1 * data_x2,
sd=sigma,
observed=data_y)
Run Code Online (Sandbox Code Playgroud)
参数本身都可以具有构建层次模型的超先验。