Cải thiện phân tích dữ liệu thông qua một hình dung tốt hơn của dữ liệu?


8

Tôi đã chạy bốn chương trình a, b, c, d song song trên hai máy khác nhau XYriêng biệt trong 10 lần. Dưới đây là một mẫu của dữ liệu. Thời gian chạy (mili giây) trong 10mỗi lần chạy của mỗi chương trình được đưa ra dưới tên tương ứng của chúng.

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

Tôi cần tạo các biểu đồ để hình dung như sau:

  1. So sánh hiệu suất của từng chương trình (tức là thời gian chạy) trên cả hai máy X và Y.
  2. So sánh sự thay đổi thời gian chạy của từng chương trình trên cả hai máy X và Y
  3. Máy nào công bằng trong việc cung cấp tài nguyên điện toán cho mỗi chương trình?
  4. So sánh tổng thời gian chạy (a + b + c + d) của bốn chương trình trong mỗi lần chạy trên cả hai máy X và Y.
  5. So sánh sự thay đổi trong tổng số lần chạy của bốn chương trình trong 10 lần chạy.

Đối với 1 và 2, tôi đã tạo Hình A, Hình B là 3 và Hình C là 4 và 5. Tuy nhiên, tôi không hài lòng vì có ba biểu đồ và rất khó để phù hợp với cả ba biểu đồ trong bài viết của tôi. Hơn nữa, tôi tin rằng chúng ta có thể sản xuất tốt hơn những thứ này. Tôi thực sự đánh giá cao nếu ai đó giúp tôi vẽ một hoặc hai biểu đồ đẹp thay vì ba trong R trong khi đáp ứng yêu cầu của tôi. Vui lòng xem bên dưới để biết mã R tôi đã sử dụng để tạo các biểu đồ này.

Hình A:

Hình A

Hình B: Trục X hiển thị các lần chạy, trục Y hiển thị thời gian chạy của bốn chương trình trong một lần chạy cụ thể.

Hình B

Hình C:

Hình C

Mã 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()

Câu trả lời:


12

Mặc dù những người được hỏi khác đã cung cấp những hiểu biết hữu ích, tôi thấy mình không đồng ý với một số quan điểm của họ. Đặc biệt, tôi tin rằng đồ họa có thể hiển thị chi tiết của dữ liệu (không bị lộn xộn) sẽ phong phú và đáng xem hơn so với những đồ họa tóm tắt hoặc ẩn dữ liệu và tôi tin rằng tất cả dữ liệu đều thú vị, không chỉ những dữ liệu cho máy tính X. Hãy xem nào.

Thời gian âm mưu bằng thuật toán và máy tính

(Tôi đang hiển thị các ô nhỏ ở đây để đưa ra quan điểm rằng khá nhiều số có thể được hiển thị một cách hữu ích, chi tiết, trong các không gian nhỏ.)

Biểu đồ này hiển thị các giá trị dữ liệu riêng lẻ, tất cả 80= =2×4×10của họ. Nó sử dụng khoảng cách dọc theo trục y để biểu thị thời gian tính toán, bởi vì mọi người có thể so sánh nhanh nhất và chính xác nhất khoảng cách trên một trục chung (như nghiên cứu của Bill Cleveland đã chỉ ra). Để đảm bảo rằng tính biến thiên được hiểu chính xác trong bối cảnh thời gian thực tế, trục y được mở rộng về 0: cắt nó ở bất kỳ giá trị dương nào sẽ phóng đại sự thay đổi tương đối về thời gian, đưa ra "Yếu tố nói dối" (theo thuật ngữ của Tufte) .

Hình học đồ họa (điểm đánh dấu so với phân đoạn dòng) phân biệt rõ ràng máy tính X (điểm đánh dấu) với máy tính Y (phân đoạn). Biến thể trong biểu tượng - cả hình dạng và màu sắc cho các điểm đánh dấu - cũng như sự thay đổi vị trí dọc theo trục x phân biệt rõ ràng các chương trình. (Sử dụng hình dạng đảm bảo sự khác biệt sẽ tồn tại ngay cả trong kết xuất thang độ xám, có khả năng trong một tạp chí in.)

