Domanda:
Quando forzare l'intercetta di 0 nella regressione lineare è accettabile / consigliabile
Zack Newsham
2014-06-10 00:12:36 UTC
view on stackexchange narkive permalink

Dispongo di un modello di regressione per stimare il tempo di completamento di un processo, basato su vari fattori. Ho 200 prove di questi processi, in cui i 9 fattori misurati variano ampiamente. Quando eseguo una regressione lineare dei 9 fattori (e di tutte le interazioni a 2 e 3 fattori), senza alcuna intercettazione esplicita, ottengo un R $ {^ 2} $ aggiustato di 0,915, se forzo l'intercetta a 0 ottengo un aggiustato R $ {^ 2} $ di 0,953.

La mia intenzione di forzare l'intercetta a 0 era di garantire che le prove completate in tempi molto brevi (< 1 secondo) non portassero a previsioni di < 0. L'impostazione dell'intercetta su 0 non aiutava con questo.

Quindi la mia domanda è triplice. 1) Quando è accettabile / consigliabile forzare un'intercetta? 2) L'R $ {^ 2} $ migliorato significa effettivamente che il modello si adatta meglio (il grafico di adattato rispetto a quello misurato sembrava migliore)? 3) C'è un modo per garantire che i valori stimati siano tutti> 0?

