Ha senso che un effetto fisso sia nidificato in uno casuale o come codificare misure ripetute in R (aov e lmer)?


23

Ho esaminato questa panoramica delle formule lm / lmer R di @conjugateprior e mi sono confuso con la seguente voce:

Ora supponiamo che A sia casuale, ma B sia fisso e B sia nidificato all'interno di A.

aov(Y ~ B + Error(A/B), data=d)

Di seguito lmer(Y ~ B + (1 | A:B), data=d) viene fornita la formula del modello misto analogo per lo stesso caso.

Non capisco bene cosa significhi. In un esperimento in cui i soggetti sono divisi in più gruppi, avremmo un fattore casuale (soggetti) nidificato all'interno di un fattore fisso (gruppi). Ma come si può annidare un fattore fisso all'interno di un fattore casuale? Qualcosa di fisso annidato in soggetti casuali? È anche possibile? Se non è possibile, queste formule R hanno senso?


Questa panoramica è menzionato per essere in parte sulla base della pagine personalità-progetto sul fare ANOVA in R sé sulla base di questo tutorial su misure ripetute in R . Ecco il seguente esempio per le misure ripetute ANOVA:

aov(Recall ~ Valence + Error(Subject/Valence), data.ex3)

Qui i soggetti vengono presentati con parole di varia valenza (fattore con tre livelli) e viene misurato il loro tempo di richiamo. Ogni soggetto è presentato con parole di tutti e tre i livelli di valenza. Non vedo nulla di nidificato in questo disegno (sembra incrociato, come per la grande risposta qui ), e quindi penserei ingenuamente che Error(Subject)o (1 | Subject)dovrebbe essere un termine casuale appropriato in questo caso. Il Subject/Valence"annidamento" (?) È confuso.

Nota che capisco che Valenceè un fattore all'interno della materia . Ma penso che non sia un fattore "nidificato" all'interno dei soggetti (perché tutte le materie presentano tutti e tre i livelli di Valence).


Aggiornare. Sto esplorando le domande sul CV sulla codifica delle misure ripetute ANOVA in R.

  • Qui si usa quanto segue per misure fisse all'interno del soggetto / ripetute A e casuali subject:

    summary(aov(Y ~ A + Error(subject/A), data = d))
    anova(lme(Y ~ A, random = ~1|subject, data = d))
  • Qui per due effetti fissi all'interno del soggetto / misure ripetute A e B:

    summary(aov(Y ~ A*B + Error(subject/(A*B)), data=d))
    lmer(Y ~ A*B + (1|subject) + (1|A:subject) + (1|B:subject), data=d) 
  • Qui per tre effetti all'interno del soggetto A, B e C:

    summary(aov(Y ~ A*B*C + Error(subject/(A*B*C)), data=d))
    lmer(Y ~ A*B*C + (1|subject) + (0+A|subject) + (0+B|subject) + (0+C|subject) + (0+A:B|subject) + (0+A:C|subject) + (0+B:C|subject), data = d)

Le mie domande:

  1. Perché Error(subject/A)e no Error(subject)?
  2. È (1|subject)o (1|subject)+(1|A:subject)o semplicemente (1|A:subject)?
  3. È (1|subject) + (1|A:subject)o (1|subject) + (0+A|subject)e perché non semplicemente (A|subject)?

Ormai ho visto alcuni thread che affermano che alcune di queste cose sono equivalenti (ad esempio, il primo: un'affermazione che sono gli stessi ma un'affermazione opposta su SO ; il terzo: un tipo di affermazione che sono gli stessi ). Sono loro?


2
Solo un breve commento per dire che, parlando rigorosamente concettualmente , secondo me praticamente non ha mai senso avere un fattore fisso annidato in un fattore casuale. Ho letto anche almeno un autore di libri di testo (non ricordo il riferimento al momento). Detto questo, è possibile che alcune delle specifiche del modello che hai scritto sopra risultino statisticamente equivalenti ai modelli che hanno più senso ... Dovrei pensarci di più e giocarci un po '.
Jake Westfall,