Các chương trình dường như không có bất kỳ thứ tự vốn có nào, vì vậy việc trình bày chúng theo thứ tự abc theo tên mã "a", ..., "d" là vô nghĩa. Sự tự do này đã được khai thác để sắp xếp các kết quả theo thời gian trung bình mà máy tính X yêu cầu. Thay đổi đơn giản này, không đòi hỏi thêm độ phức tạp hoặc mực, cho thấy một mẫu thú vị: thời gian tương đối của các chương trình trên máy tính Y khác với thời gian tương đối trên máy tính X. Mặc dù điều này có thể có hoặc không có ý nghĩa thống kê, nhưng đó là một tính năng của dữ liệu mà đồ họa này tình cờ thấy rõ. Đó là những gì chúng tôi hy vọng một đồ họa tốt sẽ làm.

Bằng cách làm cho các điểm đánh dấu đủ lớn, chúng gần như hòa trộn trực quan vào một biểu diễn đồ họa của tổng biến thiên theo chương trình. (Pha trộn làm mất một số thông tin: chúng tôi không thấy chính xác nơi xảy ra sự trùng lặp. Điều này có thể được khắc phục bằng cách xáo trộn các điểm một chút theo hướng ngang, do đó giải quyết tất cả các chồng chéo.)

Đồ họa này một mình có thể đủ để trình bày dữ liệu. Tuy nhiên, có nhiều điều được phát hiện bằng cách sử dụng các kỹ thuật tương tự để so sánh thời gian từ lần chạy này đến lần chạy khác.

Cốt truyện "Công bằng"

Lần này, vị trí nằm ngang phân biệt máy tính Y với máy tính X, về cơ bản bằng cách sử dụng bảng điều khiển cạnh nhau. (Các phác thảo xung quanh mỗi bảng đã bị xóa, vì chúng sẽ can thiệp vào các so sánh trực quan mà chúng tôi muốn thực hiện trên cốt truyện.) Trong mỗi bảng, vị trí phân biệt hoạt động. Chính xác như trong âm mưu đầu tiên-- và sử dụng cùng một sơ đồ đánh dấu để phân biệt các chương trình - các điểm đánh dấu khác nhau về hình dạng và màu sắc. Điều này tạo điều kiện so sánh giữa hai lô.

Lưu ý sự tương phản trực quan trong các mẫu đánh dấu giữa hai bảng: điều này không có sẵn các bảng số, phải được quét cẩn thận trước khi người ta biết rằng máy tính Y rất phù hợp với thời gian của nó.

Các điểm đánh dấu được nối bằng các đường đứt nét mờ để cung cấp các kết nối trực quan trong mỗi chương trình. Những dòng này là mực thừa, dường như không cần thiết để trình bày dữ liệu, vì vậy tôi nghi ngờ giáo sư Tufte sẽ tránh chúng. Tuy nhiên, tôi thấy chúng đóng vai trò là hướng dẫn trực quan hữu ích để phân tách sự lộn xộn nơi các điểm đánh dấu cho các chương trình khác nhau gần như trùng lặp.

Một lần nữa, tôi cho rằng các lần chạy là độc lập và do đó số lần chạy là vô nghĩa. Một lần nữa chúng ta có thể khai thác rằng: riêng trong mỗi bảng, các lần chạy đã được sắp xếp theo tổng thời gian cho bốn thuật toán. (Trục x không gắn nhãn số chạy, bởi vì đây sẽ chỉ là một sự xao lãng.) Như trong âm mưu đầu tiên, trình tự này cho thấy một số mô hình tương quan thú vị giữa thời gian của bốn thuật toán trong mỗi lần chạy. Hầu hết các biến thể cho máy tính X là do thay đổi thuật toán "b" (hình vuông màu đỏ). Chúng ta đã thấy điều đó trong đồ họa đầu tiên. Tuy nhiên, tổng số màn trình diễn tệ nhất là do hai lần dài cho các thuật toán "c" và "d" (kim cương vàng và tam giác xanh, tương ứng), và những điều này xảy ra trong cùng hai lần chạy. Điều thú vị là cả hai ngoại lệ cho các chương trình "a" và "c" đều xảy ra trong cùng một lần chạy. Những quan sát này có thể tiết lộ thông tin hữu ích về sự thay đổi thời gian của chương trình cho máy tính X. Chúng là những ví dụ về cách thức những đồ họa này hiển thị chi tiết của dữ liệu (chứ không phải là tóm tắt như thanh hoặc hình hộp hoặc bất cứ thứ gì), có thể thấy nhiều về sự biến đổi và tương quan- -Nhưng tôi không cần phải giải thích về điều đó ở đây; bạn có thể tự khám phá nó