Dovrai anche leggere: [Rimozione del termine di intercettazione di intercettazione statisticamente significativo aumento $ R ^ 2 $ nel modello lineare] (http://stats.stackexchange.com/q/26176/).
Ci sono diversi voti per chiudere questo thread come duplicato di uno di quelli a cui si fa riferimento nei commenti precedenti. Questi voti sono validi in base a (1) e persino (2), ma (3) sembra nuovo. Vorrei quindi suggerire agli intervistati di concentrarsi sulla terza domanda.
Le mie scuse per l'incrocio con altre domande, tuttavia ho trovato che le domande che cercavo, inclusa quella collegata, non riguardavano specifiche, ad esempio dove ti aspetti un valore sempre positivo, sono felice che l'attenzione si concentri sul terzo punto però, poiché questo è il più importante.
Otto risposte:
Glen_b
2014-06-10 04:06:55 UTC
view on stackexchange narkive permalink

È insolito non inserire un'intercetta e generalmente sconsigliabile: dovresti farlo solo se sai che è 0, ma penso che (e il fatto che non puoi confrontare $ R ^ 2 $ per accoppiamenti con e senza intercetta) è già ben e veramente coperto (se forse un po 'sopravvalutato nel caso dell'intercetta 0); Voglio concentrarmi sul tuo problema principale, che è che hai bisogno che la funzione adattata sia positiva, anche se torno al problema dell'intercetta 0 in parte della mia risposta.

Il modo migliore per ottenere sempre adattamento positivo è adattarsi a qualcosa che sarà sempre positivo; in parte ciò dipende dalle funzioni che devi adattare.

Se il tuo modello lineare era in gran parte conveniente (piuttosto che derivare da una relazione funzionale nota che potrebbe derivare da un modello fisico, diciamo), allora tu potrebbe invece funzionare con il tempo di log; il modello adattato è quindi garantito come positivo in $ t $. In alternativa, potresti lavorare con la velocità piuttosto che con il tempo, ma poi con gli adattamenti lineari potresti avere un problema con velocità piccole (tempi lunghi).

Se sai che la tua risposta è lineare nei predittori, puoi tentare di adattare una regressione vincolata, ma con la regressione multipla la forma esatta di cui hai bisogno dipenderà dalle tue x particolari (non esiste un vincolo lineare che funzionerà per tutti i $ x $), quindi è un bit ad-hoc.

Puoi anche guardare i GLM che possono essere usati per adattare i modelli che hanno valori adattati non negativi e possono (se necessario) anche avere $ E (Y) = X \ beta $ .

Ad esempio, si può adattare una gamma GLM con collegamento identità. Non dovresti finire con un valore adattato negativo per nessuna delle tue x (ma potresti forse avere problemi di convergenza in alcuni casi se forzi il collegamento di identità dove realmente non si adatta).

Ecco un esempio: il set di dati cars in R, che registra la velocità e le distanze di arresto (la risposta).

enter image description here

Si potrebbe dire "oh, ma la distanza per la velocità 0 è garantita essere 0, quindi dovremmo omettere l'intercetta" ma il problema con questo ragionamento è che il modello è specificato male in diversi modi e quell'argomento funziona solo bene abbastanza quando il modello non è specificato male - un modello lineare con 0 intercetta non si adatta affatto bene in questo caso, mentre uno con un'intercetta è in realtà un'approssimazione decente anche se in realtà non è "corretto".

Il problema è che, se si adatta una normale regressione lineare, l'intercetta adattata è piuttosto negativa, il che fa sì che i valori stimati siano negativi.

La linea blu è la vestibilità OLS; il valore adattato per i valori x più piccoli nel set di dati è negativo. La linea rossa è la gamma GLM con collegamento di identità: pur avendo un'intercetta negativa, ha solo valori adattati positivi. Questo modello ha una varianza proporzionale alla media, quindi se trovi che i tuoi dati sono più distribuiti con l'aumentare del tempo previsto, potrebbe essere particolarmente adatto.

Quindi questo è un possibile approccio alternativo che potrebbe valere la pena provare. È quasi facile come inserire una regressione in R.

Se non hai bisogno del collegamento di identità, potresti considerare altre funzioni di collegamento, come il collegamento di registro e il collegamento inverso, che si riferiscono alle trasformazioni già discusso, ma senza la necessità di una trasformazione effettiva.


Poiché le persone di solito lo chiedono, ecco il codice per il mio grafico:

  plot (dist ~ speed, data = cars, xlim = c (0, 30), ylim = c (-5,120)) abline (h = 0, v = 0, col = 8) abline (glm (dist ~ speed, data = cars, family = Gamma (link = identity)), col = 2 , lty = 2) abline (lm (dist ~ speed, data = cars), col = 4, lty = 2)  

(L'ellisse è stata aggiunta a mano in seguito, sebbene sia abbastanza facile da fare anche in R)

Grazie per la risposta, sono un po 'confuso sullo scopo delle funzioni Gamma e Abline, quando provo a eseguire lo stesso comando sui miei dati ottengo: "solo usando i primi due dei 130 coefficienti di regressione". Non dovrei che il mio modello sia più complicato di "dist ~ speed", ci sono 9 fattori e attualmente sto usando tutte e 3 le interazioni dei fattori. Quando provo a tracciare la funzione abline, ottengo solo una linea verticale a 0. Ho provato a semplificare il modello (e utilizzando il collegamento log) e ho anche ottenuto una linea quasi orizzontale, come interpreto questi dati usando il metodo sopra?
"abline" disegna una linea quando si specifica la pendenza (a) e l'intercetta (b). Se gli passi un semplice modello lineare adattato, li estrarrà da quello. Quando hai più predittori * non puoi disegnare una linea * (come funzionerebbe? Non hai adattato una linea). Stavo illustrando il mio suggerimento di utilizzare un GLM in modo che tu possa vedere cosa ha fatto, senza fornire una ricetta da seguire. Non so come sono organizzati i tuoi dati, quindi è difficile dare consigli su cosa è andato storto con il tuo adattamento. Adattare un GLM sarà quasi facile come inserire una regressione in quasi tutti i pacchetti di statistiche, se sei abituato a qualcos'altro, usalo.
kjetil b halvorsen
2014-06-10 00:30:50 UTC
view on stackexchange narkive permalink

Risposta breve alla domanda nel titolo: (quasi) MAI. Nel modello di regressione lineare $$ y = \ alpha + \ beta x + \ epsilon $$ , se imposti $ \ alpha = 0 $ , allora dici di SAPERE che il valore atteso di $ y $ dato $ x = 0 $ è zero. Non lo sai quasi mai.

$ R ^ 2 $ diventa più alto senza intercettazione, non perché il modello sia migliore, ma perché la definizione di $ R ^ 2 $ usato è un altro! $ R ^ 2 $ è un'espressione di un confronto del modello stimato con un modello standard, espresso come riduzione della somma dei quadrati rispetto alla somma dei quadrati con il modello standard . Nel modello con intercetta, la somma di confronto dei quadrati è intorno alla media. Senza intercettazione, è intorno allo zero! L'ultimo di solito è molto più alto, quindi è più facile ottenere una grande riduzione della somma dei quadrati.

Conclusione: NON LASCIARE L'INTERCETTAZIONE FUORI DAL MODELLO (a meno che tu non sappia veramente cosa stai facendo ).

MODIFICA (dai commenti sotto): un'eccezione è menzionata altrove nei commenti (ma questa è solo apparentemente un'eccezione, il vettore costante 1 si trova nello spazio della colonna della matrice di progettazione $ X $ . Altrimenti, come le relazioni fisiche $ s = vt $ dove non ci sono costanti. Ma anche in questo caso, se il il modello è solo approssimativo (la velocità non è realmente costante), potrebbe essere meglio lasciare una costante anche se non può essere interpretata. Con i modelli non lineari questo diventa più un problema.

Ma sicuramente avere dati che affermano che quando i 9 fattori sono così, il tempo effettivo è 0 (o vicino ad esso) significa che sono abbastanza sicuro che quando X = 0, Y = 0?
Nel tuo caso sai che i tempi di completamento non possono essere negativi, sì. Quindi un modello lineare forse non è appropriato? Prova qualche altro modello, forse un'analisi di sopravvivenza, o qualche GLM con una distribuzione sulla linea reale positiva (distribuzione Gamma, distribuzione Weibull ...)
Un'eccezione è menzionata altrove nei commenti (ma questa è solo apparentemente un'eccezione, il vettore constamt 1 è nello spazio colonna della matrice del regressore $ X $. Altrimenti, come le relazioni fisiche $ s = vt $ dove non ci sono costanti Ma anche in questo caso, se il modello è solo approssimativo (la velocità non è realmente costante), potrebbe essere meglio lasciare una costante anche se non può essere interpretata.Con i modelli non lineari questo diventa più un problema.
Nel calcolare R ^ 2, il modello di confronto è sempre intorno alla media, mai intorno allo zero, indipendentemente dal fatto che il modello contenga intercetta o meno.Quindi, la tua argomentazione sulla riduzione più facile dell'errore è falsa.
AdamO
2014-06-10 00:27:24 UTC
view on stackexchange narkive permalink

1) Non è mai accettabile sopprimere un'intercetta tranne in tipi molto rari di modelli DiD in cui il risultato e i predittori sono effettivamente differenze calcolate tra i gruppi (questo non è il tuo caso).

2). Diamine no, non lo fa. Ciò significa che potresti avere un grado più elevato di validità interna (ad esempio il modello si adatta ai dati) ma probabilmente un basso grado di validità esterna (ad esempio il modello sarebbe scarsa nell'adattamento dei dati sperimentali ottenuti in condizioni simili). Questa è generalmente una cosa negativa.

3) Sopprimere l'intercetta non lo farà necessariamente, ma presumo che il predittore sia stato valutato in modo continuo. In molte situazioni, i tempi di completamento del processo vengono analizzati utilizzando una trasformata inversa, ad es. $ x = 1 / t $ dove $ t $ è il tempo impiegato per completare un processo. L'inverso della media dei dati trasformati inversi è chiamato media armonica e rappresenta il tempo medio di completamento per un'attività.

