Dati longitudinali: serie temporali, misure ripetute o qualcos'altro?


10

In parole povere: ho una regressione multipla o un modello ANOVA ma la variabile di risposta per ogni individuo è una funzione curvilinea del tempo.

  • Come posso sapere quale delle variabili del lato destro sono responsabili di differenze significative nelle forme o negli offset verticali delle curve?
  • È un problema di serie temporali, un problema di misure ripetute o qualcos'altro?
  • Quali sono le migliori pratiche per l'analisi di tali dati (preferibilmente in R, ma sono aperto all'utilizzo di altri software)?

In termini più precisi: diciamo che ho un modello ma è in realtà una serie di punti dati raccolti dal stesso individuo in molti punti temporali , che sono stati registrati come una variabile numerica. Tracciare i dati mostra che per ogni singolo è una funzione quadratica o ciclica del tempo il cui offset, forma o frequenza verticale (nel caso ciclico) potrebbe dipendere in modo significativo dalle covariate. Le covariate non cambiano nel tempo, ovvero un individuo ha un peso corporeo costante o un gruppo di trattamento per la durata del periodo di raccolta dei dati.yijk=β0+β1xi+β2xj+β3xixj+ϵkyijkktyijkt

Finora ho provato i seguenti Rapprocci:

  1. Manova

    Anova(lm(YT~A*B,mydata),idata=data.frame(TIME=factor(c(1:10))),idesign=~TIME); 
    

    ... dov'è YTuna matrice le cui colonne sono i punti temporali, 10 di questi in questo esempio, ma molto di più nei dati reali.

    Problema: questo considera il tempo come un fattore, ma i punti temporali non corrispondono esattamente a ciascun individuo. Inoltre, ce ne sono molti relativi alla dimensione del campione, quindi il modello viene saturato. Sembra che la forma della variabile di risposta nel tempo venga ignorata.

  2. Modello misto (come in Pinheiro e Bates, modelli ad effetto misto in S e S-Plus )

    lme(fixed=Y~ A*B*TIME + sin(2*pi*TIME) + cos(2*pi*TIME), data=mydata, 
        random=~(TIME + sin(2*pi*TIME) + cos(2*pi*TIME))|ID), method='ML')
    

    ... dove IDè un fattore che raggruppa i dati per individuo. In questo esempio la risposta è ciclica nel tempo, ma potrebbero invece esserci termini quadratici o altre funzioni del tempo.

    Problema: non sono sicuro se ogni termine sia necessario (specialmente per termini quadratici) e quali siano interessati da quali covariate.

    • È stepAIC()un buon metodo per selezionarli?
    • Se rimuove un termine dipendente dal tempo, lo rimuoverà anche randomdall'argomento?
    • Che cosa succede se utilizzo anche una funzione di autocorrelazione (come corEXP()) che accetta una formula correlationnell'argomento - dovrei creare quella formula per corEXP()la stessa di quella in randomo solo ~1|ID?
    • Il nlmepacchetto viene raramente menzionato nel contesto di serie storiche al di fuori di Pinheiro e Bates ... non è considerato adatto a questo problema?
  3. Adattare un modello quadratico o trigonometrico a ciascun individuo, quindi utilizzare ciascun coefficiente come variabile di risposta per regressione multipla o ANOVA.

    Problema: sono necessarie correzioni multiple del confronto. Non riesco a pensare ad altri problemi che mi rendono sospettoso di trascurare qualcosa.

  4. Come precedentemente suggerito su questo sito ( Qual è il termine per una regressione di serie temporali con più di un predittore? ), Ci sono ARIMAX e modelli di regressione dinamica / funzione di trasferimento .

    Problema: i modelli basati su ARMA prevedono tempi discreti, vero? Per quanto riguarda la regressione dinamica, ne ho sentito parlare per la prima volta oggi, ma prima di approfondire l'ennesimo nuovo metodo che potrebbe non riuscire dopo tutto, ho pensato che sarebbe prudente chiedere consiglio alle persone che lo hanno già fatto.