Tôi đã xây dựng các đồ họa này mà không đưa ra bất kỳ suy nghĩ nào về "câu chuyện" hoặc "quay" dữ liệu, vì trước tiên tôi muốn xem dữ liệu đó nói gì. Đồ họa như vậy sẽ không bao giờ làm duyên cho các trang của USA Today, có lẽ, nhưng do khả năng tiết lộ các mẫu bằng cách cho phép so sánh trực quan nhanh, chính xác,họ là những ứng cử viên tốt để truyền đạt kết quả tới khán giả khoa học hoặc kỹ thuật. (Điều đó không có nghĩa là chúng không có sai sót: có một số cách rõ ràng để cải thiện chúng, bao gồm cả việc xáo trộn trong lần đầu tiên và cung cấp các truyền thuyết tốt và nhãn hiệu hợp lý ở cả hai.) Vì vậy, tôi đồng ý rằng sự chú ý đến khán giả tiềm năng là quan trọng, nhưng tôi không thuyết phục rằng đồ họa nên được tạo ra với mục đích ủng hộ hoặc nhấn vào một quan điểm cụ thể.

Tóm lại, tôi muốn cung cấp lời khuyên này.

  • Sử dụng các nguyên tắc thiết kế được tìm thấy trong tài liệu về bản đồ học và khoa học thần kinh nhận thức (ví dụ, Alan MacEachren ) để cải thiện cơ hội người đọc sẽ diễn giải đồ họa của bạn như bạn dự định và họ sẽ có thể đưa ra kết luận trung thực, không thiên vị từ họ.

  • Sử dụng các nguyên tắc thiết kế được tìm thấy trong tài liệu về đồ họa thống kê (ví dụ, Ed TufteBill Cleveland ) để tạo ra các bài thuyết trình giàu dữ liệu thông tin.

  • Thử nghiệm và sáng tạo. Nguyên tắc là điểm khởi đầu để tạo ra một đồ họa thống kê, nhưng chúng có thể bị phá vỡ. Hiểu những nguyên tắc bạn đang phá vỡ và tại sao.

  • Nhằm mục đích cho sự mặc khải hơn là chỉ tóm tắt. Một đồ họa thỏa mãn rõ ràng cho thấy các mẫu quan tâm đến dữ liệu. Một đồ họa tuyệt vời sẽ tiết lộ các mẫu bất ngờ và mời chúng tôi so sánh mà chúng tôi có thể không nghĩ đến trước đó. Nó có thể nhắc chúng tôi đặt câu hỏi mới và nhiều câu hỏi hơn. Đó là cách chúng tôi nâng cao sự hiểu biết của chúng tôi.


2
+1 câu trả lời tuyệt vời! Các đoạn đầu tiên và cuối cùng là lời khuyên tuyệt vời ngắn gọn, và các chi tiết ở giữa cho thấy chính xác những gì đồ họa tuyệt vời có thể và nên như thế nào.
Aaron rời Stack Overflow

@whuber: Câu trả lời tuyệt vời! Cảm ơn bạn. Bạn cũng có thể chia sẻ mã bạn đã sử dụng cho các số liệu, xin vui lòng? Có phải mã R không?
samarasa

@kkp Đó là không mã R: đây là những Mathematica đồ họa. (Nếu bạn có quyền truy cập vào phần mềm này, tôi sẽ rất vui khi chia sẻ mã tôi đã sử dụng.) Chúng đơn giản để mô phỏng trong R bằng cách sử dụng các lệnh cốt truyện , đườngđiểm . Hầu hết các công việc liên quan đến việc thiết lập các tùy chọn đồ họa và trong việc gán tọa độ ngang cho dữ liệu. Các gói như ggplot có thể làm giảm một số công việc này.
whuber