$$ \ mbox {HM} = \ frac {1} {\ mathbb {E} (x)} = \ frac {1} {\ mathbb {E} (1 / t)} $$

Puoi anche utilizzare un esponenziale parametrico o modelli gamma o weibull time-to-event, che sono tipi di modelli costruiti specificamente per prevedere i tempi di completamento. Questi daranno risultati molto simili ai risultati della trasformazione inversa.

Penso che sia un po 'forte affermare che non puoi ** mai ** sopprimere un'intercetta. Cosa succede se si desidera / è necessario codificare $ k $ gruppi fittizi invece del più usuale $ k-1 $?
Stimi ancora gli effetti di $ k $ nell'esempio che citi. La domanda di OP è una questione di effetti 2 contro 1 (* avec * intercetta contro * sans * intercetta, predittore continuo).
user777: Sì, ma funziona solo in casi molto specifici. Ad esempio, se hai classificazioni incrociate in due gruppi, il tuo trucco non funziona.
@AdamO Stai davvero dicendo che l'unica eccezione che elenchi in (1) è l'unica possibile eccezione a "mai", o intendi che è l'unica di cui sei a conoscenza?
@Glen_b Non riesco davvero a pensare a un buon esempio in cui una specifica di intercettazione attraverso l'origine ha senso altrimenti. Anche in situazioni molto pratiche, come l'analisi della distanza di arresto o le composizioni chimiche dopo aver applicato un catalizzatore a un substrato, le intercettazioni che si adattano attraverso origini diverse da zero possono aiutare a gestire errori di misurazione, problemi di calibrazione, problemi di temporizzazione, ecc. Ecc. Negli anni in cui ho fatto analisi, ho sempre visto ragioni per adattarsi alle intercettazioni anche quando i valori che assumono non hanno senso.
Sembra che allora non abbiamo alcun disaccordo sostanziale.
@Glen_b pensa a questo proposito, se l'intercetta si interseca con valori non coerenti con la scienza del problema e ha il 95% CI che * non * include valori * coerenti * con la scienza del problema, che * pendenza * fanno ti fidi di più? Quella che non è influenzata dal valore effettivo dell'intercetta (poiché stimata) o quella che viene distorta da un valore non realistico che non è mai stato misurato ed estrapolato sulla base di ragionamenti e ipotesi forti che la linea deve intersecarsi (0, 0 ).
@Glen_b Sono d'accordo. Penso che ci siano denominazioni diverse in materia, mi capita solo di essere di una varietà particolarmente zelante :)
PA6OTA
2014-06-10 09:10:38 UTC
view on stackexchange narkive permalink

