如何从 GAMLSS object 进行反向 orderNorm 转换(bestNormalize 包)?

How to do an inverse orderNorm transformation (bestNormalize package) from a GAMLSS object?

我的 y 变量 (n=30,000) 分布有非常重的尾巴(正负),fitDist GAMLSS 函数为此选择了 ST4 系列。

我试图用解释变量 x(pb 平滑)来评估 GAMLSS-based 回归,但是 y 的尾巴太重以至于在 50 个循环后无法收敛,即使改装后 (time consuming+++).

因此,我使用 orderNorm 转换(bestNormalize 包)对 y 进行归一化,这样可以轻松快速地达到收敛,然后从 GAMLSS 预测拟合值object.

然而,这些拟合的“orderNormalized”值是 GAMLSS object,因此不能使用来自 bestNormalize 的预测函数进行反演(因为后者似乎无法识别GAMLSS object).

我的问题:是否可以通过任何方式对 GAMLSS object 的拟合值应用逆 orderNorm 变换?

vignette for bestNormalize 有一个类似的例子,使用 lm 而不是 GAMLSS。请参阅小插图的应用部分。一旦你有了 运行 规范化程序,你应该能够使用 predict 函数重复和反转转换。

关键是将转换对象存储为 R 对象,然后可以将其输入 predict(或者更确切地说,predict.bestNormalize)函数。

使用predict函数很容易混淆,所以我在这里列出没有代码的步骤(因为问题中没有示例):

1) transposeObj = orderNorm(data$outputvariable)
2) fitObj = gamlls(transposeObj$x.t ~., data)
3) pred   = predict(fitObj, type = 'response')
4) inversedpredictions = predict(transposeObj, newdata = pred, inverse = TRUE)

在纯文本中,您对数据进行归一化,拟合模型,使用拟合进行预测,然后使用从 orderNorm 获得的归一化对象对预测进行预测。