Meningkatkan analisis data melalui visualisasi data yang lebih baik?

8

Saya menjalankan empat program secara a, b, c, d paralel pada dua mesin yang berbeda Xdan Ysecara terpisah selama 10 kali. Di bawah ini adalah contoh data. Waktu berjalan (milidetik) dalam 10menjalankan setiap program diberikan dengan nama masing-masing.

Machine-X:

a b  c d
29 40 21 18
28 43 20 18
30 49 20 28
29 50 19 19
28 51 21 19
29 41 30 29
32 47 10 18
29 43 20 18
28 51 30 29
29 41 21 19


Machine-Y:

a b c d
16 24 19 18
16 24 19 18
16 23 19 18
16 24 19 18
16 24 19 18
16 22 19 18
16 24 19 18
16 24 19 18
16 24 19 18
16 24 19 18

Saya perlu membuat grafik untuk memvisualisasikan yang berikut:

  1. Bandingkan kinerja masing-masing program (yaitu waktu berjalan) pada mesin X dan Y.
  2. Bandingkan variasi waktu menjalankan setiap program pada mesin X dan Y
  3. Mesin mana yang adil dalam menyediakan sumber daya komputasi untuk setiap program?
  4. Bandingkan total waktu berjalan (a + b + c + d) dari empat program dalam setiap proses pada mesin X dan Y.
  5. Bandingkan variasi dalam total waktu berjalan dari empat program dalam 10 berjalan.

Untuk 1 dan 2, saya membuat Gambar A, Gambar B adalah untuk 3, dan angka C untuk 4 dan 5. Namun, saya tidak puas karena ada tiga grafik dan sulit untuk mencocokkan ketiga grafik di kertas saya. Selain itu, saya percaya bahwa kita dapat menghasilkan yang lebih baik dari ini. Saya sangat menghargai jika seseorang membantu saya untuk menggambar satu atau dua grafik yang bagus alih-alih tiga dalam R sambil memenuhi persyaratan saya. Silakan lihat di bawah untuk kode R yang saya gunakan untuk menghasilkan grafik ini.

Gambar A:

Gambar A

Gambar B: Sumbu X menunjukkan proses, Sumbu Y menunjukkan waktu berjalan dari empat program dalam proses tertentu.

Gambar B

Gambar C:

Gambar C

Kode R

> pdf("Figure A.pdf")
> par(mfrow=c(1,2))
> boxplot(x,boxwex=0.4, ylim=c(15, 60))
> mtext("Time", side=2, line=2)
> mtext("Running times of each program in 10 runs", side=3, line=2, at=6,cex=1.4)
> mtext("Machine X", side=3, line=0.5, at=2,cex=1.1)
> boxplot(y,boxwex=0.4, ylim=c(15, 60))
> mtext("Machine Y", side=3, line=0.4, at=2,cex=1.1)
> dev.off()



> pdf("Figure B.pdf")
> par(mfrow=c(1,2))
>  boxplot(t(x),boxwex=0.4, ylim=c(0,50))
> mtext("Run Number", side=1, line=2, at=12, cex=1.2)
> mtext("Fairness", side=3, line=2, at=12,cex=1.4)
>  mtext("Machine X", side=3, line=0.5, at=5,cex=1.1)
> boxplot(t(y),boxwex=0.4, ylim=c(0,50))
> mtext("Machine Y", side=3, line=0.4, at=5,cex=1.1)
> dev.off()


> pdf("Figure C.pdf")
> par(mfrow=c(1,2))
> barplot(t(x), ylim=c(0,150),names=1:10,col=mycolor)
> mtext("Run Number", side=1, line=2, at=14, cex=1.2)
> mtext("Total Running-Times in 10 Runs", side=3, line=2, at=14, cex=1.2)
> mtext("Machine X", side=3, line=0.5, at=5,cex=1.1)
> barplot(t(y), ylim=c(0,150), names=1:10,col=mycolor)
> mtext("Machine Y", side=3, line=0.5, at=5,cex=1.1)
> legend("topright",legend=c("a","b","c","d"),fill=mycolor,cex=1.1)
> dev.off()
samarasa
sumber

Jawaban:

12