1) È consigliabile forzare l'intercettazione di $ 0 $ se sai per certo che è 0. Qualunque cosa tu sappia a priori , dovresti usarla nel tuo modello.

Uno esempio è il modello di Hubble per l'espansione dell'Universo (usato in Statistical Sleuth ):

$$ \ mbox {Galaxy Speed} = k (\ mbox {Distance from Earth}) $$

Questo modello è piuttosto grezzo, ma utilizza l'intercetta 0 come conseguenza della teoria del Big Bang: al tempo $ 0 $ tutta la questione è in un posto.

Dall'altro il modello che stai descrivendo richiederà probabilmente un termine di intercettazione.

2) Potresti o meno migliorare $ R ^ 2_ {adj} $, oppure potresti accettare ipotesi nulla per il test per l'intercept è 0, ma entrambi non sono motivi per rimuovere il termine di intercettazione.

3) Per garantire la positività delle risposte, a volte puoi trasformare la variabile di risposta. Log o sqrt potrebbero funzionare a seconda dei tuoi dati, ovviamente dovrai controllare i residui.

Questo è un caso molto speciale!La maggior parte delle applicazioni non sono così.
Christoph Hanck
2015-12-29 18:31:18 UTC
view on stackexchange narkive permalink

Ha senso (in realtà, è necessario) omettere l'intercetta nella seconda fase del test di cointegrazione Engle / Granger. Il test stima innanzitutto una relazione di cointegrazione candidata tramite una regressione di una variabile dipendente su una costante (più a volte una tendenza) e le altre variabili non stazionarie.

Nella seconda fase, i residui di quella regressione vengono testati per una radice unitaria per verificare se l'errore rappresenta effettivamente una relazione di equilibrio. Poiché la prima fase di regressione contiene una costante, i residui sono medi zero per costruzione. Quindi, il test della radice unitaria della seconda fase non necessita di una costante e infatti, la distribuzione limite per quel test della radice unitaria viene derivata assumendo che questa costante non sia stata effettivamente adattata.

IrishStat
2014-06-10 14:38:07 UTC
view on stackexchange narkive permalink

L'unico modo che conosco per vincolare tutti i valori adattati a essere maggiori di zero è utilizzare un approccio di programmazione lineare e specificarlo come vincolo.

Non così. La regressione di Poisson e qualsiasi modello lineare generalizzato con log link restituiranno tutti i valori previsti positivi. @Glen_b ha già sottolineato questo punto nella sua risposta.
@Nick ... Di sicuro ... Poiché le variabili di Poisson sono limitate da 0, è così. Grazie ...
Ricardo Marques
2016-09-23 21:04:13 UTC
view on stackexchange narkive permalink

Il vero problema è che una regressione lineare che forza l'intercetta = 0 è un'incongruenza matematica che non dovrebbe mai essere eseguita:

È chiaro che se y = a + bx, allora media (y) = a + media (x), e in effetti possiamo facilmente renderci conto che quando stimiamo aeb usando la stima lineare in Excel, otteniamo la relazione sopra

