Le modèle Bradley – Terry – Luce (BTL) indique que , où est la probabilité que l'objet soit jugé "meilleur", plus lourd, etc., que l'objet , et et sont des paramètres.
Cela semble être un candidat pour la fonction glm, avec family = binomial. Cependant, la formule serait quelque chose comme "Success ~ S1 + S2 + S3 + S4 + ...", où Sn est une variable fictive, c'est-à-dire 1 si l'objet n est le premier objet de la comparaison, -1 s'il l'est le second et 0 sinon. Alors le coefficient de Sn serait le correspondant .
Cela serait assez facile à gérer avec seulement quelques objets, mais pourrait conduire à une formule très longue et à la nécessité de créer une variable fictive pour chaque objet. Je me demande simplement s'il existe une méthode plus simple. Supposons que le nom ou le numéro des deux objets comparés sont des variables (facteurs?) Object1 et Object2, et Success est 1 si l'objet 1 est mieux jugé et 0 si l'objet 2 l'est.
la source
Réponses:
Je pense que le meilleur package pour les données de comparaison par paires (PC) dans R est le package prefmod , qui permet de préparer facilement les données pour s'adapter aux modèles BTL (log linéaires) dans R. Il utilise un GLM de Poisson (plus précisément, un logit multinomial dans Poisson voir par exemple cette discussion ).
La bonne chose est qu'il a une fonction
prefmod::llbt.design
qui convertit automatiquement vos données dans le format et la matrice de conception nécessaires.Par exemple, supposons que vous ayez 6 objets tous par paires comparés. alors
va construire la matrice de conception à partir d'une matrice de données qui ressemble à ceci:
avec des lignes indiquant des personnes, des colonnes indiquant des comparaisons et 0 signifie indécis 1 signifie objet 1 préféré et 2 signifie objet 2 préféré. Les valeurs manquantes sont autorisées. Edit : Comme ce n'est probablement pas quelque chose à déduire simplement des données ci-dessus, je l'explique ici. Les comparaisons doivent être ordonnées de la manière suivante ((12) moyenne objet de comparaison 1 avec objet 2):
L'ajustement est plus pratique que la
gnm::gnm
fonction, car il vous permet de faire une modélisation statistique. (Modifier: vous pouvez également utiliser laprefmod::llbt.fit
fonction, qui est un peu plus simple car elle ne prend que les nombres et la matrice de conception.)Veuillez noter que le terme éliminer supprimera les paramètres de nuisance du résumé. Vous pouvez alors obtenir les paramètres de valeur (vos deltas) comme
Et vous pouvez les tracer avec
Si vous avez de nombreux objets et que vous souhaitez écrire
o1+o2+...+on
rapidement un objet formule , vous pouvez utiliserpour générer la formule
gnm
(dont vous n'auriez pas besoinllbt.fit
).Il y a un article JSS , voir aussi https://r-forge.r-project.org/projects/prefmod/ et la documentation via
?llbt.design
.la source