O modelo de Bradley-Terry-Luce (BTL) afirma que , em que é a probabilidade de o objeto ser considerado "melhor", mais pesado, etc, do que o objecto i , e \ delta_i , e \ delta_j são parâmetros.p i j j i
Parece ser um candidato para a função glm, com família = binomial. No entanto, a fórmula seria algo como "Sucesso ~ S1 + S2 + S3 + S4 + ...", em que Sn é uma variável dummy, ou seja, 1 se o objeto n for o primeiro objeto na comparação, -1 se for o segundo e 0 caso contrário. Então o coeficiente de Sn seria o delta_n correspondente .
Isso seria bastante fácil de gerenciar com apenas alguns objetos, mas poderia levar a uma fórmula muito longa e à necessidade de criar uma variável dummy para cada objeto. Eu só me pergunto se existe um método mais simples. Suponha que o nome ou o número dos dois objetos que estão sendo comparados sejam variáveis (fatores?) Objeto1 e Objeto2, e Sucesso será 1 se o objeto 1 for julgado melhor e 0 se o objeto 2 for.
fonte
Respostas:
Eu acho que o melhor pacote para dados de Comparação emparelhada (PC) em R é o pacote prefmod , que permite preparar convenientemente dados para ajustar modelos BTL (log linear) em R. Ele usa um Poisson GLM (mais precisamente, um logit multinomial em Poisson formulação ver, por exemplo, esta discussão ).
O bom é que ele possui uma função
prefmod::llbt.design
que converte automaticamente seus dados no formato e na matriz de design necessários.Por exemplo, digamos que você tenha 6 objetos, todos emparelhados. Então
criará a matriz de design a partir de uma matriz de dados que se parece com isso:
com linhas indicando pessoas, colunas indicando comparações e 0 significa indeciso 1 significa objeto 1 preferido e 2 significa objeto 2 preferido. Valores ausentes são permitidos. Edit : Como isso provavelmente não é algo para inferir simplesmente a partir dos dados acima, eu soletrar aqui. As comparações devem ser ordenadas da seguinte maneira ((12): objeto de comparação médio 1 com o objeto 2):
O ajuste é mais convenientemente realizado com a
gnm::gnm
função, pois permite a modelagem estatística. (Editar: você também pode usar aprefmod::llbt.fit
função, que é um pouco mais simples, pois requer apenas as contagens e a matriz de design.)Observe que o termo de eliminação omitirá os parâmetros incômodos do resumo. Você pode obter os parâmetros de valor (seus deltas) como
E você pode plotá-los com
Se você possui muitos objetos e deseja escrever
o1+o2+...+on
rapidamente um objeto de fórmula , pode usarpara gerar a fórmula
gnm
(da qual você não precisariallbt.fit
).Há um artigo JSS , consulte também https://r-forge.r-project.org/projects/prefmod/ e a documentação via
?llbt.design
.fonte