Meskipun responden lain telah memberikan wawasan yang bermanfaat, saya mendapati diri saya tidak setuju dengan beberapa sudut pandang mereka. Secara khusus, saya percaya bahwa grafik yang dapat menunjukkan detail data (tanpa berantakan) lebih kaya dan lebih bermanfaat untuk dilihat daripada yang secara ringkas meringkas atau menyembunyikan data, dan saya percaya semua data menarik, bukan hanya untuk komputer X. Mari kita lihat.

Alur waktu dengan algoritma dan komputer

(Saya menunjukkan plot kecil di sini untuk menunjukkan bahwa cukup banyak angka dapat ditampilkan, secara rinci, dalam ruang kecil.)

Plot ini menunjukkan nilai data individual, semuanya dari mereka. Ini menggunakan jarak sepanjang sumbu y untuk mewakili waktu komputasi, karena orang dapat paling cepat dan akurat membandingkan jarak pada sumbu umum (seperti yang ditunjukkan oleh penelitian Bill Cleveland). Untuk memastikan bahwa variabilitas dipahami dengan benar dalam konteks waktu aktual, sumbu y diperluas ke nol: memotongnya pada nilai positif apa pun akan membesar-besarkan variasi relatif dalam pengaturan waktu, memperkenalkan "Lie Factor" (dalam terminologi Tufte) .80=2×4×10

Grafik geometri (penanda titik versus segmen garis) dengan jelas membedakan komputer X (penanda) dari komputer Y (segmen). Variasi dalam simbolisme - baik bentuk dan warna untuk penanda titik - serta variasi posisi sepanjang sumbu x membedakan program dengan jelas. (Menggunakan bentuk menjamin perbedaan akan tetap ada bahkan dalam rendering skala abu-abu, yang mungkin dalam jurnal cetak.)

Program-program tersebut tampaknya tidak memiliki urutan bawaan, jadi tidak ada artinya untuk mempresentasikannya secara alfabet dengan nama kode mereka "a", ..., "d". Kebebasan ini telah dieksploitasi untuk mengurutkan hasil dengan waktu rata-rata yang diperlukan oleh komputer X. Perubahan sederhana ini, yang tidak memerlukan kompleksitas atau tinta tambahan, mengungkapkan pola yang menarik: timing relatif dari program pada komputer Y berbeda dari timing relatif pada komputer X. Meskipun ini mungkin atau mungkin tidak signifikan secara statistik, ini adalah fitur data yang secara gamblang grafik ini jelaskan. Itulah yang kami harapkan akan dilakukan oleh grafik yang bagus.

Dengan membuat penanda titik cukup besar, mereka hampir berbaur secara visual menjadi representasi grafis dari total variabilitas berdasarkan program. (Blending kehilangan beberapa informasi: kita tidak melihat di mana tumpang tindih terjadi, tepatnya. Ini dapat diperbaiki dengan sedikit jittering poin dalam arah horizontal, sehingga menyelesaikan semua tumpang tindih.)

Grafik ini saja sudah cukup untuk menyajikan data. Namun, ada banyak yang bisa ditemukan dengan menggunakan teknik yang sama untuk membandingkan timing dari satu run ke run lainnya.

Plot "Keadilan"

Kali ini, posisi horizontal membedakan komputer Y dari komputer X, pada dasarnya dengan menggunakan panel berdampingan. (Garis besar di sekitar masing-masing panel telah dihapus, karena mereka akan mengganggu perbandingan visual yang ingin kami buat di plot). Dalam setiap panel, posisi membedakan proses. Persis seperti pada plot pertama - dan menggunakan skema penanda yang sama untuk membedakan program - penanda bervariasi dalam bentuk dan warna. Ini memfasilitasi perbandingan antara kedua plot.

Perhatikan kontras visual dalam pola penanda antara dua panel: ini memiliki kecepatan yang tidak dimiliki oleh tabel angka, yang harus dipindai dengan cermat sebelum orang menyadari bahwa komputer Y sangat konsisten dalam pengaturan waktunya.

Marker digabungkan dengan garis putus-putus samar untuk menyediakan koneksi visual dalam setiap program. Garis-garis ini adalah tinta ekstra, tampaknya tidak perlu untuk menyajikan data, jadi saya curiga Profesor Tufte akan menghindarinya. Namun, saya menemukan mereka berfungsi sebagai panduan visual yang berguna untuk memisahkan kekacauan di mana penanda untuk program yang berbeda hampir tumpang tindih.

