如何从GAMLSS对象执行逆序orderNorm转换(bestNormalize软件包)?

3
我的y变量(n=30,000)具有非常重的尾部分布(正负都有),因此fitDist GAMLSS函数选择了ST4家族。
我尝试使用一个解释变量x(pb平滑)进行基于GAMLSS的回归评估,但是y的尾部太重,即使重新拟合后(时间耗费+++),50个循环后仍无法收敛。
因此,我使用orderNorm转换(bestNormalize包)对y进行标准化,这样可以轻松快速地达到收敛,并从GAMLSS对象预测拟合值。
然而,这些已拟合的“orderNormalized”值是GAMLSS对象,因此无法使用bestNormalize中的预测函数进行反演(因为后者似乎无法识别GAMLSS对象)。
我的问题是:无论使用什么方法,是否可能将GAMLSS对象的拟合值应用于反演orderNorm转换?

一个例子会很有帮助。我认为下面发布的答案并不有用,因为问题中没有给出任何示例。 - Brigitte
2个回答

2

有时候使用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获得的归一化对象对这些预测进行预测。


谢谢Brigitte!诀窍在于“type”,默认设置为“link”(请参见gamlss包中的“predict.gamlss”函数),但我们必须将其设置为“response”。 - denis

0

bestNormalize的小插曲提供了一个类似的例子,使用lm代替GAMLSS。请参阅vignette的应用部分。一旦您运行了归一化过程,就应该能够使用predict函数重复和反转转换。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接