Книга Джона Фокса « Супутник R прикладній регресії» є чудовим ресурсом для моделювання прикладної регресії R
. Пакет, car
який я використовую протягом цієї відповіді, - це супровідний пакет. У книзі також є веб-сайт із додатковими розділами.
Трансформація відповіді (він же залежить від змінної, результат)
Перетворення Box-Cox пропонують можливий спосіб вибору трансформації відповіді. Після встановлення вашої моделі регресії, що містить неперетворені змінні, з R
функцією lm
, ви можете використовувати функцію boxCox
з car
пакету для оцінки (тобто параметра потужності) за максимальною вірогідністю. Оскільки ваша залежна змінна не є строго позитивним, Box-Cox перетворення не буде працювати , і ви повинні вказати опцію , щоб використовувати перетворення Yeo-Джонсона (див оригінальну статтю тут і цю відповідну посаду ):λfamily="yjPower"
boxCox(my.regression.model, family="yjPower", plotit = TRUE)
Це створює сюжет на зразок наступного:
Найкраща оцінка - це значення, яке максимально збільшує профіль, який у цьому прикладі становить приблизно 0,2. Зазвичай оцінка округляється до знайомого значення, яке все ще перебуває в межах 95% інтервалу впевненості, таких як -1, -1/2, 0, 1/3, 1/2, 1 або 2.λλλ
Щоб трансформувати залежну змінну зараз, використовуйте функцію yjPower
з car
пакета:
depvar.transformed <- yjPower(my.dependent.variable, lambda)
У функції lambda
має бути округлена яку ви знайшли перед використанням . Потім знову підходимо до регресії з перетвореною залежною змінною.λboxCox
Важливо: Замість того, щоб просто перетворити журнал на перетворення залежної змінної, вам слід розглянути можливість підключення GLM до log-посилання. Ось декілька посилань, які надають додаткову інформацію: перша , друга , третя . Для цього R
використовуйте glm
:
glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))
де y
ваша залежна змінна і x1
, і x2
т.д. ваші незалежні змінні.
Трансформації предикторів
Трансформації строго позитивних предикторів можна оцінити за максимальною ймовірністю після трансформації залежної змінної. Для цього скористайтеся функцією boxTidwell
з car
упаковки (про оригінальний папір див. Тут ). Використовуйте його так: boxTidwell(y~x1+x2, other.x=~x3+x4)
. Тут важливим є те, що варіант other.x
вказує умови регресії, які не підлягають трансформації. Це були б усі ваші категоричні змінні. Функція створює вихід у такій формі:
boxTidwell(prestige ~ income + education, other.x=~ type + poly(women, 2), data=Prestige)
Score Statistic p-value MLE of lambda
income -4.482406 0.0000074 -0.3476283
education 0.216991 0.8282154 1.2538274
income
λincome
дохідн е ш= 1 / дохідo l d--------√
Ще один дуже цікавий пост на сайті про трансформацію незалежних змінних - це цей .
Недоліки перетворень
1 / у√λλ
Моделювання нелінійних зв’язків
Два досить гнучких способу пристосування нелінійних співвідношень - це дробові многочлени та сплайни . Ці три статті пропонують дуже хороший вступ до обох методів: першого , другого та третього . Існує також ціла книга про дробові многочлени та R
. У R
пакетіmfp
реалізовано багатовимірні дробові многочлени. Ця презентація може бути інформативною щодо дробових многочленів. Для встановлення сплайнів ви можете використовувати функцію gam
(узагальнені моделі добавок, див. Тут для відмінного ознайомлення з R
) із пакетуmgcv
або функційns
(природні кубічні сплайни) та bs
(кубічні B-сплайни) з упаковки splines
(див. тут приклад використання цих функцій). Використовуючи gam
ви можете вказати, які предиктори, які ви хочете встановити за допомогою сплайнів за допомогою s()
функції:
my.gam <- gam(y~s(x1) + x2, family=gaussian())
тут x1
би встановлювались за допомогою сплайна і x2
лінійно, як у звичайній лінійній регресії. Всередині gam
ви можете вказати сімейство розповсюдження та функцію посилання, як в glm
. Таким чином , щоб відповідати моделі з функцією логарифмічною зв'язку, ви можете вказати опцію family=gaussian(link="log")
в gam
якості в glm
.
Погляньте на цю публікацію з сайту.