복잡한 공식없이 Bradley–Terry–Luce 모델을 R에 맞추는 방법은 무엇입니까?


9

Bradley–Terry–Luce (BTL) 모델은 피제이나는=엘영형지나는티−1(δ제이−δ나는), 어디 피나는제이 그 물체는 확률입니다 제이 물체보다 "더 나은", 더 무거운 것으로 판단 나는, δ나는, δ제이 매개 변수입니다.

이것은 family = binomial 인 glm 함수의 후보 인 것 같습니다. 그러나 공식은 "성공 ~ S1 + S2 + S3 + S4 + ..."와 같습니다. 여기서 Sn은 더미 변수입니다. 즉, 오브젝트 n이 비교에서 첫 번째 오브젝트이면 1이고, 그렇지 않으면 -1입니다. 두 번째, 그렇지 않으면 0 그러면 Sn의 계수는디이자형엘티ㅏ엔.

이것은 몇 개의 객체로 관리하기가 쉽지만 수식이 길어지고 각 객체에 더미 변수를 만들어야 할 수도 있습니다. 더 간단한 방법이 있는지 궁금합니다. 비교되는 두 객체의 이름 또는 번호가 변수 (인자?) Object1 및 Object2이고 객체 1이 더 잘 판단되면 성공은 1이고 객체 2가 0이면


3
Bradley-Terry 모델을위한 R 패키지가 있습니다. Rseek를보십시오.
— 추기경

또한 관련 질문에 대한 링크를 제공했습니다 : stats.stackexchange.com/a/10741/930
— chl

: 패키지 @cardinal는, BTW 언급 BradleyTerry2
— conjugateprior

답변:


17

R의 Paired Comparison (PC) 데이터에 가장 적합한 패키지는 prefmod 패키지 라고 생각합니다.이 패키지는 R에서 (log linear) BTL 모델에 맞게 데이터를 편리하게 준비 할 수있게합니다. 제형은 예를 들어이 논의를 참조 ).

좋은 점은 prefmod::llbt.design데이터를 필요한 형식과 필요한 디자인 매트릭스로 자동 변환 하는 기능이 있다는 것입니다 .

예를 들어, 6 개의 객체가 모두 쌍으로 비교되어 있다고 가정합니다. 그때

R> library(prefmod)
R> des<-llbt.design(data, nitems=6)

다음과 같은 데이터 매트릭스에서 디자인 매트릭스를 빌드합니다.

P1  0  0 NA  2  2  2  0  0  1   0   0   0   1   0   1   1   2
P2  0  0 NA  0  2  2  0  2  2   2   0   2   2   0   2   1   1
P3  1  0 NA  0  0  2  0  0  1   0   0   0   1   0   1   1   2
P4  0  0 NA  0  2  0  0  0  0   0   0   0   0   0   2   1   1
P5  0  0 NA  2  2  2  2  2  2   0   0   0   0   0   2   2   2
P6  2  2 NA  0  0  0  2  2  2   2   0   0   0   0   2   1   2

사람을 나타내는 행, 비교를 나타내는 열 및 0은 결정되지 않음을 의미하고 1은 오브젝트 1이 선호됨을 의미하고 2는 오브젝트 2가 선호됨을 의미합니다. 결 측값이 허용됩니다. 편집 : 이것은 아마도 위의 데이터에서 단순히 추론 할 수있는 것이 아니므로 여기에 철자를 쓰십시오. 비교는 다음과 같은 방식으로 정렬되어야합니다 ((12)는 비교 대상 1과 대상 2를 의미합니다).

(12) (13) (23) (14) (24) (34) (15) (25) etc. 

gnm::gnm통계 모델링을 수행 할 수 있으므로 피팅을 사용하면 가장 편리하게 기능을 수행 할 수 있습니다. (편집 : prefmod::llbt.fit카운트와 디자인 매트릭스 만 취하므로 조금 더 간단한 함수를 사용할 수도 있습니다 .)

R> res<-gnm(y~o1+o2+o3+o4+o5+o6, eliminate=mu, family=poisson, data=des)
R> summary(res)
  Call:
gnm(formula = y ~ o1 + o2 + o3 + o4 + o5 + o6, eliminate = mu, 
    family = poisson, data = des)

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-7.669  -4.484  -2.234   4.625  10.353  

Coefficients of interest:
   Estimate Std. Error z value Pr(>|z|)    
o1  1.05368    0.04665  22.586  < 2e-16 ***
o2  0.52833    0.04360  12.118  < 2e-16 ***
o3  0.13888    0.04297   3.232  0.00123 ** 
o4  0.24185    0.04238   5.707 1.15e-08 ***
o5  0.10699    0.04245   2.521  0.01171 *  
o6  0.00000         NA      NA       NA    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for poisson family taken to be 1)

Std. Error is NA where coefficient has been constrained or is unidentified

Residual deviance: 2212.7 on 70 degrees of freedom
AIC: 2735.3

제거 용어는 요약에서 성가신 매개 변수를 생략합니다. 그런 다음 가치있는 매개 변수 (델타)를 얻을 수 있습니다.

## calculating and plotting worth parameters
R> wmat<-llbt.worth(res)
        worth
o1 0.50518407
o2 0.17666128
o3 0.08107183
o4 0.09961109
o5 0.07606193
o6 0.06140979

그리고 당신은 그들을 플롯 할 수 있습니다

R> plotworth(wmat)

객체가 o1+o2+...+on많고 수식 객체를 빠르게 작성 하려면 다음을 사용할 수 있습니다.

R> n<-30
R> objnam<-paste("o",1:n,sep="")
R> fmla<-as.formula(paste("y~",paste(objnam, collapse= "+")))
R> fmla
y ~ o1 + o2 + o3 + o4 + o5 + o6 + o7 + o8 + o9 + o10 + o11 + 
    o12 + o13 + o14 + o15 + o16 + o17 + o18 + o19 + o20 + o21 + 
    o22 + o23 + o24 + o25 + o26 + o27 + o28 + o29 + o30

에 대한 수식을 생성합니다 gnm(필요하지 않음 llbt.fit).

있습니다 JSS의 문서 도 참조 https://r-forge.r-project.org/projects/prefmod/ 과를 통해 문서 ?llbt.design.


1
그것은 매우 철저한 반응입니다. 감사합니다. prefmod가 사용하기에 좋은 패키지 인 것 같습니다. 그런데이 모델을 사용하여 스포츠 경기 결과를 예측하려고합니다.
— 실버 피쉬

도움이된다면 문제 없습니다. 나는 당신이 어떻게 예측하는지 정확히 알지 못하지만 Leitner et al. 이러한 모델을 사용하여 스포츠 이벤트를 예측했습니다. 그의 논문 epubdev.wu.ac.at/2925 참조 . 행운을 빕니다.
— Momo

아마이 링크는 더 낫습니다 epubdev.wu.ac.at/view/creators/…
— Momo

이 데이터에서 개별 쌍 (예 : o1 및 o2)의 차이에 대한 유의성을 계산할 수 있습니까? 아니면 공식을 재정렬하고 o2를 마지막 요소로 사용하고 Std.error 추정없이 살아야합니까?
— TNT

1
오랜 시간이 지났으므로 선형 제한을 편리하게 사용할 수 있는지 여부를 기억하지 못하지만 귀하의 경우에 수행 할 수있는 것은 하나를 참조 레벨로 사용하고 o1을 말하고 다른 하나의 t 값을 사용하는 것입니다. 요약하면-o1과 o2의 차이가 0인지 여부를 효과적으로 테스트합니다.
— Momo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.