Puoi aggiungere termini polinomiali alla regressione lineare multipla?


8

Sono un po 'confuso su quando dovresti o non dovresti aggiungere termini polinomiali a un modello di regressione lineare multipla. So che i polinomi sono usati per catturare la curvatura nei dati, ma sembra sempre avere la forma di:

y=x1+x2+x12+x22+x1x2+c

E se sapessi che esiste una relazione lineare tra e , ma una relazione non lineare tra e ? Puoi usare un modello sotto forma di:yx1yx2

y=x1+x2+x22+c

Immagino che la mia domanda sia: è valido eliminare il termine e il termine oppure è necessario seguire la forma generica di un modello di regressione polinomiale?x12x1x2


5
Solo per completezza nota che se hai nel modello devi avere anche . Cerca in questo sito il principio di marginalità per maggiori informazioni. So che non hai suggerito di farlo, ma le informazioni potrebbero essere utili. x2x
mdewey,

È davvero strano vedere qualcosa come e chiamarlo un modello di regressione lineare, ma sicuramente lo è. Ricorda che ha a che fare con la linearità nei coefficienti. Suggerisco il video di Mathematical Monk su questo: m.youtube.com/watch?v=rVviNyIR-fI . Quindici minuti potrebbero sembrare un po 'da dedicare a questo, ma non dimenticherai mai che la regressione lineare può comportare un comportamento non lineare. Forse come una domanda all'OP: un modello di regressione lineare? y=ax+bx2y=ax+bx2
Dave,

@mdewey, la tua affermazione è troppo generica per essere corretta e / o sensata in tutte le impostazioni. Posso facilmente immaginare un modello ben definito con ma senza . Ad esempio casi in cui il processo di generazione dei dati è o dove è dove (e ) o dove il modello è semplicemente la migliore approssimazione (rispetto a quella che include ) a qualunque processo di generazione dei dati stiamo affrontando. x2xy=β0+β1x2+εy=β0+β1z+εx=zz>0x
Richard Hardy,

Risposte:


14

Oltre all'eccellente risposta di @ mkt, ho pensato di fornirti un esempio specifico da vedere in modo da poter sviluppare alcune intuizioni.

Genera dati per esempio

Per questo esempio, ho generato alcuni dati usando R come segue:

set.seed(124)

n <- 200
x1 <- rnorm(n, mean=0, sd=0.2)
x2 <- rnorm(n, mean=0, sd=0.5)

eps <- rnorm(n, mean=0, sd=1)

y = 1 + 10*x1 + 0.4*x2 + 0.8*x2^2 + eps

Come puoi vedere da quanto sopra, i dati provengono dal modello , dove è un termine di errore casuale normalmente distribuito con media e varianza sconosciuta . Inoltre, , , e , mentre . y=β0+β1x1+β2x2+β3x22+ϵϵ0σ2β0=1β1=10β2=0.4β3=0.8σ=1

Visualizza i dati generati tramite Coplot

Dati i dati simulati sulla variabile di risultato y e le variabili predittive x1 e x2, possiamo visualizzare questi dati usando coploti :

library(lattice)

coplot(y ~ x1 | x2,  
       number = 4, rows = 1,
       panel = panel.smooth)

coplot(y ~ x2 | x1,  
       number = 4, rows = 1,
       panel = panel.smooth)

I coplot risultanti sono mostrati di seguito.

Il primo coplot mostra i grafici a dispersione di y rispetto a x1 quando x2 appartiene a quattro diversi intervalli di valori osservati (che si sovrappongono) e migliora ciascuno di questi grafici a dispersione con un adattamento regolare, possibilmente non lineare, la cui forma è stimata dai dati.

inserisci qui la descrizione dell'immagine

Il secondo coplot mostra i grafici a dispersione di y contro x2 quando x1 appartiene a quattro diversi intervalli di valori osservati (che si sovrappongono) e migliora ciascuno di questi grafici a dispersione con un adattamento uniforme.

inserisci qui la descrizione dell'immagine

Il primo coplot suggerisce che è ragionevole supporre che x1 abbia un effetto lineare su y quando si controlla per x2 e che questo effetto non dipende da x2.

Il secondo coplot suggerisce che è ragionevole supporre che x2 abbia un effetto quadratico su y quando si controlla per x1 e che questo effetto non dipende da x1.

Montare un modello correttamente specificato

