我正在尝试将简单的贝叶斯回归模型拟合到一些右偏数据。以为我会尝试将家庭设置为对数正态分布。我正在使用 pymc3 包装器 BAMBI。有没有办法建立一个对数正态分布的自定义家庭?
2 回答
这取决于您希望模型的平均函数看起来像什么。
如果你想要一个像
那么是的,这很容易实现,只需对 Y 进行对数变换,然后用正态响应估计通常的线性模型。请注意,在此模型中,Y 是预测变量 X 的指数函数,因此当绘制 Y 与 X(均未转换)时,回归线可以向上或向下弯曲。它还具有乘法误差项,因此对于较大的预测 Y 值,方差更大。我们可以说这样的模型具有对数链接功能和对数正态响应。
但是如果你想要一个像
那么不,bambi*目前不支持这种模型。这是一个具有对数正态响应但具有身份链接功能的模型。Y 在 X 上的回归是一条直线,但误差在 X 上的每个点处具有相同的对数正态分布,因此对于较大的预测 Y 值,方差不会增加。请注意,这是一个我个人从未实际使用过的不寻常模型。
* 理论上可以推出您自己的自定义系列(尽管它需要一些轻微的黑客攻击),但在 bambi 中设计的方式最终取决于statsmodels.genmod中实现的系列,目前不包括对数正态。
除非我误解了某些东西,否则我认为您需要做的就是link='log'
在fit()
通话中指定。如果你的假设是正确的,那么指数线性预测将是正态分布的,并且默认的误差分布是高斯分布,所以我认为你不需要为此建立一个自定义族——带有日志链接的默认高斯族应该可以正常工作. 但是,如果这不能解决您的问题,请随时澄清。