จะรับผลการทดสอบ Tukey HSD หลังการทดสอบในตารางที่แสดงคู่ที่จัดกลุ่มได้อย่างไร


13

ฉันชอบที่จะทำการทดสอบหลัง TukeyHSD หลังจาก Anova สองทางของฉันกับ R เพื่อรับตารางที่มีคู่ที่เรียงลำดับซึ่งจัดกลุ่มตามความแตกต่างที่สำคัญ (ขออภัยเกี่ยวกับถ้อยคำฉันยังใหม่กับสถิติ)

ฉันต้องการที่จะมีอะไรเช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นจัดกลุ่มด้วยดาวหรือตัวอักษร

ความคิดใด ๆ ฉันทดสอบฟังก์ชั่นHSD.test()จากagricolaeแพ็คเกจ แต่ดูเหมือนว่ามันไม่ได้จัดการกับตารางแบบสองทาง

คำตอบ:


22

agricolae::HSD.testฟังก์ชั่นไม่ตรงนั้น แต่คุณจะต้องปล่อยให้มันรู้ว่าคุณมีความสนใจในระยะการทำงานร่วมกัน นี่คือตัวอย่างที่มีชุดข้อมูล Stata:

library(foreign)
yield <- read.dta("http://www.stata-press.com/data/r12/yield.dta")
tx <- with(yield, interaction(fertilizer, irrigation))
amod <- aov(yield ~ tx, data=yield)
library(agricolae)
HSD.test(amod, "tx", group=TRUE)

สิ่งนี้ให้ผลลัพธ์ที่แสดงด้านล่าง:

Groups, Treatments and means
a        2.1     51.17547 
ab       4.1     50.7529 
abc      3.1     47.36229 
 bcd     1.1     45.81229 
  cd     5.1     44.55313 
   de    4.0     41.81757 
    ef   2.0     38.79482 
    ef   1.0     36.91257 
     f   3.0     36.34383 
     f   5.0     35.69507 

พวกเขาตรงกับสิ่งที่เราจะได้รับด้วยคำสั่งต่อไปนี้:

. webuse yield
. regress yield fertilizer##irrigation
. pwcompare fertilizer#irrigation, group mcompare(tukey)

-------------------------------------------------------
                      |                           Tukey
                      |     Margin   Std. Err.   Groups
----------------------+--------------------------------
fertilizer#irrigation |
                 1 0  |   36.91257   1.116571    AB    
                 1 1  |   45.81229   1.116571      CDE 
                 2 0  |   38.79482   1.116571    AB    
                 2 1  |   51.17547   1.116571         F
                 3 0  |   36.34383   1.116571    A     
                 3 1  |   47.36229   1.116571       DEF
                 4 0  |   41.81757   1.116571     BC   
                 4 1  |    50.7529   1.116571        EF
                 5 0  |   35.69507   1.116571    A     
                 5 1  |   44.55313   1.116571      CD  
-------------------------------------------------------
Note: Margins sharing a letter in the group label are
      not significantly different at the 5% level.

multcompแพคเกจนี้มีการสร้างภาพสัญลักษณ์ ( 'แสดงตัวอักษรขนาดกะทัดรัด' ดูอัลกอริทึมสำหรับการแสดงผลขนาดกะทัดรัดตัวอักษร: การเปรียบเทียบและประเมินผลสำหรับรายละเอียดเพิ่มเติม) ของการเปรียบเทียบจากจำนวนที่มีนัยสำคัญแม้ว่ามันจะไม่ได้แสดงไว้ในรูปแบบตาราง อย่างไรก็ตามมันมีวิธีการลงจุดซึ่งช่วยให้แสดงผลลัพธ์ได้อย่างสะดวกโดยใช้ boxplots สามารถเปลี่ยนแปลงลำดับการนำเสนอได้เช่นกัน (ตัวเลือกdecreasing=) และมีตัวเลือกมากมายสำหรับการเปรียบเทียบหลายรายการ นอกจากนี้ยังมีแพ็คเกจmultcompViewซึ่งขยายฟังก์ชั่นเหล่านั้น

นี่คือตัวอย่างเดียวกันที่วิเคราะห์ด้วยglht:

library(multcomp)
tuk <- glht(amod, linfct = mcp(tx = "Tukey"))
summary(tuk)          # standard display
tuk.cld <- cld(tuk)   # letter-based display
opar <- par(mai=c(1,1,1.5,1))
plot(tuk.cld)
par(opar)

การรักษาที่ใช้ตัวอักษรเดียวกันไม่แตกต่างกันอย่างมีนัยสำคัญในระดับที่เลือก (ค่าเริ่มต้นคือ 5%)

ป้อนคำอธิบายรูปภาพที่นี่

อนึ่งมีโครงการใหม่เป็นเจ้าภาพในปัจจุบันใน R-Forge ซึ่งมีลักษณะที่มีแนวโน้ม: factorplot มันรวมถึงการแสดงเส้นและตัวอักษรรวมทั้งภาพรวมของเมทริกซ์ (ผ่านทางพล็อตระดับ) ของการเปรียบเทียบแบบคู่ สามารถดูเอกสารการทำงานได้ที่นี่: factorplot: การปรับปรุงการนำเสนอความแตกต่างอย่างง่ายใน GLMs


ขอบคุณมากสำหรับคำตอบที่ครบถ้วนสมบูรณ์! ฉันจะลองวิธีการต่าง ๆ เหล่านั้นทันทีที่ฉันได้รับไม่กี่นาที ไชโย!
stragu

ฉันลองใช้ฟังก์ชั่นแพคเกจ multcomp ใส่เมื่อฉันใช้ฟังก์ชั่น 'cld ()' ที่ฉันได้รับข้อผิดพลาด 'ข้อผิดพลาด: sapply (split_names, length) == 2 ไม่ใช่ความจริงทั้งหมดทำไม?
stragu

1
@chtfn ดูเหมือนจะมีปัญหากับป้ายกำกับตัวแปร ดูที่รหัสแหล่งที่มาอย่างรวดเร็วบ่งชี้ว่าข้อความแสดงข้อผิดพลาดนี้มาจากการinsert_absorb()พยายามแยกการรักษา คุณสามารถลองเปลี่ยนตัวคั่นที่คุณใช้สำหรับการเข้ารหัสระดับคำศัพท์ที่ใช้ในการโต้ตอบได้หรือไม่ หากไม่มีตัวอย่างการทำงานก็ยากที่จะบอกว่าเกิดอะไรขึ้น
chl

ฉันคิดออก: ฉันมีคะแนนในชื่อจีโนไทป์และการรักษาของฉันและในขณะที่ qlht () ใช้จุดในการแบ่งชื่อคู่มันหลุดออก ขอบคุณมากสำหรับความช่วยเหลือของคุณ chl! :)
stragu

3
ฉันสังเกตเห็นว่าวันนี้ฉันต้องเพิ่มconsole=TRUEในHSD.test()เพื่อที่จะได้รับตารางในกรณีที่มีคนลองและไม่เห็นผลลัพธ์ agricolaeอาจจะมีการปรับปรุง
stragu

2

มีฟังก์ชั่นที่เรียกTukeyHSDว่าตามไฟล์ช่วยเหลือคำนวณชุดของช่วงความเชื่อมั่นในความแตกต่างระหว่างค่าเฉลี่ยของระดับของปัจจัยที่มีความน่าจะเป็นที่ครอบคลุมสำหรับครอบครัวที่ระบุ ช่วงเวลาจะขึ้นอยู่กับสถิติช่วงของนักเรียนวิธีการ "ความแตกต่างที่สำคัญอย่างชัดเจน" ของ Tukey สิ่งนี้ทำในสิ่งที่คุณต้องการหรือไม่?

http://stat.ethz.ch/R-manual/R-patched/library/stats/html/TukeyHSD.html


ขอขอบคุณสำหรับการตอบสนองของคุณ. ใช่ฉันลองฟังก์ชั่นนี้ แต่มันให้รายการเปรียบเทียบแบบดิบๆ สิ่งที่ฉันต้องการคือการเห็นพวกเขาจัดกลุ่มอย่างเช่นในภาพในคำถามของฉันเพื่อให้มีมุมมองที่ชัดเจนว่ากลุ่มใดแตกต่างกันในกลุ่มใดและในที่สุดก็เพิ่มชื่อกลุ่มในกราฟของฉัน (เช่น: a, ab, abc, bc , c)
stragu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.