การสร้างภาพข้อมูลที่ดีที่สุดสำหรับตารางฉุกเฉินคืออะไร


22

จุดไหนที่ดีที่สุดจากมุมมองเชิงสถิติเพื่อแสดงตารางฉุกเฉินซึ่งโดยทั่วไปแล้วจะถูกวิเคราะห์โดยการทดสอบไคสแควร์ มันเป็น barplot ที่หลบ, barplot ที่ซ้อนกัน, heatmap, พล็อตรูปร่าง, scatterplot ของ jitterred, พล็อตหลายบรรทัดหรืออย่างอื่น? หนึ่งควรแสดงค่าสัมบูรณ์หรือเปอร์เซ็นต์

แก้ไข: หรือตามที่ @forecaster แนะนำในความคิดเห็นตารางของตัวเลขเป็นพล็อตที่เรียบง่ายและน่าจะเพียงพอ


4
บางครั้งตารางข้อมูลเป็นวิธีการสร้างภาพข้อมูลที่ดีที่สุดเมื่อเทียบกับแปลง ตารางฉุกเฉินเป็นตัวอย่างคลาสสิคของสิ่งนั้น
ทำนาย

1
จุดสำคัญถึงแม้ว่าฉันจะไม่ยอมรับว่ามันเป็นตัวเลือกที่ดีที่สุดเสมอ
rnso

1
นั่นคือเหตุผลที่ฉันพูดว่า "บางครั้ง" ฉันอยากจะแนะนำสตีเฟ่นไม่กี่คนแสดงตัวเลขที่มีส่วนทั้งหมดให้กับตาราง
พยากรณ์

1
วิธีที่ดีที่สุดขึ้นอยู่กับสิ่งที่คุณต้องการแสดงว่าโต๊ะใหญ่แค่ไหน
kjetil b halvorsen

3
stats.stackexchange.com/questions/56322/ส่วนใหญ่ดูเหมือนจะตรงประเด็นที่นี่
Nick Cox

คำตอบ:


9

จะไม่มีวิธีแก้ปัญหาที่เหมาะกับขนาดเดียวที่นี่ หากคุณมีตารางที่ง่ายมาก (เช่น ) เพียงแค่แสดงตารางนั้นน่าจะดีที่สุด หากคุณต้องการรูปจริงโมเสกแปลง (ตามที่แนะนำ @xan) อาจเป็นจุดเริ่มต้นที่ดี มีตัวเลือกอื่น ๆ ที่คล้ายกับโมเสคแปลงรวมถึงแปลงตะแกรงแปลงสมาคมและแปลงแรงดันแบบไดนามิก (ดูคำถามของฉันที่นี่: เลือกแปลงตะแกรง / โมเสคสำหรับตารางฉุกเฉิน ); หนังสือของ Michael Friendly, การแสดงภาพข้อมูลหมวดหมู่ , เป็นทรัพยากรที่ดี (บนพื้นฐาน SAS) สำหรับหัวข้อนี้และแพคเกจ vcdเป็นทรัพยากรที่ดีสำหรับการนำแนวคิดเหล่านั้นไปใช้ในอาร์ 2×2

เนื่องจากตารางมีจำนวนแถวและคอลัมน์จำนวนมากขึ้นดังนั้นในความคิดของฉันจึงใช้งานได้ยากขึ้น ชนิดที่แตกต่างกันของตัวเลือกการสร้างภาพคือการดำเนินการ / พล็อตการวิเคราะห์การติดต่อ การวิเคราะห์ความสอดคล้องกันนั้นคล้ายคลึงกับการวิเคราะห์องค์ประกอบหลักทั้งในแถวและคอลัมน์ของตารางฉุกเฉิน จากนั้นทั้งคู่จะถูกพล็อตพร้อมกับบิท นี่คือตัวอย่างที่ใช้ R โดยใช้ข้อมูลจากคำตอบของ @ xan:

library(ca)
tab = as.table(rbind(c(28, 4,  0, 56),
                     c(38, 5,  9, 10),
                     c( 6, 6, 14, 13) ))
names(dimnames(tab)) = c("activity", "period")
rownames(tab)        = c("feed", "social", "travel")
colnames(tab)        = c("morning", "noon", "afternoon", "evening")
tab
#         period
# activity morning noon afternoon evening
#   feed        28    4         0      56
#   social      38    5         9      10
#   travel       6    6        14      13
plot(ca(tab))

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

ในการตีความพล็อตนี้จุดสองจุดที่ใกล้เคียงกันของประเภทเดียวกันคือยิ่งโปรไฟล์แถว / คอลัมน์ทั้งสองมีความคล้ายคลึงกันมากเท่าใด และยิ่งใกล้จุดที่มีประเภทต่างกันสองชนิดยิ่งมวลความน่าจะเป็นของพวกเขาอยู่ในเซลล์ที่เป็นจุดตัดมากขึ้น

