Я хочу выполнить регрессию, и у меня есть набор данных с левой наклонной целевой переменной (Убийство), например:
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
Есть ли возможность отменить это преобразование, как преобразование логарифма, как описано выше?