Model Bradleya-Terry'ego-Luce (BTL) stwierdza, że , gdzie to prawdopodobieństwo, że obiekt zostanie oceniony jako „lepszy”, cięższe itp., niż obiekt oraz i są parametrami.
Wydaje się, że jest to kandydat na funkcję glm, z rodziną = dwumianową. Jednak wzór byłby podobny do „Sukces ~ S1 + S2 + S3 + S4 + ...”, gdzie Sn jest zmienną fikcyjną, to jest 1, jeśli obiekt n jest pierwszym obiektem w porównaniu, -1 jeśli jest drugi i 0 w przeciwnym razie. Wówczas współczynnik Sn będzie odpowiadał .
Byłoby to dość łatwe do zarządzania przy użyciu tylko kilku obiektów, ale mogłoby to prowadzić do bardzo długiej formuły i potrzeby utworzenia zmiennej zastępczej dla każdego obiektu. Zastanawiam się tylko, czy istnieje prostsza metoda. Załóżmy, że nazwa lub liczba dwóch porównywanych obiektów to zmienne (czynniki?) Obiekt1 i Obiekt2, a Sukces to 1, jeśli obiekt 1 zostanie oceniony lepiej, a 0, jeśli obiekt 2 to.
źródło
Odpowiedzi:
Myślę, że najlepszym pakietem dla danych porównywania w parze (PC) w R jest pakiet prefmod , który pozwala wygodnie przygotowywać dane do dopasowania (log liniowy) modeli BTL w R. Używa Poissona GLM (dokładniej wielomianowego logitu w Poissonie sformułowanie patrz np. ta dyskusja ).
Zaletą jest to, że ma funkcję,
prefmod::llbt.design
która automatycznie konwertuje dane do niezbędnego formatu i niezbędnej matrycy projektowej.Załóżmy na przykład, że masz 6 obiektów porównanych parami. Następnie
zbuduje macierz projektową z macierzy danych, która wygląda następująco:
z wierszami oznaczającymi ludzi, kolumnami oznaczającymi porównania, a 0 oznacza niezdecydowany 1 oznacza preferowany obiekt 1, a 2 oznacza preferowany obiekt 2. Brakujące wartości są dozwolone. Edycja : Ponieważ prawdopodobnie nie jest to coś, co można wywnioskować na podstawie powyższych danych, przeliterowałem to tutaj. Porównania należy uporządkować w następujący sposób ((12) oznacza średni obiekt porównawczy 1 z obiektem 2):
Dopasowanie jest najwygodniej przeprowadzane za pomocą
gnm::gnm
funkcji, ponieważ pozwala na modelowanie statystyczne. (Edycja: Można również użyćprefmod::llbt.fit
funkcji, która jest nieco prostsza, ponieważ wymaga tylko zliczeń i macierzy projektu.)Należy pamiętać, że termin eliminacji pomija parametry uciążliwe w podsumowaniu. Następnie możesz uzyskać wartościowe parametry (swoje delty) jako
I możesz je wykreślić
Jeśli masz wiele obiektów i chcesz szybko napisać obiekt formuły
o1+o2+...+on
, możesz użyćwygenerować formułę
gnm
( dla której nie byłbyś potrzebnyllbt.fit
).Istnieje artykuł JSS , patrz także https://r-forge.r-project.org/projects/prefmod/ i dokumentacja przez
?llbt.design
.źródło