5
@ f1r3br4and Potrebbe essere utile aggiungere alcuni dettagli su quali sono esattamente i tuoi dati? Vale a dire, quanti casi misurati in quanti punti temporali? I casi sono in condizioni diverse? o qualcosa di diverso?
Jeromy Anglim,

Hai perso il tuo account? In tal caso, ti preghiamo di registrarne uno nuovo, possibilmente con il tuo indirizzo Gmail in modo che io possa facilmente trovare cosa unire.

1
@ f-tussel e @ jeromy-anglim: i dati sono varie misurazioni non invasive raccolte da animali di laboratorio nel corso della loro vita naturale, spesso associate a informazioni statiche come genotipo, sesso o il tipo di dieta con cui vengono alimentate. Per "molti" punti intendo da 20 a diverse centinaia. Non sto solo analizzando un set di dati, ma sto imparando come analizzare un tipo di dati che sta diventando molto comune nel mio gruppo. I modelli misti con fattori all'interno del gruppo sono consigliati solo per campioni di dimensioni inferiori?
f1r3br4nd

Risposte:


5

Come ha detto Jeromy Anglim, sarebbe utile conoscere il numero di punti temporali che hai per ogni individuo; come hai detto "molti" mi sarei azzardato che l' analisi funzionale potrebbe essere una valida alternativa. Potresti voler controllare il pacchetto R fda e guardare il libro di Ramsay e Silverman .


L'analisi funzionale sembra promettente a lungo termine, ma sembra che ci sarà abbastanza una curva di apprendimento prima di essere fiducioso di non ottenere risultati insignificanti o distorti. Quindi, mentre mi sto aggiornando su questo, gli nlmeapprocci più familiari (voci 2 e 3 nel PO) sono almeno validi per l'uso sui dati per il momento?
f1r3br4nd

2

Da quando originariamente ponevo questa domanda, sono giunto alla conclusione che i modelli a effetti misti con soggetti come fattore di blocco casuale sono la soluzione pratica a questo problema, ovvero l'opzione n. 2 nel mio post originale. Se l' randomargomento to lmeè impostato su ~1|ID(dove IDidentifica le osservazioni provenienti dallo stesso soggetto del test), viene adattato un modello di intercettazione casuale. Se è impostato su ~TIME|IDallora, viene montato un modello di inclinazione e intercettazione casuale. Qualsiasi formula sul lato destro contenente variabili che variano all'interno dello stesso individuo può essere inserita tra la ~e la |ID, ma le formule eccessivamente complicate comporteranno un modello saturo e / o vari errori numerici. Pertanto, è possibile utilizzare un test del rapporto di verosimiglianza (anova(myModel, update(myModel,random=~TIME|ID))) per confrontare un modello di intercettazione casuale con un modello di inclinazione e intercettazione casuale o altri modelli di effetti casuali candidati. Se la differenza di adattamento non è significativa, attenersi al modello più semplice. È stato eccessivo per me entrare nelle funzioni di attivazione casuale nel mio post originale.

L'altro problema che ho sollevato riguardava la selezione del modello. Sembra che alla gente non piaccia la selezione dei modelli di alcun tipo, ma nessuno ha alternative pratiche. Se credi ciecamente al ricercatore che ha raccolto i dati su quali variabili esplicative sono e non sono rilevanti, accetti spesso ciecamente le loro assunzioni non testate. Se prendi in considerazione ogni possibile bit di informazione, finirai spesso con un modello saturo. Se scegli arbitrariamente un particolare modello e variabili perché sono facili, accetterai di nuovo ipotesi non testate, questa volta tue.

Quindi, in sintesi, per misure ripetute si tratta di lmemodelli seguiti da rifilatura tramite MASS:::stepAICo MuMIn:::dredgee / o nlme:::anova.lmefino a quando e se qualcuno non ha un'idea migliore.

Lascerò questa risposta per un po 'prima di accettarlo per vedere se qualcuno ha delle confutazioni. Grazie per il tuo tempo e se stai leggendo questo perché hai lo stesso tipo di domanda che ho, buona fortuna e benvenuto in un territorio semi-inesplorato.

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.