ใน R มีแพ็คเกจ ca ; บทความสั้น ๆ นี้ ( pdf ) อาจมีประโยชน์เช่นกัน


มีประโยชน์มาก. เห็นได้ชัดว่ามันล้มเหลวด้วยค่าเล็กเช่น: tt = with (mtcars, ตาราง (ตัวประกอบ (เกียร์), ตัวประกอบ (vs))); พล็อต (CA (TT)); ข้อผิดพลาดใน x [, สลัว]: ตัวห้อยออกจากขอบเขต
rnso

นั่นเป็นเพราะปัจจัยหนึ่ง (เช่นfactor(vs)) มีเพียงสองระดับเท่านั้น คุณต้องการอย่างน้อยสาม ลองttt = with(mtcars, table(factor(gear), factor(cyl))); plot(ca(ttt))ดู
gung - Reinstate Monica

แสดงความสัมพันธ์ที่ดีมากระหว่างปัจจัยต่าง ๆ
rnso

หรือคุณสามารถแสดงตารางหลังจากเรียงลำดับแถวและคอลัมน์ใหม่ตามลำดับคะแนนการวิเคราะห์การติดต่อ
kjetil b halvorsen

แนวคิดที่น่าสนใจ @kjetilbhalvorsen ฉันไม่แน่ใจว่าจะรับสิ่งนั้นจากcaวัตถุได้อย่างไรดังนั้นฉันจึงเขียนโค้ดจากศูนย์ ถ้าฉันทำผิดพลาดคุณจะเรียงลำดับแถวc(1,3,2)& คอลัมน์c(4,1,3,2)ใหม่ หลังจากทำอย่างนั้นฉันไม่แน่ใจว่าฉันควรจะเห็นอะไรที่นี่ คุณมีอะไรในใจ
gung - Reinstate Monica

11

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

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

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


ดีจัง. ทั้งตัวเลขและสัดส่วนแสดง สามารถใส่ตัวเลขลงบนพล็อต หากมีการจัดเรียงลำดับของรายการแกน x จะดียิ่งขึ้น โดย dodged ฉันหมายถึง barplot ทั่วไปที่มีหมวดหมู่แบบเรียงต่อกันแทนที่จะเรียงซ้อนกัน (ดูตำแหน่ง = 'dodge' ในหน้านี้: r-bloggers.com/using-r-barplot-with-ggplot2 )
rnso

1
1 การออกแบบนี้มักจะทำงานได้ดีอย่างแน่นอนสำหรับข้อมูลที่ค่อนข้างง่าย ; ในทางกลับกันฉันพบว่ามันยากที่จะคิดถึงข้อมูลที่ซับซ้อนมากขึ้นอย่างรวดเร็วแม้จะมีการเน้นย้ำถึงวรรณกรรมในเรื่องความสามารถในการขยายไปยังตารางที่อาจเกิดขึ้นโดยพลการ แต่ถึงกระนั้นก็ไม่มีการออกแบบที่ทำงานได้ดีในสถานการณ์เช่นนี้ จุดเล็ก ๆ ที่มีตัวอย่างนี้คือคุณดูเหมือนจะยอมรับคำสั่งตามตัวอักษรเริ่มต้น "บ่าย" ... "เที่ยง" ที่เสนอโดยโปรแกรมของคุณในขณะที่การรักษาลำดับเวลาดูเหมือนเป็นทางเลือกที่เป็นธรรมชาติมากขึ้น
Nick Cox

8

ฉันยอมรับว่าพล็อต "ดีที่สุด" ไม่มีอยู่โดยไม่เกี่ยวข้องกับชุดข้อมูลผู้อ่านและวัตถุประสงค์ สำหรับตัวแปรที่วัดได้สองตัวแผนการกระจายนั้นเป็นการออกแบบที่ทำให้คนอื่น ๆ ทั้งหมดตื่นยกเว้นจุดประสงค์ที่เฉพาะเจาะจง แต่ไม่มีผู้นำตลาดดังกล่าวเห็นได้ชัดเจนสำหรับข้อมูลที่เป็นหมวดหมู่

จุดมุ่งหมายของฉันที่นี่เป็นเพียงการพูดถึงวิธีการง่ายๆที่มักค้นพบใหม่หรือคิดค้นใหม่ แต่ก็ยังมองข้ามแม้ใน monographs หรือตำราที่ครอบคลุมกราฟิกสถิติ

ตัวอย่างแรกครอบคลุมข้อมูลเดียวกันกับที่โพสต์โดย xan:

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

