Interrater niezawodność dla zdarzeń w szeregu czasowym z niepewnością co do czasu zdarzenia

13

Mam wielu niezależnych programistów, którzy próbują zidentyfikować zdarzenia w szeregu czasowym - w tym przypadku oglądam wideo rozmowy twarzą w twarz i szukam określonych zachowań niewerbalnych (np. Skinienie głową) oraz kodują czas i kategorię każdego z nich zdarzenie. Dane te można rozsądnie potraktować jako szereg dyskretny w czasie o wysokiej częstotliwości próbkowania (30 klatek / sekundę) lub jako szereg ciągły w czasie, w zależności od tego, który z nich jest łatwiejszy do pracy.

Chciałbym obliczyć pewną miarę niezawodności między oceniającymi, ale spodziewam się pewnej niepewności w momencie wystąpienia zdarzeń; to znaczy, spodziewam się, że jeden programista może na przykład zakodować, że określony ruch rozpoczął się kwadrans później niż inni sądzili, że się zaczął. Są to rzadkie zdarzenia, jeśli to pomaga; zazwyczaj co najmniej kilka sekund (setki klatek wideo) między zdarzeniami.

Czy istnieje dobry sposób oceny wiarygodności między oceniającymi, który uwzględnia oba rodzaje porozumienia i nieporozumienia: (1) czy oceniający zgadzają się co do tego, jakie zdarzenie miało miejsce (jeśli występuje), oraz (2) czy zgadzają się, kiedy to miało miejsce? Druga jest dla mnie ważna, ponieważ jestem zainteresowany spojrzeniem na czas tych wydarzeń w stosunku do innych rzeczy zachodzących w rozmowie, takich jak to, co mówią ludzie.

Standardową praktyką w mojej dziedzinie wydaje się być dzielenie rzeczy na przedziały czasowe, powiedzmy 1/4 sekundy lub więcej, agregowanie zdarzeń zgłaszanych przez każdy koder na odcinek czasu, a następnie obliczanie kappa Cohena lub podobnej miary. Ale wybór czasu cięcia jest doraźny i nie mam pojęcia o niepewności w czasie wydarzeń.

Jak dotąd najlepiej mi się wydaje, że mogę obliczyć krzywą niezawodności; coś w rodzaju kappa w zależności od wielkości okna, w którym uważam dwa zdarzenia za zakodowane w tym samym czasie. Jednak nie jestem pewien, dokąd się udać ...

chl
źródło
Wygląda to na sytuację, w której można zastosować funkcjonalne metody analizy danych. Czy rozważałeś ich?
mpiktas
Myślałem o funkcjonalnej analizie danych, ale nie jest to obszar, który znam bardzo dobrze. Pracuję teraz nad książką Ramsaya i Silvermana. Ale nie od razu widzę, jak radzić sobie z wielomianową zmienną wyniku ...?
Czy dostępny jest złoty standard dla tych pomiarów (tj. Czy wiesz, kiedy zdarzenie (zdarzenia) będące przedmiotem zainteresowania wystąpi)? Ile koderów obejmuje to badanie? Ile różnych wydarzeń możemy się spodziewać?
chl

Odpowiedzi:

2

Oto kilka sposobów myślenia.

1

A) Możesz traktować każdą pełną sekwencję kodowania jako uporządkowany zestaw zdarzeń (tj. [„Skinienie głową”, „potrząsanie głową”, „skinienie głową”, „uniesienie brwi”] i [„skinienie głową”, „potrząsanie głową” , „brew uniesiona”]), a następnie wyrównaj sekwencje za pomocą algorytmu, który ma dla ciebie sens ( http://en.wikipedia.org/wiki/Sequence_alignment ). Następnie można obliczyć niezawodność między koderami dla całej sekwencji.

B) Następnie, ponownie stosując wyrównane sekwencje, możesz porównać, kiedy powiedziano, że wydarzenie miało miejsce, biorąc pod uwagę, że obaj obserwowali to zdarzenie.

2) Alternatywnie, możesz zamodelować ten model jako Ukryty Model Markowa i użyć czegoś takiego jak algorytm Baumna-Welcha, aby przypisać prawdopodobieństwa, że ​​przy pewnych faktycznych zdarzeniach każdy koder rzeczywiście poprawnie kodował dane. http://en.wikipedia.org/wiki/Baum-Welch_algorithm

fgregg
źródło
Ta technika wydaje się podobna do tego, co Grafsgaard 2012 zrobił dla podobnego zadania dźwiękowego.
KevinL,
0

Zamiast dzielenia danych na dowolne części, można wziąć pod uwagę rzeczywiste różnice czasowe. Koder 1 zgłasza czas i działanie:

049 D
113 C
513 C
724 G

Prostym sposobem sprawdzenia, który koder jest najbardziej niezawodny według innych koderów, jest nadanie mu takiej oceny:

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.

Jeśli bliskość jest dla Ciebie ważna, rozważ takie alternatywy:

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

Przy wszystkich dostępnych informacjach o problemach wdrożenie tego pomysłu w praktyczny sposób nie powinno być trudne.

Dennis Jaheruddin
źródło
1
Skąd pochodzą „25”? Czy masz referencje lub możesz wyjaśnić teorię uzasadniającą tę propozycję?
whuber