Probabilità massima di informazioni complete per i dati mancanti in R


18

Contesto : regressione gerarchica con alcuni dati mancanti.

Domanda : Come posso utilizzare la stima della massima verosimiglianza con le informazioni complete (FIML) per affrontare i dati mancanti in R? Esiste un pacchetto che consiglieresti e quali sono i passaggi tipici? Anche le risorse e gli esempi online sarebbero di grande aiuto.

PS : Sono uno scienziato sociale che di recente ha iniziato a utilizzare R. L'imputazione multipla è un'opzione, ma mi piace molto il modo in cui programmi come Mplus gestiscono i dati mancanti utilizzando FIML. Sfortunatamente Mplus non sembra confrontare i modelli nel contesto della regressione gerarchica al momento (per favore fatemi sapere se conoscete un modo per farlo!). Mi chiedevo se ci fosse qualcosa di simile in R? Grazie molto!


1
Hai considerato WinBugs ? Gestisce i dati mancanti in un modo meravigliosamente naturale.
Mike Dunlavey,

Un'alternativa a WinBUGS è OpenBUGS o STAN. Questi dovrebbero essere più compatibili con Mac.
Maxim.K

Risposte:


15

Il merito di questa risposta va a @Joshua, che ha dato una risposta fantastica quando ho pubblicato questa domanda alla community di R e Statistics su Google+. Sto semplicemente incollando la sua risposta qui sotto.

Per eseguire la regressione (senza modellazione di variabili latenti), leggi le mie note digitate dopo il testo tra virgolette.

La gestione dei dati mancanti con la massima verosimiglianza su tutti i dati disponibili (il cosiddetto FIML) è una tecnica molto utile. Tuttavia, ci sono una serie di complicazioni che rendono difficile implementare in modo generale. Prendi in considerazione un semplice modello di regressione lineare, che prevede alcuni risultati continui di età, sesso e tipo di occupazione. In OLS, non ti preoccupare della distribuzione di età, sesso e occupazione, solo il risultato. In genere per i predittori categorici, sono codificati fittizi (0/1). Per utilizzare ML, sono necessarie ipotesi distributive per tutte le variabili con mancanza. Di gran lunga l'approccio più semplice è il multivariato normale (MVN). Questo è ciò che, ad esempio, Mplus farà per impostazione predefinita se non esci per dichiarare il tipo di variabile (ad esempio, categoriale). Nel semplice esempio che ho dato, probabilmente vorrai assumere, normale per età, Bernoulli per sesso e multinomale per tipo di lavoro. Quest'ultimo è complicato perché ciò che hai in realtà sono diverse variabili binarie, ma non vuoi trattarle come Bernoulli. Ciò significa che non si desidera lavorare con le variabili codificate fittizie, è necessario lavorare con la variabile categoriale effettiva in modo che gli stimatori ML possano utilizzare correttamente un multinomiale, ma questo a sua volta significa che il processo di codifica fittizia deve essere integrato nel modello , non i dati. Ancora una volta complicando la vita. Inoltre, la distribuzione congiunta di variabili continue e categoriche non è banale da calcolare (quando incontro problemi come questo in Mplus, inizia abbastanza rapidamente a rompersi e lottare). Infine, puoi davvero idealmente specificare il meccanismo di dati mancante. In stile SEM, FIML, tutte le variabili sono essenzialmente condizionate su tutte le altre, ma ciò non è necessariamente corretto. Ad esempio, forse l'età manca in funzione del genere e del tipo di occupazione, ma della loro interazione. L'interazione potrebbe non essere importante per il risultato focale, ma se è importante per la mancanza di età, allora deve anche essere nel modello, non necessariamente nel modello di interesse sostanziale ma nel modello di dati mancanti.

lavaan utilizzerà ML per MVN, ma attualmente credo che le opzioni di dati categoriali siano limitate (sempre dal campo SEM, questo è standard). All'inizio l'imputazione multipla sembra meno elegante perché rende esplicite molte ipotesi nascoste dietro FIML (come ipotesi distributive per ogni variabile e il modello predittivo assunto per mancanza su ogni variabile). Tuttavia, ti dà molto controllo e pensa esplicitamente alla distribuzione di ciascuna variabile e il meccanismo ottimale di dati mancanti per ciascuna è prezioso.

