Trasformazione di variabili per regressione multipla in R


26

Sto cercando di eseguire una regressione multipla in R. Tuttavia, la mia variabile dipendente ha il seguente diagramma:

DV

Ecco una matrice scatterplot con tutte le mie variabili ( WARè la variabile dipendente):

SPLOM

So che devo eseguire una trasformazione su questa variabile (e forse sulle variabili indipendenti?) Ma non sono sicuro dell'esatta trasformazione richiesta. Qualcuno può indicarmi la giusta direzione? Sono felice di fornire ulteriori informazioni sulla relazione tra le variabili indipendenti e dipendenti.

La grafica diagnostica della mia regressione è la seguente:

Grafici diagnostici

MODIFICARE

Dopo aver trasformato le variabili dipendenti e indipendenti utilizzando le trasformazioni Yeo-Johnson, i grafici diagnostici si presentano così:

Dopo la trasformazione

Se uso un GLM con un log-link, i grafici diagnostici sono:

GLM con log-link


3
Ciao @ zglaa1 e benvenuto. Perché pensi di dover trasformare le variabili? Il primo passo sarebbe quello di adattare la regressione con le varibales originali e quindi guardare l'adattamento (residui ecc.). I residui dovrebbero essere distribuiti approssimativamente normalmente, non le variabili. Forse troverai questo post interessante.
COOLSerdash,

Grazie per il collegamento e il suggerimento. Ho eseguito la mia regressione e so che le variabili devono essere trasformate in base al seguente diagramma: i.imgur.com/rbmu14M.jpg Riesco a vedere imparzialità e mancanza di variabilità costante nei residui. Inoltre, non sono normali.
zgall1,

@COOLSerdash Ho dato un'occhiata al link. Ho un background di base in statistica quindi capisco la discussione. Tuttavia, il mio problema è che ho un'esperienza limitata nell'applicazione effettiva delle tecniche che ho imparato, quindi faccio fatica a capire cosa devo fare esattamente con i miei dati (in Excel o R) per eseguire effettivamente le trasformazioni necessarie.
zgall1,

Grazie per la grafica. Hai assolutamente ragione dicendo che questa misura non è ottimale. Potresti per favore produrre una matrice scatterplot con DV e IV nella regressione? Questo può essere fatto Rcon il comando pairs(my.data, lower.panel = panel.smooth)dove my.datasarebbe il tuo set di dati.
COOLSerdash,

2
lmboxcox(my.lm.model)MASSλ

Risposte:


30

Il libro di John Fox Un compagno R per la regressione applicata è un'eccellente risorsa sulla modellazione della regressione applicata con R. Il pacchetto carche 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)

RlmboxCoxcarλ (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:

Box-Cox lambdaplot

La migliore stima di λλ

Per trasformare subito la tua variabile dipendente, usa la funzione yjPowerdal carpacchetto:

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, x2ecc. 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 boxTidwelldal carpacchetto (per il documento originale vedere qui ). Usalo così: boxTidwell(y~x1+x2, other.x=~x3+x4). La cosa importante qui è che l'opzione other.xindica 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λincomeredditonew=1/redditoold

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 gampuoi specificare quali predittori vuoi adattare usando le spline usando la s()funzione:

my.gam <- gam(y~s(x1) + x2, family=gaussian())

qui, x1verrebbe adattato usando una spline e x2linearmente 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 gamas in glm.

Dai un'occhiata a questo post dal sito.


1
Buona spiegazione Non so che Box-Cox esplicito sia davvero il metodo più comune per scegliere una trasformazione. Se conti le persone che scelgono semplicemente i registri, la mia ipotesi è che sia un metodo di minoranza. Quel punto esigente non influenza nient'altro, naturalmente.
Nick Cox,

@NickCox Grazie (+1 per la tua risposta, a proposito). L'affermazione che Box-Cox è il metodo più comune viene dal libro di John Fox. L'ho preso per il valore nominale in quanto non ho abbastanza esperienza per giudicare l'affermazione. Rimuoverò la dichiarazione.
COOLSerdash,

Grazie mille per la spiegazione dettagliata. Proverò ad applicarlo ai miei dati ora.
zgall1,

@COOLSerdash Usando la tua dettagliata procedura dettagliata, ho applicato la trasformazione Box Cox alle mie variabili dipendenti e quindi indipendenti e ho il seguente diagramma delle mie variabili diagnostiche: i.imgur.com/eO01djl.jpg Chiaramente, c'è un miglioramento ma sembra ancora che essere problemi con costante variabilità e imparzialità e c'è sicuramente un problema con la normalità. Dove posso andare da qui?
zgall1,

1
@ zgall1 Grazie per il tuo feedback, lo apprezzo. Hm, sì, le trasformazioni non sembrano aver aiutato molto :). A questo punto, probabilmente proverei ad usare le spline per i predittori usando modelli additivi generalizzati (GAM) con il mgcvpacchetto e gam. Se questo non aiuta, sono alla fine del mio ingegno, temo. Qui ci sono persone che hanno molta più esperienza di me e forse possono darti ulteriori consigli. Inoltre non sono informato con il baseball. Forse esiste un modello più logico che ha senso con questi dati.
COOLSerdash l'