หากต้องการชื่อตามที่มักจะเป็นนี่คือบาร์ชาร์ต twoway (ในกรณีนี้) ฉันจะไม่แคตตาล็อกข้อกำหนดอื่น ๆ ที่นี่ยกเว้นว่าบาร์ชาร์ตหลายรายการเป็นอีกทางเลือกหนึ่งที่มีรสชาติคล้ายกัน (คัดค้านเล็ก ๆ ของฉันไปที่ "หลาย barchart" คือ "หลาย" ไม่ได้ออกกฎที่พบบ่อยมากแผนภูมิแท่งแบบเรียงซ้อนหรือด้านข้างในขณะที่ "twoway" ให้ฉันชัดเจนยิ่งขึ้นหมายถึงรูปแบบแถวและคอลัมน์แม้ในทางกลับกัน อาจใช้ตัวอย่างเพื่อทำให้ชัดเจน)

ข้อดีและข้อเสียสำหรับพล็อตประเภทนี้ก็เรียบง่าย แต่ฉันจะสะกดบางอย่างออกมา เนื่องจากฉันชอบการออกแบบนี้ (ซึ่งย้อนกลับไปอย่างน้อยในช่วงทศวรรษที่ 1930) คนอื่น ๆ อาจต้องการเพิ่มการวิพากษ์วิจารณ์ที่คมชัดยิ่งขึ้น

+1 แนวคิดนี้สามารถเข้าใจได้ง่ายโดยกลุ่มที่ไม่ใช่ด้านเทคนิค ความสูงของแท่งหรือความยาวแท่งเข้ารหัสความถี่ในตัวอย่างนี้ ในตัวอย่างอื่น ๆ พวกเขาสามารถเข้ารหัสร้อยละคำนวณในแบบที่คุณต้องการเศษ ฯลฯ

2 แถวและคอลัมน์โครงสร้างตรงกับของตาราง คุณสามารถเพิ่มค่าตัวเลขได้เช่นกัน จำนวนน้อยมากและแม้กระทั่งค่าศูนย์โดยนัยชัดเจนซึ่งไม่ได้เป็นกรณีที่มีการออกแบบอื่น ๆ (เช่นแผนภูมิแท่งซ้อนกัน, แปลงโมเสค) โดยปกติแล้วการติดฉลากแถวและคอลัมน์จะมีประสิทธิภาพมากกว่าการเพิ่มคีย์หรือคำอธิบายโดยมี "การกลับไปกลับมา" ทางจิตที่ต้องการ ดังนั้นการออกแบบนี้ทำให้เกิดกราฟและความคิดแบบตารางซึ่งทำให้ผู้อ่านบางคนดูลำบาก ในทางกลับกันฉันขอยืนยันว่าความแตกต่างที่ชัดเจนระหว่างตัวเลขและตารางเป็นเพียงการแฮงค์ในอดีตล้าสมัยแล้วในขณะนี้ที่นักวิจัยสามารถจัดเตรียมเอกสารของตนเองและไม่ต้องพึ่งพานักออกแบบผู้แต่งและเครื่องพิมพ์

3 ส่วนขยายสามทางและการออกแบบที่สูงขึ้นได้ง่ายในหลักการ วางตัวแปรสองตัวขึ้นไปเป็นตัวแปรประกอบบนแกนใดแกนหนึ่งหรือทั้งสองหรือให้อาร์เรย์ของพล็อตดังกล่าว ตามธรรมชาติยิ่งการออกแบบซับซ้อนยิ่งตีความได้ยากขึ้นเท่านั้น

4 การออกแบบอย่างชัดเจนช่วยให้ตัวแปรลำดับในทั้งสองแกน คำสั่งสามารถแสดงได้ (เช่น) โดยการแรเงาที่เหมาะสมรวมถึงลำดับของหมวดหมู่บนแกนนั้น ลำดับหมวดหมู่บนแกนจะถูกกำหนดโดยความหมายของพวกเขาหรือดีกว่าที่กำหนดโดยความถี่; ลำดับตัวอักษรตามฉลากข้อความอาจเป็นค่าเริ่มต้น แต่ไม่ควรพิจารณาเป็นตัวเลือกเดียว

-1 โดยการทั่วไปในการออกแบบพล็อตอาจจะมีประสิทธิภาพน้อยลงในการแสดงบางชนิดของความสัมพันธ์ โดยเฉพาะพล็อตโมเสกสามารถทำให้การแยกออกจากอิสรภาพชัดเจนมาก ในทางกลับกันเมื่อความสัมพันธ์ระหว่างตัวแปรจัดหมวดหมู่มีความซับซ้อนหรือไม่ชัดเจนโดยทั่วไปแล้วจะไม่มีกราฟที่แสดงได้ดีกว่าความจริงที่อ่อนแอ