I coploti suggeriscono di adattare il seguente modello ai dati, che consente un effetto lineare di x1 e un effetto quadratico di x2:

m <- lm(y ~ x1 + x2 + I(x2^2))  

Costruisci grafici residui Component Plus per il modello correttamente specificato

Una volta che il modello specificato correttamente è stato adattato ai dati, possiamo esaminare il componente più i grafici residui per ciascun predittore incluso nel modello:

library(car)

crPlots(m)

Questi componenti più i grafici residui sono mostrati di seguito e suggeriscono che il modello è stato correttamente specificato poiché non mostrano alcuna evidenza di non linearità, ecc. In effetti, in ciascuno di questi grafici, non vi è alcuna evidente discrepanza tra la linea blu tratteggiata che suggerisce un effetto lineare di il predittore corrispondente e la linea di magenta solido suggeriscono un effetto non lineare di quel predittore nel modello.

inserisci qui la descrizione dell'immagine

Montare un modello specificato in modo errato

Giochiamo all'avvocato del diavolo e diciamo che il nostro modello lm () è stato in realtà erroneamente specificato (cioè, erroneamente specificato), nel senso che ha omesso il termine quadratico I (x2 ^ 2):

m.mis <-  lm(y ~ x1 + x2)

Costruisci grafici residui Component Plus per il modello specificato in modo errato

Se dovessimo costruire componenti oltre a grafici residui per il modello non specificato, vedremmo immediatamente un suggerimento di non linearità dell'effetto di x2 nel modello non specificato:

crPlots(m.mis)

In altre parole, come visto di seguito, il modello non specificato non è riuscito a catturare l'effetto quadratico di x2 e questo effetto si manifesta nel componente più il diagramma residuo corrispondente al predittore x2 nel modello non specificato.

inserisci qui la descrizione dell'immagine

La mancata specificazione dell'effetto di x2 nel modello m.mis sarebbe evidente anche quando si esaminano i grafici dei residui associati a questo modello rispetto a ciascuno dei predittori x1 e x2:

par(mfrow=c(1,2))
plot(residuals(m.mis) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m.mis) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

Come visto di seguito, la trama dei residui associati a m.mis contro x2 mostra un chiaro schema quadratico, suggerendo che il modello m.mis non è riuscito a catturare questo modello sistematico.

inserisci qui la descrizione dell'immagine

Aumenta il modello erroneamente specificato

Per specificare correttamente il modello m.mis, dovremmo aumentarlo in modo che includa anche il termine I (x2 ^ 2):

m <- lm(y ~ x1 + x2 + I(x2^2)) 

Ecco i grafici dei residui rispetto a x1 e x2 per questo modello correttamente specificato:

