Box Plot
วิธีง่ายๆ ในการเปรียบเทียบการกระจายตัวของข้อมูลหลายชุดคือการใช้ box plot โค้ดในแบบฝึกหัดนี้จะช่วยสร้าง box plot หลายกราฟเพื่อนำเสนอภาพรวมอย่างกระชับ
ออบเจกต์ all_book_polarity ถูกโหลดไว้แล้ว data frame นี้มีสองคอลัมน์คือ book และ polarity โดยนำหนังสือทุกเล่มมาผ่านฟังก์ชัน polarity() ของ qdap ตัวอย่าง 3 แถวแรกของออบเจกต์นี้มีดังนี้
| book | polarity | |
|---|---|---|
| 14 | huck | 0.2773501 |
| 22 | huck | 0.2581989 |
| 26 | huck | -0.5773503 |
แบบฝึกหัดนี้แนะนำฟังก์ชัน tapply() ซึ่งช่วยให้นำฟังก์ชันไปใช้กับ ragged array ได้ โดยรับเวกเตอร์ของค่าและเวกเตอร์ของ factor เป็น input สำหรับแต่ละคู่ factor-ค่า พารามิเตอร์ตัวที่สามซึ่งเป็นฟังก์ชัน เช่น min() จะถูกนำไปใช้กับข้อมูลนั้น ตัวอย่างเช่น โค้ดด้านล่างแสดงการใช้ tapply() กับสองเวกเตอร์
f1 <- as.factor(c("Group1", "Group2", "Group1", "Group2"))
stat1 <- c(1, 2, 1, 2)
tapply(stat1, f1, sum)
ผลลัพธ์จะเป็น array ที่ Group1 มีค่า 2 (1+1) และ Group2 มีค่า 4 (2+2)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ความรู้สึกใน R
คำแนะนำการฝึกหัด
- เนื่องจากโหลดข้อมูลไว้แล้ว ให้ตรวจสอบโครงสร้างของ
all_book_polarityด้วยstr() - ใช้
tapply()โดยส่งall_book_polarity$polarity,all_book_polarity$bookและฟังก์ชันsummary()เป็น argument เพื่อแสดงสถิติสรุปของpolarity()สำหรับหนังสือทั้ง 4 เล่ม โดยคาดว่า Oz และ Huck Finn จะมีค่าเฉลี่ยสูงกว่า Agamemnon หรือ Moby Dick ให้สังเกตค่า median อย่างใกล้ชิด - สร้าง box plot ด้วย
ggplot()โดยส่งall_book_polarityเป็นข้อมูล- กำหนด aesthetics เป็น
aes(x = book, y = polarity) - เพิ่ม
geom_boxplot()ด้วยcol = "darkred"โดยใช้+ให้สังเกตเส้นสีเข้มในแต่ละกล่องซึ่งแทนค่า median - จากนั้นเพิ่มเลเยอร์
geom_jitter()เพื่อแสดงจุดข้อมูลของแต่ละคำ
- กำหนด aesthetics เป็น
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Examine
___
# Summary by document
___
# Box plot
ggplot(___, aes(x = ___, y = ___)) +
___(fill = c("#bada55", "#F00B42", "#F001ED", "#BA6E15"), col = "___") +
___(position = position_jitter(width = 0.1, height = 0), alpha = 0.02) +
theme_gdocs() +
ggtitle("Book Polarity")