Sekali lagi, saya anggap run itu independen dan oleh karena itu run number tidak ada artinya. Sekali lagi kita dapat mengeksploitasi itu: secara terpisah di dalam setiap panel, proses telah diurutkan berdasarkan total waktu untuk keempat algoritma. (Sumbu x tidak memberi label angka run, karena ini hanya akan menjadi pengalih perhatian.) Seperti pada plot pertama, urutan ini menunjukkan beberapa pola korelasi yang menarik antara timing dari empat algoritma dalam setiap run. Sebagian besar variasi untuk komputer X adalah karena perubahan dalam algoritma "b" (kotak merah). Kami sudah melihat itu di grafik pertama. Performa total terburuk, bagaimanapun, adalah karena dua kali panjang untuk algoritma "c" dan "d" (berlian emas dan segitiga hijau, masing-masing), dan ini terjadi dalam dua run yang sama. Sangat menarik bahwa outlier untuk program "a" dan "c" keduanya terjadi dalam jangka yang sama. Pengamatan ini dapat mengungkapkan informasi yang berguna tentang variasi dalam waktu program untuk komputer X. Mereka adalah contoh bagaimana karena grafik ini menunjukkan rincian data (daripada ringkasan seperti bar atau plot kotak atau apa pun), banyak yang dapat dilihat mengenai variasi dan korelasi- -tapi saya tidak perlu menjelaskannya di sini; Anda bisa menjelajahinya sendiri.

Saya membuat grafik ini tanpa memikirkan "cerita" atau "memutar" data, karena saya ingin pertama-tama melihat apa yang dikatakan data. Grafik seperti itu tidak akan pernah menghiasi halaman USA Today, mungkin, tetapi karena kemampuan mereka untuk mengungkapkan pola dengan memungkinkan perbandingan visual yang cepat dan akurat,mereka adalah kandidat yang baik untuk mengkomunikasikan hasil kepada khalayak ilmiah atau teknis. (Yang tidak berarti mereka tanpa cacat: ada beberapa cara yang jelas untuk memperbaikinya, termasuk jittering di pertama dan memasok legenda yang baik dan label yang bijaksana di keduanya.) Jadi ya, saya setuju bahwa perhatian kepada audiens potensial adalah penting, tetapi saya tidak yakin bahwa grafik harus dibuat dengan maksud mengadvokasi atau menekan sudut pandang tertentu.

Singkatnya, saya ingin menawarkan saran ini.

  • Gunakan prinsip-prinsip desain yang ditemukan dalam literatur tentang kartografi dan ilmu saraf kognitif (misalnya, Alan MacEachren ) untuk meningkatkan peluang bahwa pembaca akan menafsirkan grafik Anda sesuai keinginan Anda dan bahwa mereka akan dapat menarik kesimpulan yang jujur, tidak memihak, dari mereka.

  • Gunakan prinsip-prinsip desain yang ditemukan dalam literatur pada grafik statistik (misalnya, Ed Tufte dan Bill Cleveland ) untuk membuat presentasi yang kaya data informatif.

  • Bereksperimen dan menjadi kreatif. Prinsip adalah titik awal untuk membuat grafik statistik, tetapi mereka dapat dilanggar. Pahami prinsip mana yang Anda langgar dan mengapa.

  • Bertujuan untuk wahyu daripada ringkasan belaka. Grafik yang memuaskan dengan jelas mengungkapkan pola minat pada data. Grafik yang bagus akan mengungkapkan pola yang tidak terduga dan mengundang kita untuk membuat perbandingan yang mungkin tidak pernah kita pikirkan sebelumnya. Mungkin mendorong kita untuk mengajukan pertanyaan baru dan lebih banyak pertanyaan. Itulah cara kita memajukan pemahaman kita.

