ฉันคิดว่าแพคเกจที่ดีที่สุดสำหรับการเปรียบเทียบข้อมูลคู่ (PC) ใน R คือแพ็คเกจ prefmodซึ่งช่วยให้การเตรียมข้อมูลให้พอดี (รุ่นบันทึกเชิงเส้น) BTL ใน R สะดวกใช้ Poisson GLM (แม่นยำมากขึ้นเป็น log multinomial ใน Poisson สูตรดูเช่นการสนทนานี้ )
สิ่งที่ดีคือมันมีฟังก์ชั่น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
โปรดทราบว่าคำว่ากำจัดจะตัดพารามิเตอร์รำคาญออกจากบทสรุป จากนั้นคุณจะได้รับพารามิเตอร์ที่คุ้มค่า (delta ของคุณ) เป็น
## 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
และเอกสารผ่านทาง