4
In realtà immagino abbia senso se pensi al modo in cui R interpreta la sintassi A / B: si espande semplicemente in A + A: B. Quindi, se consideriamo un termine casuale simile subject/condition, questo è concettualmente dubbio perché sembra suggerire che le condizioni siano nidificate nei soggetti, quando chiaramente è l'opposto, ma il modello che è effettivamente adatto è subject + subject:condition, che è un modello perfettamente valido con effetti casuali del soggetto e inclinazioni di soggetto X casuali.
Jake Westfall,

@JakeWestfall Grazie, questo è il modo in cui ci penso ormai, ma vorrei davvero che qualcuno lo spiegasse correttamente. In realtà sono sorpreso che questa sia una domanda non banale; Mi sarei aspettato che tu fossi una delle persone a cui risponderebbe immediatamente. Ma questo è un sollievo, poiché inizialmente pensavo che la mia confusione dovesse essere stupida. A proposito, c'è qualche riferimento standardlm e aovformule? Se voglio avere una fonte autorevole su cosa aovfa esattamente (è un wrapper lm?) E come funzionano i Error()termini, dove dovrei cercare?
ameba dice Reinstate Monica il

1
@amoeba Sì, aovè un wrapper per, lmnel senso che lmviene usato per i minimi quadrati, ma aovfa qualche lavoro aggiuntivo (in particolare, traducendo il Errortermine per lm). La fonte autorevole è il codice sorgente o eventualmente il riferimento fornito in help("aov"): Chambers et al (1992). Ma non ho accesso a quel riferimento, quindi esaminerei il codice sorgente.
Roland,

Risposte:


12

Nei modelli misti il ​​trattamento di fattori come fissi o casuali, in particolare in combinazione con il fatto che siano incrociati, parzialmente incrociati o nidificati, può creare molta confusione. Inoltre, sembrano esserci differenze nella terminologia tra ciò che si intende annidare nel mondo degli esperimenti anova / progettati e il mondo dei modelli misti / multilivello.

Non dichiaro di conoscere tutte le risposte e la mia risposta non sarà completa (e potrei produrre ulteriori domande) ma cercherò di affrontare alcuni dei problemi qui:

Ha senso che un effetto fisso sia nidificato in uno casuale o come codificare misure ripetute in R (aov e lmer)?

(il titolo della domanda)

No, non credo che abbia senso. Quando abbiamo a che fare con misure ripetute, di solito qualunque sia la cosa su cui le misure vengono ripetute saranno casuali, chiamiamolo semplicemente Subject, e lme4vorremmo includere Subjectsul lato destro di uno o più |nella parte casuale della formula. Se abbiamo altri effetti casuali, questi sono incrociati, parzialmente incrociati o nidificati - e la mia risposta a questa domanda risponde a questo .

Il problema con questi esperimenti di tipo anova sembra essere come affrontare i fattori che normalmente verrebbero considerati fissi, in una situazione di misure ripetute, e le domande nel corpo del PO parlano a questo:

Perché errore (soggetto / A) e non errore (soggetto)?

Di solito non lo uso, aov()quindi potrei mancare qualcosa, ma per me Error(subject/A)è molto fuorviante nel caso della domanda collegata . Error(subject)infatti porta esattamente agli stessi risultati.

È (1 | soggetto) o (1 | soggetto) + (1 | A: soggetto) o semplicemente (1 | A: soggetto)?

Questo si riferisce a questa domanda. In questo caso, tutte le seguenti formulazioni di effetti casuali portano esattamente allo stesso risultato:

(1|subject)
(1|A:subject)
(1|subject) + (1|A:subject)
(1|subject) + (1|A:subject) + (1|B:subject)

Tuttavia, ciò è dovuto al fatto che l'insieme di dati simulato nella domanda non ha variazioni all'interno di nulla, ma è stato creato con Y = rnorm(48). Se prendiamo un set di dati reale come il cakeset di dati nel lme4, scopriamo che questo non sarà generalmente il caso. Dalla documentazione, ecco la configurazione sperimentale:

Dati sull'angolo di rottura delle torte al cioccolato realizzate con tre diverse ricette e cotte a sei diverse temperature. Questo è un disegno a trama divisa con le ricette che sono unità intere e le diverse temperature applicate alle sottounità (all'interno dei replicati). Le note sperimentali suggeriscono che la numerazione replicata rappresenta l'ordinamento temporale.