-2 ในบางวิธีการออกแบบไม่มีประสิทธิภาพในการใช้พื้นที่โดยออกจากห้องสำหรับการผสมข้ามทุกครั้งโดยไม่คำนึงว่าจะเกิดขึ้นหรือไม่บ่อยแค่ไหน นี่คือรองของหลักการเดียวกันถือว่าเป็นคุณธรรม การออกแบบเฉพาะด้านบนประเภทช่องว่างอย่างเท่าเทียมกันโดยไม่คำนึงถึงความถี่ การเสียสละที่มักจะเสียสละฉลากที่อ่านได้ซึ่งฉันให้คุณค่าอย่างมาก ในตัวอย่างนี้ป้ายข้อความเกิดขึ้นทั้งหมดนั้นสั้นมาก แต่มันก็ยังห่างไกลจากเรื่องปกติ

หมายเหตุ: ข้อมูลของ xan นั้นถูกประดิษฐ์ขึ้นมาเท่านั้นดังนั้นฉันจะไม่ลองตีความอีกต่อไป แต่ภูมิปัญญาบางอย่างของบ้านสมควรได้รับคำพูดสุดท้ายที่นี่: การออกแบบที่ดีที่สุดสำหรับคุณคือสิ่งที่สื่อถึงคุณและผู้อ่านได้ดีที่สุดถึงโครงสร้างของข้อมูลจริงที่คุณสนใจ

ตัวอย่างอื่น ๆ ได้แก่

คุณจะเห็นภาพความสัมพันธ์ระหว่างตัวแปรเด็ดขาด 3 ตัวได้อย่างไร

กราฟสำหรับความสัมพันธ์ระหว่างตัวแปรอันดับสอง


1
+1 สำหรับตัวเลือกที่ทำงานได้อื่น & การอภิปรายที่ยอดเยี่ยม ให้ฉันถามคำถามเกี่ยวกับบาร์โค้ด 2 ทาง / ชี้ไปที่ข้อเสียอื่น ๆ ที่เป็นไปได้: มี 'กล่อง' ที่ไม่มีเครื่องหมาย แต่สามารถรับรู้ได้อย่างชัดเจนซึ่งอาจจะมีการพล็อตบาร์ เมื่อแถบเข้าใกล้ด้านบนของกล่องจะถึง 100% การกำหนดมูลค่านั้นเป็นอย่างไร? (NB ตารางที่อาจเกิดขึ้นได้มักจะมีหลายค่าเสมอในบางกรณี w / a ทั้งหมดที่ทราบ) การสร้างผลรวมของแถวของกล่องสี่เหลี่ยมหรือผลรวมของคอลัมน์จะทำให้การอนุมานการรับรู้แตกต่างกัน (ไม่ปรากฏว่ามีการใช้ผลรวมของตารางเนื่องจากแถบจำนวนมากจะเล็กเกินไปที่จะแยกความแตกต่าง)
gung - Reinstate Monica

1
@ gung ขอบคุณ ฉันสามารถแสดงความคิดเห็นในโปรแกรม Stata ของตัวเองที่ใช้ที่นี่และในตัวอย่างของฉันที่อื่นใน CV โปรแกรม tabplotมาจาก SSC ความสูงของแท่งนั้นจำเป็นต้องมีเศษส่วนของความสูงของแท่งที่สูงที่สุดหรือยาวที่สุด พื้นที่ที่มีอยู่สำหรับสิ่งนั้นถูกกำหนดโดยจำนวนแถวที่ถูกแสดง ผู้ใช้สามารถลบล้างขนาดช่องว่างที่เป็นค่าเริ่มต้นได้ แต่จะเสี่ยงต่อการสัมผัสหรือแยกกัน หากแท่งอาจเป็นลบเช่นเดียวกับบวกสิ่งต่างๆก็ไม่ง่ายขึ้น ฉันคิดว่าข้อ จำกัด เดียวกันจะกัดกับโปรแกรมอื่น ๆ ในระยะสั้นบาร์ที่ไม่ได้สัมผัสหมายถึงพื้นที่สีขาว!
Nick Cox

8

เพื่อเติมเต็มคำตอบ @ gung's และ @ xan ต่อไปนี้เป็นตัวอย่างของ mosaic และแผนการเชื่อมโยงที่ใช้vcdใน R

> tab
        period
activity morning noon afternoon evening
  feed        28    4         0      56
  social      38    5         9      10
  travel       6    6        14      13

เพื่อรับแปลง:

require(vcd)
mosaic(tab, shade=T, legend=T)
assoc(tab, shade=T, legend=T)

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

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

ทั้งสองออกเดินทางจากความถี่ที่คาดหวังอย่างสังหรณ์ใจ ... ค่าเริ่มต้นคือรูปแบบของความเป็นอิสระร่วมกันแต่มันสามารถเปลี่ยนแปลงได้ (เช่นเพื่อความเป็นอิสระร่วมกันหากมีตัวแปรตอบสนองที่ชัดเจน) ผ่านการexpectedโต้แย้ง

ดูสิ่งนี้ด้วย:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.