Domanda:
Perché includere alcune osservazioni due volte cambia i coefficienti di regressione logistica?
mahonya
2015-01-18 03:22:10 UTC
view on stackexchange narkive permalink

Quando duplico semplicemente un sottoinsieme di osservazioni e costruisco lo stesso modello di regressione logistica con i dati estesi, i coefficienti delle covariate cambiano. Se duplico l'intero set di dati, rimangono gli stessi.

Questo mi confonde perché tutte le covariate sono categoriali, quindi quando duplico un sottoinsieme, non sto fornendo alcuna nuova informazione. Viene ripetuta una serie di osservazioni con combinazioni di covariate; i risultati non stanno cambiando.

Ad esempio, ho modificato il set di dati di regressione logistica UCLA utilizzato in questo tutorial e ho creato un set di dati in cui tutte le covariate sono variabili discrete. Questo mi dà il set di dati che puoi vedere qui (file csv)

Quando eseguo la regressione logistica su di esso, ottengo:

  dff <- read.table ('d: /temp/ucla-factored.csv',sep =', ', header = TRUE) dff $ rank <- factor (dff $ rank) mylogit <- glm (ammette ~ gre + gpa + rank, data = dff, family = 'binomial') summary (mylogit) Call: glm (formula = admit ~ gre + gpa + rank, family = "binomial", data = dff) Deviance Residuals: Min 1Q Median 3Q Max -1.5149 -0.8971 -0.6672 1.1441 2.0587 Coefficienti: Std. Errore valore z Pr (> | z |) (Intercept) -0.7025 0.4144 -1.695 0.090046. gregre2 0,4024 0,3404 1,182 0,237190 gregre3 0,6130 0,3571 1,717 0,086038. gpagpa2 0.3115 0.3121 0.998 0.318350 gpagpa3 0.8551 0.3428 2.495 0.012609 * rankrank2 -0.6866 0.3166 -2.169 0.030101 * rankrank3 -1.3850 0.3439 -4.027 5.65e-05 *** rankrank4 -1.6000 0.4170 -3.837 0.000 .124 *** codici: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 (parametro di dispersione per la famiglia binomiale considerato 1) Devianza nulla: 499,98 su 399 gradi di libertà Devianza residua: 459,80 su 392 gradi di libertà AIC: 475,8 Numero di iterazioni di Fisher Scoring: 4  

Quindi scelgo le righe in cui gpa è gpa2 e le copio e le aggiungo al set di dati, fornendomi il file csv qui

La regressione logistica con questo set di dati esteso fornisce :

  dffbig <- read.table ('d: /temp/ucla-factoredbig.csv',sep =', ', header = TRUE) dffbig $ rank <- factor (dffbig $ rank) mylogitbig <- glm (admit ~ gre + gpa + rank, data = dffbig, family = 'binomial') summary (mylogitbig) Call: glm (formula = admit ~ gre + gpa + rank, family = "binomial", data = dffbig) Devianza Residui: Min 1Q Mediana 3Q Max -1,4775 -0,8931 -0,6533 1,1939 2,1207 Coefficienti: Std. Errore valore z Pr (> | z |) (Intercept) -0,8668 0,3786 -2,290 0,0220 * gregre2 0,5278 0,2814 1,875 0,0607. gregre3 0,7013 0,2964 2,366 0,0180 * gpagpa2 0,2992 0,2877 1,040 0,2985 gpagpa3 0,8481 0,3364 2,521 0,0117 * rankrank2 -0,5478 0,2600 -2,107 0,0351 * rankrank3 -1,3187 0,2873 -4,589 4,45e-06 *** rankrank4 5,74 -5,55 * --- Signif. codici: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 (parametro di dispersione per la famiglia binomiale considerato come 1) Devianza nulla: 727,61 su 587 gradi di libertà Deviazione residua: 672,97 su 580 gradi di libertà AIC: 688,97 Numero di iterazioni di Fisher Scoring: 4  

Perché? Fintanto che i risultati non sono diversi, perché osservare lo stesso pattern cambierebbe i parametri stimati di un modello?

Background: questo è correlato ai miei sforzi per creare un set di dati sintetici utilizzando solo un modello di regressione logistica esistente. Quando tutte le variabili sono categoriche, dovrei essere in grado di trovare tutte le possibili combinazioni di input e generare dati di input, ma le cose non vanno come previsto quando i dati sintetici vengono reinseriti nella regressione logistica perché la regressione logistica sembra includere più che mero distribuzioni di combinazioni di variabili discrete.