Un data frame con 270 osservazioni sulle seguenti 5 variabili.

replicate un fattore con livelli da 1 a 15

recipe un fattore con livelli A, B e C

temperature un fattore ordinato con livelli 175 <185 <195 <205 <215 <225

temp valore numerico della temperatura di cottura (gradi F).

angle un vettore numerico che indica l'angolo in cui si è rotta la torta.

Quindi, abbiamo ripetuto misure all'interno replicatee siamo anche interessati ai fattori fissi recipee temperature(possiamo ignorare temppoiché si tratta solo di una codifica diversa di temperature) e possiamo visualizzare la situazione usando xtabs:

> xtabs(~recipe+replicate,data=cake)

     replicate
recipe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
     A 6 6 6 6 6 6 6 6 6  6  6  6  6  6  6
     B 6 6 6 6 6 6 6 6 6  6  6  6  6  6  6
     C 6 6 6 6 6 6 6 6 6  6  6  6  6  6  6

Se recipefosse un effetto casuale, diremmo che questi sono effetti casuali incrociati. In nessun modo recipe Aappartiene replicate 1o qualsiasi altro replicato.

> xtabs(~temp+replicate,data=cake)

     replicate
temp  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  175 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3
  185 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3
  195 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3
  205 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3
  215 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3
  225 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3

Allo stesso modo per temp.

Quindi il primo modello che potremmo adattare è:

> lmm1 <-  lmer(angle ~ recipe * temperature + (1|replicate), cake, REML= FALSE)

Questo tratterà ciascuno replicatecome l'unica fonte di variazione casuale (oltre al residuo ovviamente). Ma potrebbero esserci differenze casuali tra le ricette. Quindi potremmo essere tentati di includere recipecome un altro effetto casuale (incrociato), ma sarebbe sconsigliato perché abbiamo solo 3 livelli, recipequindi non possiamo aspettarci che il modello valuti bene i componenti della varianza. Quindi invece possiamo usare replicate:recipecome variabile di raggruppamento che ci permetterà di trattare ogni combinazione di replicare e ricetta come un fattore di raggruppamento separato. Quindi, mentre con il modello sopra avremmo 15 intercettazioni casuali per i livelli di replicateadesso avremo 45 intercettazioni casuali per ciascuna delle combinazioni separate:

lmm3 <-  lmer(angle ~ recipe * temperature + (1|replicate:recipe) , cake, REML= FALSE)

Si noti che ora abbiamo (leggermente) risultati diversi che indicano che c'è una variabilità casuale dovuta alla ricetta, ma non molto.

Allo stesso modo potremmo fare la stessa cosa con temperature.

Ora, tornando alla tua domanda, chiedi anche

Perché (1|subject) + (1|A:subject)e non (1|subject) + (0+A|subject)o semplicemente (A|subject)?

Non sono del tutto sicuro da dove provenga (usando pendenze casuali) - non sembra sorgere nelle 2 domande collegate - ma il mio problema (1|subject) + (1|A:subject)è che questo è esattamente lo stesso del (1|subject/A)che significa cheA è annidato all'interno subject, che in turn significa (per me) che ogni livello di si Averifica in 1 e solo 1 livello di subjectcui chiaramente non è il caso qui.

Probabilmente aggiungerò e / o modificherò questa risposta dopo averci pensato un po 'di più, ma volevo abbattere i miei pensieri iniziali.


Grazie mille (+1). Non sono sicuro di aver compreso il cakeset di dati. Sembra che la replica sia nidificata nella ricetta; il motivo xtabsnon mostra che è esattamente il motivo che descrivi nella tua risposta nidificata contro incrociata: la replica è codificata in modo confuso come 1-15 e non come 1-45. Per ogni ricetta, sono state fatte 15 "repliche" con 6 torte; ogni torta è stata quindi cotta a temperatura diversa. Quindi la ricetta è un fattore tra soggetto e la temperatura è un fattore dentro soggetto. Quindi, secondo quella tua risposta, dovrebbe essere (1|recipe/replicate). No? (1|replicate:recipe)è probabilmente equivalente.
ameba dice di reintegrare Monica il