@Aaron Cảm ơn bạn; ý kiến ​​của bạn, như một chuyên gia về đồ họa thống kê, được đánh giá cao.
whuber

3

Cốt truyện cho phép bạn kể một câu chuyện, để quay dữ liệu theo cách mà bạn muốn người đọc diễn giải kết quả của bạn. Tin nhắn takeaway là gì? Bạn muốn gắn bó điều gì trong tâm trí họ? Xác định thông điệp đó, sau đó suy nghĩ về cách biến nó thành một hình.

Trong cốt truyện của bạn, tôi không biết tôi nên học thông điệp gì và bạn cung cấp cho tôi quá nhiều dữ liệu thô --- Tôi muốn các bản tóm tắt hiệu quả, chứ không phải bản thân dữ liệu.

Đối với cốt truyện 1, tôi muốn hỏi, bạn muốn thực hiện những so sánh nào? Các biểu đồ mà bạn đã minh họa thời gian chạy trên chương trình cho một máy tính nhất định. Có vẻ như bạn muốn thực hiện các so sánh trên các máy tính cho một chương trình nhất định. Nếu đây là trường hợp, thì bạn muốn các số liệu thống kê cho chương trình a trên máy tính x ở cùng một âm mưu với các số liệu thống kê cho chương trình a trên máy tính y. Tôi sẽ đặt tất cả 8 hộp trong hai ô của bạn trong cùng một hình, sắp xếp rìu, ay, bx, bởi, ... để tạo điều kiện cho việc so sánh mà bạn đang thực hiện.

Điều tương tự cũng xảy ra với cốt truyện 2, nhưng tôi thấy cốt truyện này lạ. Về cơ bản, bạn đang hiển thị mọi điểm dữ liệu mà bạn có --- một hộp cho mỗi lần chạy và một lần chạy chỉ có 4 quan sát. Tại sao không chỉ cho tôi một ô hộp tổng thời gian chạy cho máy tính x và một cho máy tính y?

Phê bình "quá nhiều dữ liệu" cũng áp dụng cho cốt truyện cuối cùng của bạn. Lô 3 không thêm bất kỳ thông tin mới nào vào âm mưu 2. Tôi có thể lấy tổng thời gian nếu tôi chỉ nhân thời gian trung bình với 4 trong ô 2. Ở đây, bạn cũng có thể vẽ một ô cho mỗi máy tính x và y, nhưng những thứ này theo nghĩa đen sẽ là bội số của âm mưu mà tôi đề xuất để thay thế cốt truyện 2.

Tôi đồng ý với @Andy W rằng máy tính y không thú vị lắm và có lẽ bạn muốn nêu ra điều đó và loại trừ nó khỏi các âm mưu cho ngắn gọn (mặc dù tôi nghĩ rằng những gợi ý mà tôi đưa ra có thể giúp bạn cắt giảm các âm mưu này). Tuy nhiên, tôi không nghĩ rằng các bảng là cách tốt để đi.


2

Âm mưu của bạn có vẻ ổn đối với tôi và nếu bạn gặp khó khăn về không gian, bạn có thể đặt tất cả chúng trong một ô thay vì ba ô riêng biệt (ví dụ: sử dụng par(mfrow=c(3,2))và sau đó chỉ xuất chúng cho tất cả cùng một thiết bị).

Không có gì nhiều để báo cáo mặc dù Machine Y, nó thực sự không có biến thể ngoại trừ chương trình b. Tôi nghĩ rằng các biểu đồ là thông tin để xem không chỉ thời gian chạy là bao lâu Machine Xmà còn bao nhiêu thời gian chạy khác nhau.

Nếu đây thực sự là trường hợp sử dụng của bạn, thì dữ liệu đơn giản như vậy đặt tất cả dữ liệu vào một bảng sẽ đủ để chứng minh sự khác biệt giữa các máy (mặc dù tôi tin rằng các biểu đồ vẫn hữu ích nếu bạn có đủ khả năng để đặt chúng vào tài liệu là tốt).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.