8

Dovresti dirci di più sulla natura della tua variabile di risposta (risultato, dipendente). Dal tuo primo diagramma è fortemente distorto positivamente con molti valori vicini allo zero e alcuni negativi. Da ciò è possibile, ma non inevitabile, che la trasformazione ti aiuterebbe, ma la domanda più importante è se la trasformazione renderebbe i tuoi dati più vicini a una relazione lineare.

Si noti che i valori negativi per la risposta escludono la trasformazione logaritmica diretta, ma non il log (risposta + costante) e non un modello lineare generalizzato con collegamento logaritmico.

Ci sono molte risposte su questo sito che parlano del registro (risposta + costante), che divide le persone statistiche: ad alcune persone non piace che sia ad hoc e con cui è difficile lavorare, mentre altre lo considerano un dispositivo legittimo.

È ancora possibile un GLM con collegamento log.

In alternativa, è possibile che il tuo modello rifletta un qualche tipo di processo misto, nel qual caso un modello personalizzato che rifletta più da vicino il processo di generazione dei dati sarebbe una buona idea.

(DOPO)

L'OP ha una variabile WAR dipendente con valori che vanno all'incirca da circa 100 a -2. Per superare i problemi con l'assunzione di logaritmi di valori zero o negativi, OP propone un fudge di zeri e negativi a 0,000001. Ora su una scala logaritmica (base 10) tali valori vanno da circa 2 (circa 100) a -6 (0,000001). La minoranza di punti sfumati su scala logaritmica è ora una minoranza di enormi valori anomali. Traccia log_10 (WAR sfumato) contro qualsiasi altra cosa per vederlo.


Come potresti capire dal grafico a dispersione pubblicato sopra, sto usando un set di dati statistici sul baseball. La variabile indipendente, WAR, è essenzialmente una misura cumulativa del valore apportato da un giocatore nel corso della sua carriera a livello di campionato maggiore. Le variabili indipendenti, AdjSLG, SOPct e BBPct sono statistiche minori della lega che si pensa comunemente preveda il successo a livello di lega maggiore. La variabile Age è l'età in cui il giocatore ha prodotto le statistiche della lega minore. Le variabili fittizie vengono utilizzate per indicare il livello minore della lega a cui sono state prodotte le statistiche.
zgall1,

Per quanto riguarda il problema della variabile indipendente negativa (WAR), per ragioni un po 'complesse, è ragionevole ricodificare quelli come zero se ciò rende più semplice il processo di trasformazione. Nell'ambito di questo set di dati, si tratta di una procedura giustificabile. Se vuoi che io entri più in dettaglio (attenzione - è richiesto il gergo del baseball), sono felice di farlo.
zgall1,

1
Sembra che WAR sia la tua variabile dipendente . Fornisci prove per la mia affermazione, contestata altrove su questo sito, che i due termini sono spesso confusi. Il mio consiglio non è di ricodificare i valori negativi in ​​zeri (non esegue il maltrattamento dei dati) ma di utilizzare un GLM con collegamento al registro. Si prega di assumere zero interesse o conoscenza delle minuzie di baseball dalla mia parte.
Nick Cox,

Hai ragione sul fatto che WAR è la mia variabile dipendente. Esaminerò un GLM con collegamento al registro. Grazie per il consiglio.
zgall1,

1
Potrebbe essere utile sapere come viene calcolata la carriera WAR allora (ovvero capire il processo di generazione dei dati).
Affine,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.