Ho focalizzato la mia domanda solo su fattori all'interno del soggetto, quindi sarebbe come limitarsi cakea una sola ricetta. Per quanto riguarda il terzo punto che dici di non essere sicuro di dove provenga, ti preghiamo di vedere l'ultimo link nel mio Q, con un esempio di tre fattori all'interno del soggetto. Vedi anche il commento potenziato di Jake sotto questa Q, dove menziona pendenze casuali.
ameba dice di reintegrare Monica il

E per quanto riguarda aovhai ragione che sembra che Error(subject/A)e Error(subject)cedere gli stessi risultati se non ci sono altri fattori, ma prendere un esempio dal filo legato a due fattori, e non vi Error(subject/(A*B))e Error(subject)non sono equivalenti. La mia attuale comprensione è che è perché il primo include pendenze casuali.
ameba dice di reintegrare Monica il

@amoeba il cakeset di dati non è stato un buon esempio funzionante. Mie scuse. Lo approfondirò un po 'e probabilmente proverò a trovarne uno migliore per l'illustrazione.
Robert Long,

Grazie. In attesa di eventuali aggiornamenti, nonché per l'aggiornamento che Placidia sta preparando. Nel frattempo, penso che farò una taglia qui.
ameba dice di reintegrare Monica il

3

Ooooops. I commentatori degli avvisi hanno notato che il mio post era pieno di sciocchezze. Stavo confondendo disegni nidificati e disegni di misure ripetute.

Questo sito fornisce un'utile suddivisione della differenza tra design di misure nidificate e ripetute. È interessante notare che l'autore mostra i quadrati medi attesi per fissi in fissi, casuali in fissi e casuali in casuali - ma non fissi in casuali. È difficile immaginare cosa significherebbe: se i fattori di livello A vengono scelti a caso, la casualità ora governa la selezione dei fattori di livello B. Se 5 scuole vengono scelte a caso da un consiglio scolastico, e quindi 3 insegnanti sono scelti da ogni scuola (insegnanti nidificati nelle scuole), i livelli del fattore "insegnante" sono ora una selezione casuale di insegnanti dal consiglio scolastico in virtù della selezione casuale di scuole. Non riesco a "riparare" gli insegnanti che avrò nell'esperimento.


2
+1, grazie mille. Tutto nella tua risposta ha senso per me. Tuttavia, penso che dovremmo concordare sul fatto che la parola "nidificato" viene utilizzata in due sensi distinti e questo provoca confusione. @RobertLong afferma che A è nidificato in B quando ogni livello di B si verifica insieme a diversi livelli di classi AEg sono nidificati all'interno di scuole nidificate all'interno di città ecc. Nel tuo esempio, le materie sono nidificate all'interno del fattore trattamento / controllo. Dici che il tempo è annidato all'interno dei soggetti, ma tutti i livelli di tempo si verificano con tutti i soggetti, quindi Robert direbbe che sono incrociati! Questo è un "annidato" diverso. Destra?
ameba dice Ripristina Monica il

1
Nel tuo esempio è chiaro che il tempo e il trattamento sono effetti fissi, ma è tutt'altro che chiaro che il tempo è nidificato all'interno dei pazienti. Puoi fornire una definizione di "nidificato"?
Joe King,

Errore mio. Stavo confondendo annidamento e misure ripetute. Ho cambiato la mia risposta - di nuovo !.
Placidia,

In realtà mi è piaciuta la tua risposta originale con correzioni / aggiunte di oggi. Ci sono state molte informazioni utili per la mia domanda perché, come vedi, sono effettivamente interessato a "misure ripetute" qui (e la domanda sulla "nidificazione" era solo un punto terminologico). Suggerirei di mantenere la revisione precedente!
ameba dice di reintegrare Monica il

2
Mentre stavo scrivendo, mi sono reso conto che gli effetti casuali nelle misure ripetute sono nidificati e voglio testare come funziona la matematica e i gradi di libertà. Amplificerò la mia risposta quando sono sicuro di averlo inchiodato!
Placidia,
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.