whuber
sumber
2
+1 Jawaban yang fantastis! Paragraf pertama dan terakhir saja merupakan saran yang bagus, dan rincian di bagian tengahnya menunjukkan dengan tepat seperti apa grafik yang hebat dan harus terlihat.
Aaron meninggalkan Stack Overflow
@whuber: Jawaban bagus! Terima kasih. Bisakah Anda juga membagikan kode yang Anda gunakan untuk angka-angka itu? Apakah itu kode R?
samarasa
@kkp Ini bukan kode R: ini adalah grafik Mathematica . (Jika Anda memiliki akses ke perangkat lunak ini, saya akan senang membagikan kode yang saya gunakan.) Mereka mudah ditiru di R menggunakan perintah plot , baris , dan poin . Sebagian besar pekerjaan melibatkan pengaturan opsi grafik dan dalam menetapkan koordinat horizontal ke data. Paket seperti ggplot mungkin mengurangi sebagian pekerjaan ini.
whuber
@ Harun Terima kasih; Pendapat Anda, sebagai seorang ahli dalam grafik statistik, sangat dihargai.
whuber
3

Plot memungkinkan Anda menceritakan sebuah kisah, untuk memutar data dengan cara yang Anda inginkan agar pembaca menafsirkan hasil Anda. Apa pesannya? Apa yang ingin Anda tempel di pikiran mereka? Tentukan pesan itu, lalu pikirkan bagaimana menjadikannya sebuah angka.

Dalam plot Anda, saya tidak tahu pesan apa yang harus saya pelajari dan Anda memberikan saya terlalu banyak data mentah --- Saya ingin ringkasan yang efisien, bukan data itu sendiri.

Untuk plot 1, saya akan bertanya, perbandingan apa yang ingin Anda buat? Bagan yang telah Anda ilustrasikan waktu tayang di seluruh program untuk komputer tertentu. Sepertinya Anda ingin melakukan perbandingan di seluruh komputer untuk program yang diberikan. Jika demikian, maka Anda ingin statistik untuk program a di komputer x berada di plot yang sama dengan statistik untuk program a di komputer y. Saya akan menempatkan semua 8 kotak di dua kotak plot Anda dalam gambar yang sama, memerintahkan kapak, ay, bx, oleh, ... untuk memfasilitasi perbandingan yang Anda buat.

Hal yang sama berlaku untuk plot 2, tetapi saya merasa plot ini aneh. Anda pada dasarnya menunjukkan setiap titik data yang Anda miliki --- sebuah kotak untuk setiap proses dan proses hanya memiliki 4 pengamatan. Mengapa tidak memberi saya satu kotak petak total waktu menjalankan untuk komputer x dan satu untuk komputer y?

Kritik "terlalu banyak data" yang sama berlaku untuk plot terakhir Anda juga. Plot 3 tidak menambahkan informasi baru ke plot 2. Saya bisa mendapatkan waktu keseluruhan jika saya hanya mengalikan waktu rata-rata dengan 4 di plot 2. Di sini, Anda juga dapat merencanakan kotak masing-masing untuk komputer x dan y, tetapi ini akan benar-benar kelipatan plot yang saya usulkan untuk menggantikan plot 2.

Saya setuju dengan @Andy W bahwa komputer Anda tidak begitu menarik dan mungkin Anda hanya ingin menyatakannya dan mengecualikannya dari plot untuk singkatnya (meskipun saya pikir saran yang saya buat dapat membantu Anda memangkas plot ini). Saya tidak berpikir bahwa tabel adalah cara yang sangat baik untuk dilakukan.

Charlie
sumber
2

Plot Anda tampak baik bagi saya, dan jika Anda memiliki keterbatasan ruang, Anda dapat menempatkan semuanya dalam satu plot alih-alih tiga plot yang terpisah (mis. Gunakan par(mfrow=c(3,2))dan kemudian output saja ke semua perangkat yang sama).

Tidak banyak yang harus dilaporkan Machine Y, untuk itu tidak ada variasi kecuali untuk program b. Saya pikir grafiknya informatif untuk melihat tidak hanya berapa lama waktu berjalan, Machine Xtetapi juga berapa banyak waktu berjalan.

Jika ini benar-benar kasus penggunaan Anda, itu adalah data sederhana yang menempatkan semua data dalam sebuah tabel akan cukup untuk menunjukkan perbedaan antara mesin (meskipun saya percaya grafik masih berguna jika Anda dapat memberikan ruang untuk menempatkannya di mendokumentasikan juga).

Andy W
sumber