การแสดงภาพ node และ edge ที่สำคัญ
ปัญหาหนึ่งของชุดข้อมูลโรคหัดคือมีบุคคล 3 ราย ที่ไม่ทราบว่าติดเชื้อมาจากใคร หนึ่งในนั้น (vertex 184) ดูเหมือนจะเป็นต้นเหตุของการแพร่เชื้อไปยังบุคคลอื่นอีกจำนวนมาก แม้ว่าจะไม่ได้แพร่เชื้อโดยตรงให้กับหลายคน อย่างไรก็ตาม เนื่องจาก vertex 184 ไม่มี edge ขาเข้าในเครือข่าย จึงดูเหมือนมีค่า betweenness ต่ำ วิธีหนึ่งในการสำรวจความสำคัญของ vertex นี้คือการแสดงภาพระยะทาง geodesic ของการเชื่อมต่อที่แผ่ออกจากบุคคลนี้ ในแบบฝึกหัดนี้ให้สร้างพล็อตของระยะทางเหล่านี้จาก patient zero
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายใน R
คำแนะนำการฝึกหัด
- ใช้
make_ego_graph()เพื่อสร้างเครือข่ายย่อยที่ประกอบด้วย vertex ที่เชื่อมต่อกับ vertex 184 อาร์กิวเมนต์แรกคือกราฟต้นฉบับgอาร์กิวเมนต์ที่สองคือจำนวนการเชื่อมต่อสูงสุดที่ vertex ใดก็ตามต้องใช้เพื่อเชื่อมต่อถึง vertex ที่สนใจ ในกรณีนี้ใช้diameter()เพื่อคืนค่าความยาวของเส้นทางที่ยาวที่สุดในเครือข่าย อาร์กิวเมนต์ที่สามคือ vertex ที่สนใจซึ่งก็คือ 184 และอาร์กิวเมนต์สุดท้ายคือ mode ในที่นี้ให้รวมการเชื่อมต่อทั้งหมดโดยไม่คำนึงถึงทิศทาง - สร้างออบเจกต์
distsที่เก็บค่าระยะทาง geodesic ของทุก vertex จาก vertex 184 โดยใช้ฟังก์ชันdistances() - กำหนด attribute
colorให้กับแต่ละ vertex โดยเลือกสีตามระยะทาง geodesic palette สีcolorsมีความยาวเท่ากับระยะทาง geodesic สูงสุดบวกหนึ่ง เพื่อให้ vertex ที่มีระยะทางเท่ากันแสดงสีเดียวกัน และ patient zero มีสีเฉพาะของตัวเอง - ใช้
plot()เพื่อแสดงภาพเครือข่ายg184โดยกำหนด label ของ vertex เป็นระยะทาง geodesicdists
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Make an ego graph
g184 <- ___(g, ___(g), nodes = '184', mode = c("all"))[[1]]
# Get a vector of geodesic distances of all vertices from vertex 184
dists <- ___(g184, "184")
# Create a color palette of length equal to the maximal geodesic distance plus one.
colors <- c("black", "red", "orange", "blue", "dodgerblue", "cyan")
# Set color attribute to vertices of network g184.
V(___)$color <- colors[dists+1]
# Visualize the network based on geodesic distance from vertex 184 (patient zero).
___(___,
vertex.label = ___,
vertex.label.color = "white",
vertex.label.cex = .6,
edge.color = 'black',
vertex.size = 7,
edge.arrow.size = .05,
main = "Geodesic Distances from Patient Zero"
)