Обратное преобразование Джонсона - PullRequest
0 голосов
/ 26 мая 2019

Я хочу выполнить регрессию, и у меня есть набор данных с левой наклонной целевой переменной (Убийство), например:

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)

enter image description here

Поскольку данные перекошены влево.Я могу сделать логарифмическое преобразование цели, чтобы улучшить производительность модели.

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

Есть ли возможность отменить это преобразование, как преобразование логарифма, как описано выше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...