Книга Джона Фокса Компаньон R в прикладной регрессии является отличным источником информации о прикладном регрессионном моделировании R
. Пакет, car
который я использую в этом ответе, является прилагаемым пакетом. Книга также имеет как веб-сайт с дополнительными главами.
Преобразование ответа (он же зависимая переменная, результат)
R
lm
boxCox
car
λfamily="yjPower"
boxCox(my.regression.model, family="yjPower", plotit = TRUE)
Это создает сюжет, подобный следующему:
Лучшая оценка λλ
Чтобы преобразовать вашу зависимую переменную сейчас, используйте функцию yjPower
из car
пакета:
depvar.transformed <- yjPower(my.dependent.variable, lambda)
В функции lambda
должно быть округленоλboxCox
Важное замечание: Вместо того, чтобы просто лог-преобразовать зависимую переменную, вы должны рассмотреть возможность установки GLM с лог-ссылкой. Вот некоторые ссылки, которые предоставляют дополнительную информацию: первый , второй , третий . Для этого 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
доходn e w= 1 / доходо л г--------√
Еще один очень интересный пост на сайте о преобразовании независимых переменных это одна .
Недостатки преобразований
Хотя логически преобразованные зависимые и / или независимые переменные можно интерпретировать относительно легко , интерпретация других, более сложных преобразований менее интуитивна (по крайней мере, для меня). Как бы вы, например, интерпретировали коэффициенты регрессии после того, как зависимые переменные были преобразованы1 / у√λλ
Моделирование нелинейных отношений
Два довольно гибких метода для подбора нелинейных отношений - это дробные полиномы и сплайны . Эти три статьи предлагают очень хорошее введение в оба метода: первый , второй и третий . Существует также целая книга о дробных полиномах и R
. В R
пакетеmfp
реализует MultiVariable дробных многочленов. (естественные кубические сплайны) и (кубические B-сплайны) из пакета (см.Эта презентация может быть информативной в отношении дробных полиномов. Для подгонки сплайнов вы можете использовать функцию gam
(обобщенные аддитивные модели, см. Здесь отличное введение R
) из пакетаmgcv
или функцийns
bs
splines
здесь пример использования этих функций). Используя, gam
вы можете указать, какие предикторы вы хотите использовать, используя сплайны, используя s()
функцию:
my.gam <- gam(y~s(x1) + x2, family=gaussian())
здесь, x1
будет соответствовать сплайну и x2
линейно, как в обычной линейной регрессии. Внутри gam
вы можете указать семейство рассылки и функцию связи, как в glm
. Таким образом , чтобы соответствовать модели с функцией логарифмической связи, вы можете указать опцию family=gaussian(link="log")
в gam
качестве в glm
.
Посмотрите на этот пост с сайта.