Vorrei condividere alcuni dei miei pensieri quando si tenta di migliorare il tempo di adattamento del modello di un modello di effetti misti lineare in R
utilizzando il pacchetto lme4
.Funzione lsm accelerazione in R
Dimensione del set di dati: Il set di dati è composto da circa 400.000 righe e 32 colonne. Sfortunatamente, nessuna informazione può essere condivisa sulla natura dei dati.
Presupposti e assegni: Si presume che la variabile di risposta provenga da una distribuzione normale. Prima del processo di adattamento del modello, le variabili sono state testate per collinearità e multicollinearità utilizzando le tabelle di correlazione e la funzione alias
fornita in R.
Le variabili continue sono state ridimensionate per favorire la convergenza.
Struttura modello: L'equazione del modello contiene 31 effetti fissi (compresa l'intercetta) e 30 effetti casuali (l'intercettazione non è inclusa). Gli effetti casuali sono randomizzati per una variabile fattore specifica che ha 2700 livelli. La struttura di covarianza è Variance Components poiché si presume che esista un'indipendenza tra gli effetti casuali.
Modello esempio equazione:
lmer(Response ~ 1 + Var1 + Var2 + ... + Var30 + (Var1-1| Group) + (Var2-1| Group) + ... + (Var30-1| Group), data=data, REML=TRUE)
Modello è stato installato con successo, tuttavia, ci sono voluti circa 3,1 ore per fornire risultati. Lo stesso modello in SAS ha richiesto alcuni secondi. C'è la letteratura disponibile sul web su come ridurre il tempo utilizzando l'algoritmo di ottimizzazione non lineare nloptwrap
e turnining fuori dal tempo di calcolo derivato che viene eseguita dopo l'ottimizzazioni è finito calc.derivs = FALSE
:
https://cran.r-project.org/web/packages/lme4/vignettes/lmerperf.html
volta è stato ridotto del 78%.
Domanda: C'è un altro modo alternativo per ridurre il tempo di adattamento del modello definendo gli ingressi del parametro lmer
di conseguenza? C'è così tanta differenza tra R e SAS in termini di tempo di adattamento del modello.
Qualsiasi suggerimento è apprezzato.
La mia prima mossa sarebbe quella di sottocampionare il set di dati (righe) e adattarlo. –
Ciao @Roman Luštrik. Devo ottenere stime dei coefficienti utilizzando l'intero set di dati. – mammask
Penso che gli algoritmi utilizzati in 'lmer' e SAS proc mixed siano diversi, anche se dovresti ottenere @benbolker per confermare. Potresti anche esaminare il [codice sorgente] (https://github.com/lme4/lme4/tree/master/src) –