Модель Брэдли – Терри – Люса (BTL) утверждает, что , где - вероятность того, что объект j будет оценен как «лучший», тяжелее, и т. д., чем объект i , и \ delta_i , и \ delta_j являются параметрами.
Кажется, это кандидат на функцию glm с family = binomial. Однако формула будет выглядеть примерно так: «Success ~ S1 + S2 + S3 + S4 + ...», где Sn - фиктивная переменная, то есть 1, если объект n является первым объектом в сравнении, -1, если это второе и 0 в противном случае. Тогда коэффициент Sn будет соответствующим .
Это было бы довольно легко управлять только несколькими объектами, но могло бы привести к очень длинной формуле и необходимости создания фиктивной переменной для каждого объекта. Мне просто интересно, есть ли более простой метод. Предположим, что имя или номер двух сравниваемых объектов являются переменными (факторами?) Object1 и Object2, и Success равен 1, если объект 1 оценен лучше, и 0, если объект 2 является.
Ответы:
Я думаю, что лучшим пакетом для данных Paired Comparison (PC) в R является пакет prefmod , который позволяет удобно подготовить данные для подгонки (логарифмировать) BTL-моделей в R. Он использует Poisson GLM (точнее, многочленный логит в Poisson). Формулировка см., например, это обсуждение ).
Приятно то, что у него есть функция,
prefmod::llbt.design
которая автоматически конвертирует ваши данные в нужный формат и необходимую матрицу дизайна.Например, скажем, у вас есть 6 объектов для сравнения. затем
создаст матрицу дизайна из матрицы данных, которая выглядит следующим образом:
со строками, обозначающими людей, столбцы, обозначающие сравнения, и 0 означает неопределенность, 1 означает предпочтительный объект 1, а 2 означает предпочтительный объект 2. Пропущенные значения допускаются. Изменить : Поскольку это, вероятно, не то, что выводить просто из данных выше, я изложил это здесь. Сравнения должны быть упорядочены следующим образом ((12) означает сравнение объекта 1 с объектом 2):
Подгонка удобнее всего выполнять с помощью
gnm::gnm
функции, поскольку она позволяет выполнять статистическое моделирование. (Редактировать: Вы также можете использоватьprefmod::llbt.fit
функцию, которая немного проще, так как она требует только количества и матрицы дизайна.)Обратите внимание, что термин «исключение» пропустит параметры помех в сводке. Затем вы можете получить параметры стоимости (ваши дельты) как
И вы можете построить их с
Если у вас много объектов и вы хотите
o1+o2+...+on
быстро написать объект формулы , вы можете использоватьсоздать формулу
gnm
( для которой вам не нужноllbt.fit
).Существует статья JSS , см. Также https://r-forge.r-project.org/projects/prefmod/ и документацию через
?llbt.design
.источник