Il libro di John Fox Un compagno R per la regressione applicata è un'eccellente risorsa sulla modellazione della regressione applicata con R
. Il pacchetto car
che uso in questa risposta è il pacchetto di accompagnamento. Il libro ha anche come sito Web con capitoli aggiuntivi.
Trasformare la risposta (nota anche come variabile dipendente, risultato)
R
lm
boxCox
car
λ (ovvero il parametro di potenza) con la massima probabilità. Poiché la tua variabile dipendente non è strettamente positiva, le trasformazioni Box-Cox non funzioneranno e devi specificare l'opzione family="yjPower"
per utilizzare le trasformazioni Yeo-Johnson (vedi il documento originale qui e questo post correlato ):
boxCox(my.regression.model, family="yjPower", plotit = TRUE)
Questo produce una trama come la seguente:
La migliore stima di λλ
Per trasformare subito la tua variabile dipendente, usa la funzione yjPower
dal car
pacchetto:
depvar.transformed <- yjPower(my.dependent.variable, lambda)
lambda
λboxCox
Importante: anziché limitarsi a trasformare il log nella variabile dipendente, è necessario considerare di adattare un GLM con un log-link. Ecco alcuni riferimenti che forniscono ulteriori informazioni: primo , secondo , terzo . Per fare questo R
, usa glm
:
glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))
dove y
è la tua variabile dipendente e x1
, x2
ecc. sono le tue variabili indipendenti.
Trasformazioni di predittori
Le trasformazioni di predittori strettamente positivi possono essere stimate con la massima probabilità dopo la trasformazione della variabile dipendente. Per fare ciò, utilizzare la funzione boxTidwell
dal car
pacchetto (per il documento originale vedere qui ). Usalo così: boxTidwell(y~x1+x2, other.x=~x3+x4)
. La cosa importante qui è che l'opzione other.x
indica i termini della regressione che non devono essere trasformati. Questa sarebbe tutte le tue variabili categoriali. La funzione produce un output nella forma seguente:
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
redditon e w= 1 / redditoo l d--------√
Un altro post molto interessante sul sito sulla trasformazione delle variabili indipendenti è questo .
Svantaggi delle trasformazioni
1 / y√λλ
Modellazione di relazioni non lineari
Due metodi abbastanza flessibili per adattarsi alle relazioni non lineari sono i polinomi frazionari e le spline . Questi tre articoli offrono un'ottima introduzione a entrambi i metodi: primo , secondo e terzo . C'è anche un intero libro sui polinomi frazionari e R
. Il R
pacchettomfp
implementa polinomi frazionari multivariabili. Questa presentazione potrebbe essere informativa per quanto riguarda i polinomi frazionari. Per adattarsi alle spline, è possibile utilizzare la funzione gam
(modelli di additivi generalizzati, vedere qui per un'introduzione eccellente con R
) dal pacchettomgcv
o dalle funzionins
(spline cubiche naturali) e bs
( spline cubiche B) dal pacchetto splines
(vedere qui un esempio dell'uso di queste funzioni). Usando gam
puoi specificare quali predittori vuoi adattare usando le spline usando la s()
funzione:
my.gam <- gam(y~s(x1) + x2, family=gaussian())
qui, x1
verrebbe adattato usando una spline e x2
linearmente come in una normale regressione lineare. All'interno gam
è possibile specificare la famiglia di distribuzione e la funzione di collegamento come in glm
. Pertanto, per adattare un modello con una funzione log-link, è possibile specificare l'opzione family=gaussian(link="log")
in gam
as in glm
.
Dai un'occhiata a questo post dal sito.