El modelo Bradley – Terry – Luce (BTL) establece que , donde es la probabilidad de que el objeto se considere "mejor", más pesado, etc., que el objeto , y , y son parámetros.
Esto parece ser un candidato para la función glm, con family = binomial. Sin embargo, la fórmula sería algo así como "Éxito ~ S1 + S2 + S3 + S4 + ...", donde Sn es una variable ficticia, es decir 1 si el objeto n es el primer objeto en la comparación, -1 si es el segundo, y 0 en caso contrario. Entonces el coeficiente de Sn sería el correspondiente .
Esto sería bastante fácil de administrar con solo unos pocos objetos, pero podría conducir a una fórmula muy larga y la necesidad de crear una variable ficticia para cada objeto. Solo me pregunto si hay un método más simple. Suponga que el nombre o el número de los dos objetos que se comparan son variables (¿factores?) Object1 y Object2, y Success es 1 si el objeto 1 se juzga mejor, y 0 si el objeto 2 lo es.
Respuestas:
Creo que el mejor paquete para datos de Comparación Pareada (PC) en R es el paquete prefmod , que permite preparar convenientemente los datos para que se ajusten (log lineales) a modelos BTL en R. Utiliza un Poisson GLM (más exactamente, un logit multinomial en Poisson formulación ver, por ejemplo, esta discusión ).
Lo bueno es que tiene una función
prefmod::llbt.design
que convierte automáticamente sus datos en el formato necesario y la matriz de diseño necesaria.Por ejemplo, supongamos que tiene 6 objetos todos comparados por pares. Entonces
construirá la matriz de diseño a partir de una matriz de datos que se ve así:
con filas que indican personas, columnas que indican comparaciones y 0 significa indeciso 1 significa objeto 1 preferido y 2 significa objeto 2 preferido. Se permiten valores perdidos. Editar : como esto probablemente no sea algo que se infiera simplemente de los datos anteriores, lo deletreo aquí. Las comparaciones deben ordenarse de la siguiente manera ((12) objeto de comparación de medias 1 con objeto 2):
El ajuste se realiza más convenientemente con la
gnm::gnm
función, ya que le permite realizar modelos estadísticos. (Editar: también puede usar laprefmod::llbt.fit
función, que es un poco más simple ya que solo toma los recuentos y la matriz de diseño).Tenga en cuenta que el término eliminar omitirá los parámetros molestos del resumen. Luego puede obtener los parámetros de valor (sus deltas) como
Y puedes trazarlos con
Si tiene muchos objetos y desea escribir un objeto de fórmula
o1+o2+...+on
rápidamente, puede usarpara generar la fórmula para
gnm
(que no necesitaríasllbt.fit
).Hay un artículo de JSS , consulte también https://r-forge.r-project.org/projects/prefmod/ y la documentación a través de
?llbt.design
.fuente