Tuttavia, se facciamo arbitrariamente a = 0, allora necessariamente b = media (y) / media (x). Ma questo non è coerente con l'algoritmo dei minimi quadrati. In effetti, puoi facilmente capire che quando stimi b usando la stima lineare in Excel, la relazione di cui sopra non è soddisfatta

Il tuo argomento sembra andare in pezzi quando in realtà è il caso che $ a = 0 $, perché allora non c'è "incoerenza matematica", impostare $ a $ a zero non è arbitrario e non ci sono problemi con i minimi quadrati.
Curious
2014-06-10 17:29:41 UTC
view on stackexchange narkive permalink

Ha praticamente senso nei modelli con covariata categoriale. In questo caso la rimozione dell'intercetta produce un modello equivalente con una parametrizzazione solo diversa:

  > data (mtcars) > mtcars $ cyl_factor <- as.factor (mtcars $ cyl) > summary ( lm (mpg ~ cyl_factor, data = mtcars)) Chiamata: lm (formula = mpg ~ cyl_factor, data = mtcars) Residui: Min 1Q Mediana 3Q Max -5.2636 -1.8357 0.0286 1.3893 7.2364 Coefficienti: Std. Errore valore t Pr (> | t |) (Intercept) 26.6636 0.9718 27.437 < 2e-16 *** cyl_factor6 -6.9208 1.5583 -4.441 0.000119 *** cyl_factor8 -11.5636 1.2986 -8.905 8.57e-10 *** --- Signif . codici: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 Errore standard residuo: 3,223 su 29 gradi di libertà R quadrato multiplo: 0,7325 R quadrato rettificato: 0,714 Statistica F: 39.7 su 2 e 29 DF, valore p: 4.979e-09 Riepilogo > (lm (mpg ~ 0 + cyl_factor, data = mtcars)) Call: lm (formula = mpg ~ 0 + cyl_factor, data = mtcars) Residui: Min 1Q Mediana 3Q Max -5,2636 -1,8357 0,0286 1,3893 7,2364 Coefficienti: Std. Errore valore t Pr (> | t |) cyl_factor4 26.6636 0.9718 27.44 < 2e-16 *** cyl_factor6 19.7429 1.2182 16.21 4.49e-16 *** cyl_factor8 15.1000 0.8614 17.53 < 2e-16 *** --- Signif. codici: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 Errore standard residuo: 3,223 su 29 gradi di libertà R quadrato multiplo: 0,9785, R quadrato aggiustato: 0,9763 Statistica F: 440.9 su 3 e 29 DF, valore p: < 2.2e-16  

Il secondo esempio infatti fa sì che la variabile categoriale sia un'intercetta specifica della categoria, quindi in realtà l'intercetta non è effettivamente rimosso, sembra proprio così.

Questo si collega davvero alla domanda? Non stai semplicemente forzando un'intercetta a zero nel secondo modello, ma chiedendo a R di utilizzare la somma per zero anziché la codifica a livello di riferimento per un predittore categoriale.
In effetti è al contrario: "Né spesso ha senso nei modelli con covariate categoriali: se provi un codice che penseresti forzerebbe l'intercetta a zero, R presumerà che tu voglia semplicemente reparametrizzare il modello". sarebbe giusto.
Entrambi giocate solo con le parole. La solita interpretazione di "0 +" o "-1" in "lm" consiste nel rimuovere l'intercetta * globale *, cosa che in realtà fa. BTW, dico esattamente la stessa cosa che fate entrambi nell'ultima frase della mia risposta, quindi non capisco davvero perché qualcuno abbia svalutato.
(Sono una persona, e il votante negativo.) "+ 0" può fare ** due cose completamente diverse **. Se codifichi manualmente $ x_1 $ e $ x_2 $ dummies per `cyl` come 0 o 1, utilizzarlo * forzerà * l'intercetta a zero e si adatterà al modello a due parametri $ \ operatorname {E} Y = \ beta_1 x_1 + \ beta_2 x_2 $. Ma se a R è stato detto che "cyl_factor" è categorico, diventa intelligente e si adatta al modello a tre parametri che descrivi. Quindi "rimuovere l'intercetta" è ambiguo. Ora so tutto questo e tu sai tutto questo, ma IMO la risposta non è chiara - potenzialmente fuorviante - per qualcuno che non lo sa.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...