জটিল সূত্র ছাড়াই ব্র্যাডলি – টেরি – লুস মডেলটি কীভাবে ফিট করবেন?


9

ব্র্যাডলি-টেরি-লুস (BTL) মডেল যে , যেখানে সম্ভাব্যতা যে অবজেক্ট "better" বা হতে বিচার হবে, , ও এবং এর চেয়ে ভারী ইত্যাদিপিআমি=আমিটি-1(δ-δআমি)পিআমিআমিδআমিδ

এটি পরিবার = দ্বিপদী সহ গ্ল্যাম ফাংশনের প্রার্থী বলে মনে হচ্ছে। তবে সূত্রটি "সাফল্য ~ এস 1 + এস 2 + এস 3 + এস 4 + ..." এর মতো কিছু হবে, যেখানে স্ন একটি ডামি ভেরিয়েবল, যা 1 এর তুলনায় প্রথম বস্তু, -1 যদি এটি হয় দ্বিতীয়টি, এবং অন্যথায় 0 তারপরে Sn এর সহগ হবে সংশ্লিষ্ট ।টিএকটিএন

এটি কয়েকটি কয়েকটি অবজেক্টের সাথে পরিচালনা করা মোটামুটি সহজ হবে তবে এটি একটি দীর্ঘ সূত্র হতে পারে এবং প্রতিটি বস্তুর জন্য একটি ডামি ভেরিয়েবল তৈরি করার প্রয়োজন হতে পারে। আমি কেবল আশ্চর্য হলাম যে কোনও সহজ পদ্ধতি আছে কিনা। ধরুন যে দুটি বস্তুর তুলনা করা হচ্ছে তার নাম বা সংখ্যাটি ভেরিয়েবল (ফ্যাক্টর?) অবজেক্ট 1, এবং অবজেক্ট 2 এবং সাফল্য 1 হবে যদি 1 অবজেক্টকে আরও ভাল বিচার করা হয়, এবং বস্তু 2 হলে 0 হয়।


3
ব্র্যাডলি-টেরি মডেলের জন্য একটি আর প্যাকেজ রয়েছে। রিসেকের দিকে তাকাও।
কার্ডিনাল

আমি সম্পর্কিত প্রশ্নে কিছু লিঙ্কও সরবরাহ করেছি
chl

: প্যাকেজ @cardinal উল্লেখ করা হয়েছে, BTW BradleyTerry2
conjugateprior

উত্তর:


17

আমি মনে করি আর-এর পেয়ার্ড তুলনা (পিসি) ডেটার জন্য সেরা প্যাকেজ হ'ল প্রিফমড প্যাকেজ , যা আর্টে বিটিএল মডেলগুলিতে ফিট করার জন্য সুবিধাজনকভাবে ডেটা প্রস্তুত করতে দেয় It এটি পোইসন জিএলএম ব্যবহার করে (আরও সঠিকভাবে, পোয়েসনে একটি বহুজাতিক লগইট সূচনা দেখুন যেমন এই আলোচনা )।

সুন্দর জিনিসটি এটির একটি ফাংশন রয়েছে 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

দয়া করে নোট করুন যে অ্যালিমিট শব্দটি সারাংশ থেকে উপদ্রব পরামিতি বাদ দেবে it এরপরে আপনি মূল্যবান প্যারামিটারগুলি (আপনার ডেল্টাস) পেতে পারেন

## 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)।

একটি জেএসএস নিবন্ধ আছে , এছাড়াও https://r-forge.r-project.org/projects/prefmod/ এবং এর মাধ্যমে ডকুমেন্টেশন দেখুন ?llbt.design


1
এটি খুব গভীর প্রতিক্রিয়া। ধন্যবাদ. মনে হচ্ছে প্রিফমড ব্যবহার করার জন্য একটি ভাল প্যাকেজ হবে। আমি মডেলটি ব্যবহার করে স্পোর্টস ম্যাচের ফলাফলগুলির পূর্বাভাস দেওয়ার চেষ্টা করতে আগ্রহী।
সিলভারফিশ

সমস্যা নেই, খুশী যদি এটি সাহায্য করে। আপনি কীভাবে ভবিষ্যদ্বাণী করতে চেয়েছিলেন তা আমি ঠিক জানি না তবে লেটনার এট আল। খেলাধুলার ইভেন্টগুলির পূর্বাভাস দেওয়ার জন্য এই মডেলগুলি ব্যবহার করেছেন। তার থিসিস epubdev.wu.ac.at/2925 দেখুন । শুভকামনা।
মোমো

হয়তো এই লিঙ্কে উত্তম epubdev.wu.ac.at/view/creators/...
মম

এই ডেটা থেকে পৃথক জোড়া (যেমন o1 এবং o2) এর মধ্যে পার্থক্যের জন্য তাত্পর্য গণনা করা সম্ভব? অথবা আপনাকে সূত্রটি পুনরায় সাজানো, শেষ ফ্যাক্টর হিসাবে o2 ব্যবহার করতে হবে এবং সেই ক্ষেত্রে কোনও স্টাডি.অরার অনুমান ছাড়াই বাঁচতে হবে?
টিএনটি

1
এটি একটি সময় হয়ে গেছে, সুতরাং আপনি স্বাচ্ছন্দ্যে রৈখিক বিধিনিষেধ ব্যবহার করতে পারেন কিনা তা মনে নেই তবে আপনি আপনার ক্ষেত্রে যা করতে পারেন তা হ'ল একটিকে রেফারেন্স স্তর হিসাবে ব্যবহার করুন, o1 বলুন এবং অপরের মান টি ব্যবহার করুন, বলুন o2, সংক্ষিপ্তসার থেকে - এটি কার্যকরভাবে একটি পরীক্ষা গঠন করে যে o1 এবং o2 এর মধ্যে পার্থক্যটি শূন্য কিনা।
মোমো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.