par(mfrow=c(1,2))
plot(residuals(m) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

Si noti che il modello quadratico precedentemente visto nel diagramma dei residui rispetto a x2 per il modello errato m.mis ora è scomparso dal diagramma dei residui rispetto a x2 per il modello m correttamente specificato.

Si noti che l'asse verticale di tutti i grafici dei residui rispetto a x1 e x2 mostrati qui deve essere etichettato come "Residuo". Per qualche ragione, R Studio interrompe quell'etichetta.

inserisci qui la descrizione dell'immagine


11

Sì, quello che stai suggerendo va bene. È perfettamente valido in un modello per trattare la risposta a un predittore come lineare e un diverso come polinomiale. Va anche del tutto bene supporre che non vi siano interazioni tra i predittori.


1
Ciao. Solo un dubbio associato. Se entrambi e sono regressori, e dire è strettamente positiva, ci sarebbe problema multicollinearità? È possibile che i coefficienti abbiano errori standard più grandi? xx2x
Dayne,

@Dayne Buona domanda! Questo è un problema che è discusso bene qui e qui
mkt - Reinstate Monica il

1
@mkt Questi collegamenti offrono approcci totalmente separati rispetto all'idea di Ingolifs sui polinomi ortogonali. Qualche idea sull'approccio polinomiale ortogonale?
Dave,

1
@Dave Non ne so molto, temo. Potrebbe essere utile porre una nuova domanda sul confronto degli approcci.
mkt - Ripristina Monica il

7

Dovresti aver cura di usare i polinomi ortogonali se vuoi aggiungere termini polinomiali.

Perché? Senza di loro hai un problema a somigliare alla colinearità . In alcune regioni, sembrerà abbastanza simile a , e una parabola farà un lavoro decente per adattare una linea retta.x2x

Osservare:

inserisci qui la descrizione dell'immagine

Questi sono polinomi di .x,x2,x3

Tra 0 e 1,5 tutte e tre le curve aumentano monotonicamente e mentre si curvano in modo diverso l'una dall'altra, daranno adattamenti di qualità simili quando x è correlato positivamente con y. Usando tutti e tre nel tuo codice

y ~ x + x^2 + x^3

stai essenzialmente usando forme ridondanti per adattarti ai tuoi dati.

I polinomi ortogonali essenzialmente ti danno ulteriore spazio di manovra durante il montaggio, e ogni polinomio è essenzialmente indipendente dagli altri.

inserisci qui la descrizione dell'immagine

Tre polinomi di grado 1,2 e 3 generati dalla funzione poli () in R.

Forse invece di pensarli esplicitamente come polinomi, invece li pensi come "componenti di tendenza" o qualcosa del genere:

x rappresenta "più è sempre meglio" (o peggio se il coefficiente è negativo). Se stavi facendo una regressione sulla qualità della musica contro il campanaccio , avresti bisogno di questo componente.

x2 rappresenta una specie di zona di riccioli d'oro. Se si stesse facendo una regressione sulla gastronomia rispetto alla quantità di sale, questo componente sarebbe saliente.

x3 è probabilmente improbabile che sia un componente dominante da solo (l'unico esempio mi veniva in mente è quanto la gente know vs Quanto credono di sapere ), ma la sua presenza sarà influenzare la forma e la simmetria della ed termini.xx2

Ci sono molti calcoli difficili nei polinomi ortogonali, ma per fortuna devi solo sapere due cose:

  1. I polinomi ortogonali sono ortogonali solo su una determinata regione. L'esempio che ho dato riguarda polinomi che sono solo ortogonali tra 0 e 1,5.
  2. Se stai usando R, usa la funzione poly () per creare i tuoi polinomi. poli (x, n) dove n è il grado del polinomio più alto. Li renderà ortogonali per te sul dominio dei tuoi dati .x

2
Questo è estremamente interessante e non qualcosa che avevo sentito prima. Hai un riferimento che dice che questo è necessario o utile, tuttavia? E utile per la previsione o l'inferenza dei parametri? E conosci un comando Python per "poli"?
Dave,

Varie sfaccettature della regressione polinomiale ortogonale sono state affrontate qui e qui e molto altro.
Jason,

Ottima risposta, e grazie per averlo pubblicato meglio del post che avevo in mente. :)
Jason,

1
@Ingolifs: questa è la migliore spiegazione dei polinomi ortogonali che ho letto finora su questo sito! Concordo con Dave sul fatto che sarebbe utile commentare nella tua risposta l'utilità dei polinomi ortogonali per la previsione o l'inferenza dei parametri.
Isabella Ghement,

1
+1 ma fai attenzione polyperché se provi a predictfarlo rimetterai i polinomi sul campione di predizione; cioè otteniamo spazzatura.
usεr11852,

0

Non esiste una regola che dice che devi usare tutte le tue variabili. Se stai cercando di prevedere le entrate e le tue variabili caratteristiche sono SSN, anni di scolarizzazione ed età e desideri eliminare l'SSN perché ti aspetti che qualsiasi correlazione tra esso e le entrate sia falsa, è questa la tua decisione di giudizio. Un modello non è invalido semplicemente perché ci sono altre variabili che teoricamente avresti potuto includere, ma non hai. Decidere quali termini polinomiali includere è solo una delle molte decisioni relative alla selezione delle funzionalità.

Mentre i modelli polinomiali spesso iniziano con l'inserimento di tutti i termini, è solo per consentire a tutti di valutare quanto stanno aggiungendo al modello. Se sembra che un termine particolare sia per lo più semplicemente inadeguato, può essere lasciato cadere nelle successive iterazioni del modello. La regolarizzazione, come la regressione del lazo, può far cadere automaticamente le variabili meno utili. In generale, è meglio iniziare un modello che ha troppe variabili e ridurlo a quelle più utili, piuttosto che iniziare solo con le variabili su cui si pensa che il modello debba fare affidamento e possibilmente perdere una relazione non mi aspettavo.

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.