Pensi anche che replicare una porzione selezionata dei dati in una normale regressione dei minimi quadrati dovrebbe lasciarla invariata?In caso contrario, puoi applicare la tua intuizione direttamente alla regressione logistica, che in realtà non è diversa.
Grazie @whuber.Sto cercando di pensare a un livello semplice, supponendo che le generalizzazioni valgano: diciamo che ho un grafico a dispersione che rappresenta un modello di esempio in cui Y ~ X + e sto adattando una linea sul grafico a dispersione e avendo due istanze di alcuni puntiche sono già sullo scatterplot non dovrebbero cambiare nulla.O almeno così va il mio ragionamento.Se prendo ogni combinazione di input per una regressione logistica come un punto sullo scatterplot, lo stesso ragionamento dice che i coefficienti non dovrebbero cambiare;da qui la mia domanda.Forse non ho ricevuto completamente la tua domanda / suggerimento :)
"[...] avere due istanze di alcuni punti che sono già sullo scatterplot non dovrebbe cambiare nulla" - non cambierebbe l'aspetto dei punti, ma pensa alla linea di adattamento e a come è ponderata in base al numero di puntiin ogni posizione.
L'esempio più semplice di regressione è il modello $ \ mathbb {E} (Y) = \ beta_0 $ (è presente solo un termine costante).La stima OLS è la media dei dati.Cosa succede alla media quando si replicano alcuni dati?Cosa succede quando replichi * tutti * i dati?(Cosa succede all'errore standard della media quando si replicano tutti i dati, però?) Ciò che si impara da questi semplici esperimenti mentali si traduce (quasi invariato) nel modello lineare generalizzato e nella regressione multivariata.
Lo vedo ora @whuber Grazie, commento davvero perspicace.
Vedi https://stats.stackexchange.com/questions/216003/what-are-the-consequences-of-copying-a-data-set-for-ols/216011#216011
Una risposta:
Ben Kuhn
2015-01-18 04:23:09 UTC
view on stackexchange narkive permalink

Dici di avere la stessa intuizione (che i coefficienti non dovrebbero cambiare) per una regressione lineare, quindi risponderò alla tua domanda in quell'impostazione, perché la regressione lineare è un po 'più facile da visualizzare.

Penso che la cosa che sta causando la tua intuizione sbagliata qui è che stai immaginando che la duplicazione dei punti dati non cambia il grafico a dispersione. Ma lo fa! Potrebbe non essere facilmente visibile, a seconda del tipo di grafico a dispersione che utilizzi, ma è per questo che abbiamo cose come jitter. Il fenomeno dei diversi grafici a dispersione che hanno lo stesso aspetto perché i punti dati sono direttamente uno sopra l'altro è un problema (chiamato "overplotting"), perché fa sì che insiemi di dati fondamentalmente diversi abbiano lo stesso aspetto.

L'algoritmo di regressione non "vede" lo scatterplot stesso, vede i punti dati sottostanti. E quando replichi alcuni di questi punti dati, li rende più fortemente rappresentati nei dati sottostanti, quindi l'algoritmo di regressione li considera più importanti per "avere ragione" (Fondamentalmente, puoi pensare a ogni occorrenza di un punto dati come se tira la linea di regressione verso di esso con la stessa forza, quindi se hai due punti dati in un dato punto, tireranno la linea verso di loro due volte più forte.)

Darò un esempio visivo, usando il jitter per chiarire cosa "vede" effettivamente una regressione. Innanzitutto, ecco un set di dati composto da una sequenza ascendente e una discendente:

balanced plot

È simmetrico, quindi la linea di adattamento migliore sarebbe piatta fino a 5.5. Ma cosa succede se replica la sequenza decrescente 10 volte e utilizzo il jitter per far apparire visivamente lo scatterplot come se fosse l'algoritmo sottostante?

jittered plot

Ora sembra molto più come se la sequenza ascendente fosse solo valori anomali, giusto? E la linea di tendenza sta chiaramente diminuendo. (Funziona esattamente allo stesso modo con la regressione logistica, è solo più difficile renderlo chiaro da un grafico.)

Grazie Ben, la tua risposta e i commenti di @whuber's chiariscono perfettamente il mio malinteso.


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...