O livro de John Fox Um companheiro R para regressão aplicada é um excelente recurso na modelagem de regressão aplicada com R
. O pacote car
que utilizo nesta resposta é o pacote que o acompanha. O livro também tem como site com capítulos adicionais.
Transformando a resposta (aka variável dependente, resultado)
R
lm
boxCox
car
λfamily="yjPower"
boxCox(my.regression.model, family="yjPower", plotit = TRUE)
Isso produz um gráfico como o seguinte:
λλ
Para transformar sua variável dependente agora, use a função yjPower
do car
pacote:
depvar.transformed <- yjPower(my.dependent.variable, lambda)
lambda
λboxCox
Importante: Em vez de apenas transformar a variável dependente em log, considere ajustar um GLM com um link de log. Aqui estão algumas referências que fornecem informações adicionais: primeiro , segundo , terceiro . Para fazer isso R
, use glm
:
glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))
onde y
é a variável dependente e x1
, x2
etc. são as suas variáveis independentes.
Transformações de preditores
As transformações de preditores estritamente positivos podem ser estimadas pela máxima probabilidade após a transformação da variável dependente. Para fazer isso, use a função boxTidwell
da car
embalagem (para o documento original, veja aqui ). Use-o assim: boxTidwell(y~x1+x2, other.x=~x3+x4)
. O importante aqui é que a opção other.x
indica os termos da regressão que não devem ser transformados. Essas seriam todas as suas variáveis categóricas. A função produz uma saída do seguinte formato:
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
incomenew=1/incomeold−−−−−−−−√
Outro post muito interessante no site sobre a transformação das variáveis independentes é este .
Desvantagens das transformações
1/y√λλ
Modelando relacionamentos não lineares
Dois métodos bastante flexíveis para ajustar relações não lineares são polinômios fracionários e splines . Esses três artigos oferecem uma introdução muito boa aos dois métodos: primeiro , segundo e terceiro . Há também um livro inteiro sobre polinômios fracionários e R
. O R
pacotemfp
implementa polinômios fracionários multivariáveis. Esta apresentação pode ser informativa sobre polinômios fracionários. Para ajustar splines, você pode usar a função gam
(modelos aditivos generalizados, consulte aqui uma excelente introdução R
) do pacotemgcv
ou das funçõesns
(splines cúbicos naturais) e bs
(splines B cúbicos) do pacote splines
(veja aqui um exemplo do uso dessas funções). Usando gam
você pode especificar quais preditores você deseja ajustar usando splines usando a s()
função:
my.gam <- gam(y~s(x1) + x2, family=gaussian())
aqui, x1
seria ajustado usando um spline e x2
linearmente como em uma regressão linear normal. Dentro, gam
você pode especificar a família de distribuição e a função de link como em glm
. Então, para ajustar um modelo com uma função de log-link, você pode especificar a opção family=gaussian(link="log")
em gam
como em glm
.
Dê uma olhada neste post do site.