Modelli multilivello per gruppi che hanno predittori diversi

Aug 20 2020

Immagina di provare ad adattare un modello multilivello ai prodotti e di voler raggruppare per tipo di prodotto.

Nei casi in cui i tipi di prodotto hanno tutti gli stessi predittori, ciò è semplice. Ad esempio, potresti stimare l'effetto del colore sulle vendite o qualcosa di simile.

Ma cosa succede se alcuni predittori hanno senso solo per alcuni tipi di prodotto? Come una caratteristica di "lunghezza della gamba" potrebbe avere senso per i pantaloncini se le persone preferiscono quanto sopra o sotto il ginocchio preferiscono i loro pantaloncini, ma non per i pantaloni che sono sempre a tutta lunghezza. E potrebbe avere ancora meno senso per le camicie, dal momento che non hanno affatto una lunghezza della gamba.

In tal caso, c'è un modo per gestirlo o è meglio avere modelli diversi per gruppo? Per le funzionalità che sono condivise e che dovrebbero essere tratte dalla stessa distribuzione, immagino che perdiamo qualche vantaggio, quindi è per questo che mi chiedo se i modelli possono essere realizzati come un unico modello.

Ho pensato a una serie di cose (ad esempio per i prodotti che non hanno la caratteristica, impostandola su un valore costante o su un valore casuale tratto da una distribuzione dei valori delle caratteristiche da prodotti in cui la caratteristica ha senso, ecc. ) ma tutti sembrano avere problemi molto evidenti.

Risposte

2 Eoin Aug 24 2020 at 20:52

C'è un modo abbastanza sensato per farlo se centri tutti i tuoi predittori sottraendo il valore medio.

Usando il tuo esempio, supponi di avere pantaloncini da ginnastica, pantaloncini e jeans e che i tuoi predittori numerici sono a) luminosità (definita per tutte le categorie) eb) lunghezza corta (definita solo NAper pantaloncini , per pantaloni). Ora, se centrate entrambi i vostri predittori numerici, ottenete misure di a) se gli elementi sono più scuri o più chiari della media, eb) se i pantaloncini sono più corti o più lunghi della media. Puoi tranquillamente dire che i pantaloni lo sono$\pm0$cm più corto o più lungo della media, quindi assegna un valore 0 a questo predittore per tutti gli elementi che non sono corti (non sono né più corti né più lunghi della media). Puoi quindi adattare un multilivello come faresti normalmente, consentendo a tutti i predittori di variare tra le categorie:

lmer(sales ~ 1 + centred_colour + centred_leg_length + 
             (1 + centred_colour + centred_leg_length | category),
     data=sales_data)

Poiché questo predittore varia solo per i diversi tipi di cortometraggi, solo le vendite di quegli articoli avranno un effetto su questo parametro. Poiché è impostato su 0 per tutti gli altri prodotti, questo predittore non influenzerà le inferenze o le previsioni su di essi.

Se ti capita di ritrovarti con una sola categoria di cortometraggi nei tuoi dati, se non sarà possibile includerla come effetto casuale, dovrai cambiare il tuo modello di conseguenza:

lmer(sales ~ 1 + centred_colour + centred_leg_length + 
             (1 + centred_colour | category),
     data=sales_data)
1 Alex.C-L-ReinstateMonica Aug 24 2020 at 15:46

Prova a creare una variabile fittizia che sia 0 quando un prodotto non ha la caratteristica (cioè non ha una gamba) e 1 quando ha questa caratteristica. Trasforma quindi questa variabile fittizia in un fattore.

Quando un manichino non dispone di una funzione, sostituire il valore mancante con zero.

Quindi nel tuo modello, interagisci la tua variabile continua di interesse con la variabile del fattore fittizio. Aggiungi anche le variabili fattoriali fittizie.


Nota: sono felice di leggere da una persona più informata perché funziona (o non funziona nel caso generale).