【发布时间】:2019-05-26 12:42:00
【问题描述】:
我想执行回归,并且我有一个带有左偏目标变量(谋杀)的数据集,如下所示:
data("USAArrests")
str(USAArrests)
'data.frame': 50 obs. of 4 variables:
$ Murder : num 13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ...
$ Assault : int 236 263 294 190 276 204 110 238 335 211 ...
$ UrbanPop: int 58 48 80 50 91 78 77 72 80 60 ...
$ Rape : num 21.2 44.5 31 19.5 40.6 38.7 11.1 15.8 31.9 25.8 ...
hist(USAArrests&Murder)
因为数据是左偏的。我可以对目标进行对数转换,以提高模型的性能。
train = USArrests[1:30,]
train$Murder = log(train$Murder)
test = USArrests[31:50,]
如果我想在测试集上应用此模型,则必须反转转换以获得实际结果。我可以通过exp 完成。
fit = lm(Murder~., data = train)
pred = predict(fit, test)
exp(pred)
但是,就我而言,对数转换不足以获得目标的正态分布。所以我使用了约翰逊变换。
library(bestNormalize)
train$Murder = yeojohnson(train$Murder)$x.t
是否有可能像上面的对数转换一样反转这种转换?
【问题讨论】:
-
从帮助页面的详细信息部分:可以通过
predict函数对新数据和反转执行此转换。我的重点。
标签: r transformation