Sto diventando sempre più convinto che i modelli bayesiani siano il modo per gestire i dati mancanti. Il motivo è che sono molto flessibili nell'includere le distribuzioni per ciascuna variabile, consentendo molti tipi diversi di distribuzioni e possono facilmente incorporare la variabilità introdotta dai dati mancanti sui predittori, nelle stime globali del modello (che è il trucco con imputazione multipla in cui tu quindi in qualche modo combinare i risultati). Naturalmente, questi metodi non sono i più semplici e possono richiedere molto allenamento e tempo per essere utilizzati.

Quindi questo non risponde davvero alla tua domanda, ma spiega un po 'perché i quadri completamente generali per affrontare la mancanza sono difficili. Nel mio pacchetto semutils per le matrici di covarianza, uso sotto lavaan per usare ML. Lo faccio perché presumo per una matrice di covarianza di varianza che stai usando comunque variabili continue in modo che presumo che i miei utenti stiano già assumendo MVN per i loro dati.

Ciò significa che se tutte le variabili con mancanza sono continue, lavaan , un pacchetto di modellazione di equazioni strutturali (SEM) è un valido da usare per FIML in R.

Ora torno alla mia domanda iniziale. La mia intenzione era quella di avere una soluzione magica per la mancanza durante l'esecuzione della regressione lineare. Tutte le mie variabili mancanti erano belle e continue. Quindi ho proceduto ad eseguire le mie analisi in due stili:

  • Il solito modo con imputazione multipla
  • In stile SEM con lavaan usando FIML.

Mi mancavano molte cose facendo regressione in stile SEM. Entrambi gli stili hanno dato coefficienti e quadrati R simili, ma in stile SEM non ho ottenuto il test di significatività della regressione (i valori F tipici con df), invece ho ottenuto indici di adattamento che non erano utili poiché avevo usato tutti i miei gradi di libertà. Inoltre, quando un modello aveva un R2 più grande di un altro, non riuscivo a trovare un modo per confrontare se la differenza fosse significativa. Inoltre, fare la regressione nel solito modo consente di accedere a una serie di test per ipotesi di regressione che sono inestimabili. Per una risposta più dettagliata su questo problema, vedi la mia altra domanda a cui ha risposto bene @StasK .

Quindi la conclusione sembra essere che lavaan sia un pacchetto decente per FIML in R, tuttavia l'uso di FIML dipende da ipotesi statistiche e dal tipo di analisi che si sta conducendo. Per quanto riguarda la regressione (senza modellazione a variabile latente), tenerla fuori dai programmi SEM e usare l'imputazione multipla è probabilmente una mossa saggia.



-3

ci sono 2 modi principali per gestire dati / record mancanti. O elimini l'intera riga di osservazione che ha un valore mancante o trovi un modo per generare questo valore mancante. Se segui il primo approccio, potresti perdere molti dati. Nel secondo approccio, è necessario trovare un modo "intelligente" per generare questi dati mancanti, in modo tale che le stime dei parametri del nuovo set di dati non siano molto diverse dalle stime dei parametri del set di dati osservato.

Questo secondo approccio si chiama imputazione dei dati e ci sono diversi pacchetti R che lo fanno. Uno di questi si chiama mclust e la funzione di cui hai bisogno si chiama imputeData. Questa funzione utilizza l'algoritmo EM (massimizzazione delle aspettative) per stimare i parametri della parte non osservata del set di dati, data la parte osservata. Una volta trovati i parametri, vengono generati i nuovi punti dati. L'ipotesi di distribuzione dei dati mancanti, dei dati osservati e dell'intero set di dati è considerata gaussiana.

Spero che questa spiegazione ti aiuti a raggiungere quello che stai cercando di fare


Grazie. Sono a conoscenza di pacchetti per imputazione multipla, ma vorrei vedere se esiste un modo relativamente semplice per eseguire la stima della massima verosimiglianza.
Sootica,

La funzione di probabilità non è definita per quando manca il campione, x. Quindi penso che potresti cercare qualcosa che non esiste.
Lalas,

2
Vedi questo documento per una spiegazione sull'utilizzo degli approcci della massima verosimiglianza ai dati mancanti ( Allison, 2012 ). Ciò che l'OP descrive esiste.
Andy W,

2
Ed ecco qualcosa di SAS al riguardo. support.sas.com/documentation/cdl/en/statug/63347/HTML/default/… Non ho mai visto nulla in R.
Jeremy Miles

Grazie @JeremyMiles, ho appena pubblicato ciò che mi ha aiutato a rispondere a questa domanda, pensando che anche altri potrebbero trovarlo utile. PS. Il libro R che hai scritto con Andy Field è fantastico !! : D
Sootica
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.