Interrompere l'affidabilità degli eventi in una serie temporale con incertezza sul tempo dell'evento


13

Ho più programmatori indipendenti che stanno provando a identificare gli eventi in una serie temporale - in questo caso, guardando il video della conversazione faccia a faccia e cercando comportamenti non verbali particolari (ad esempio, annuisce alla testa) e codificando il tempo e la categoria di ciascuno evento. Questi dati potrebbero ragionevolmente essere trattati come una serie temporale discreta con un'alta frequenza di campionamento (30 fotogrammi / secondo) o come una serie temporale continua, a seconda di quale sia più facile lavorare.

Mi piacerebbe calcolare un certo grado di affidabilità inter-rater, ma mi aspetto che ci siano alcune incertezze nel momento in cui si sono verificati gli eventi; cioè, mi aspetto che un programmatore potrebbe, ad esempio, codificare che un determinato movimento ha avuto inizio un quarto di secondo più tardi di quanto pensassero gli altri programmatori. Questi sono eventi rari, se ciò aiuta; in genere almeno alcuni secondi (centinaia di fotogrammi video) tra gli eventi.

Esiste un buon modo per valutare l'affidabilità inter-rater che considera entrambi questi tipi di accordo e disaccordo: (1) i rater concordano su quale evento si è verificato (se presente) e (2) concordano quando si è verificato? Il secondo è importante per me perché sono interessato a guardare i tempi di questi eventi rispetto ad altre cose che accadono nella conversazione, come quello che la gente dice.

La pratica standard nel mio campo sembra essere quella di dividere le cose in fasce orarie, diciamo circa 1/4 di secondo, aggregare gli eventi riportati da ciascun programmatore per fasce orarie, quindi calcolare la kappa di Cohen o qualche misura simile. Ma la scelta della durata della fetta è ad hoc e non ho una buona idea dell'incertezza nel tempo degli eventi.

La migliore idea che ho finora è che potrei calcolare una sorta di curva di affidabilità; qualcosa come kappa in funzione della dimensione della finestra all'interno della quale considero due eventi codificati contemporaneamente. Non sono sicuro di dove andare da lì, però ...


Sembra una situazione in cui è possibile applicare metodi di analisi dei dati funzionali. Li hai considerati?
mpiktas,

Avevo pensato all'analisi dei dati funzionali, ma non è un'area con cui ho molta familiarità. Sto lavorando attraverso il libro di Ramsay e Silverman ora. Ma non vedo immediatamente come gestire una variabile di risultato multinomiale ...?

È disponibile un gold standard per tali misurazioni (ovvero, sai quando si verificano gli eventi di interesse)? Quanti programmatori sono inclusi in questo studio? Quanti eventi distinti possiamo aspettarci?
chl

Risposte:


2

Ecco un paio di modi a cui pensare.

1

A) Potresti trattare ogni sequenza completa di codifiche come un insieme ordinato di eventi (ad es. ["Head nod", "head shake", "head nod", "sopracciglio alzato"] e ["head nod", "head shake" , "sopracciglio alzato"]), quindi allinea le sequenze utilizzando un algoritmo che abbia senso per te ( http://en.wikipedia.org/wiki/Sequence_alignment ). È quindi possibile calcolare l'affidabilità inter coder per l'intera sequenza.

B) Quindi, usando nuovamente le sequenze allineate, puoi confrontare quando hanno detto che è accaduto un evento, dato che entrambi hanno osservato l'evento.

2) In alternativa, potresti modellarlo come un modello Markov nascosto e utilizzare qualcosa come l'algoritmo Baumn-Welch per imputare le probabilità che, dato un evento reale, ogni programmatore abbia effettivamente codificato i dati correttamente. http://en.wikipedia.org/wiki/Baum-Welch_algorithm


Questa tecnica sembra essere simile a quella che Grafsgaard 2012 ha fatto per un compito simile.
KevinL,

0

Invece di suddividere i dati in pezzi arbitrari, è possibile considerare le differenze temporali effettive. Il programmatore 1 riporta il tempo e l'azione:

049 D
113 C
513 C
724 G

Un modo semplice per vedere quale programmatore è il più affidabile secondo altri programmatori è dargli un punteggio così:

Add a point for each other coder that reported a D between (049-025) and (049+025)
Add a point for each other coder that reported a C between (113-025) and (113+025)
Add a point for each other coder that reported a C between (513-025) and (513+025)
Add a point for each other coder that reported a C between (724-025) and (724+025)
Subtract a point for each reported action.

Se la vicinanza è importante per te, considera alternative come queste:

Add 25/(Time_Thiscoder-Time_Othercoder)^2 points for each other coder that reported a matching observation.

Con tutte le informazioni sui problemi disponibili, non dovrebbe essere difficile implementare questa idea in modo pratico.


1
Da dove vengono i "25"? Hai riferimenti o puoi spiegare la teoria che giustifica questa proposta?
whuber
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.