Hình thức tốt để loại bỏ các ngoại lệ?


12

Tôi đang làm việc trên các số liệu thống kê cho các bản dựng phần mềm. Tôi có dữ liệu cho mỗi bản dựng vào thời gian qua / thất bại và thời gian trôi qua và chúng tôi tạo ra ~ 200 trong số này / tuần.

Tỷ lệ thành công rất dễ tổng hợp, tôi có thể nói rằng 45% đã vượt qua bất kỳ tuần nào. Nhưng tôi cũng muốn tổng hợp thời gian đã trôi qua và tôi muốn chắc chắn rằng mình không trình bày sai dữ liệu quá tệ. Hình tôi muốn hỏi những ưu điểm :-)

Nói rằng tôi có 10 thời lượng. Họ đại diện cho cả trường hợp vượt qua và thất bại. Một số bản dựng bị lỗi ngay lập tức, khiến thời lượng ngắn một cách bất thường. Một số bị treo trong quá trình thử nghiệm và cuối cùng là hết thời gian, gây ra thời lượng rất dài. Chúng tôi xây dựng các sản phẩm khác nhau, do đó, ngay cả các bản dựng thành công cũng khác nhau trong khoảng từ 90 giây đến 4 giờ.

Tôi có thể có được một bộ như thế này:

[50, 7812, 3014, 13400, 21011, 155, 60, 8993, 8378, 9100]

Cách tiếp cận đầu tiên của tôi là lấy thời gian trung bình bằng cách sắp xếp tập hợp và chọn giá trị trung bình, trong trường hợp này là 7812 (tôi không bận tâm đến ý nghĩa số học cho các tập hợp số chẵn).

Thật không may, điều này dường như tạo ra rất nhiều biến thể, vì tôi chỉ chọn ra một giá trị nhất định. Vì vậy, nếu tôi định xu hướng giá trị này, nó sẽ bật lên trong khoảng 5000-10000 giây tùy thuộc vào việc xây dựng ở mức trung bình.

Vì vậy, để giải quyết vấn đề này, tôi đã thử một cách tiếp cận khác - loại bỏ các ngoại lệ và sau đó tính giá trị trung bình trên các giá trị còn lại. Tôi quyết định tách nó thành tertiles và chỉ hoạt động ở phần giữa:

[50, 60, 155, 3014, 7812, 8378, 8993, 9100, 13400, 21011] ->
[50, 60, 155], [3014, 7812, 8378, 8993], [9100, 13400, 21011] ->
[3014, 7812, 8378, 8993]

Lý do điều này có vẻ tốt hơn với tôi là hai lần:

  • Chúng tôi không muốn bất kỳ hành động nào đối với các bản dựng nhanh hơn, chúng đã ổn
  • Các bản dựng dài nhất có khả năng hết thời gian, và sẽ luôn ở đó. Chúng tôi có các cơ chế khác để phát hiện những

Vì vậy, dường như đây là dữ liệu tôi đang tìm kiếm, nhưng tôi lo lắng rằng tôi đã đạt được sự thông suốt bằng cách loại bỏ, tốt, sự thật.

Đây có phải là tranh cãi? Là phương pháp lành mạnh?

Cảm ơn!


Bạn vẫn chưa nói lý do tại sao bạn muốn có thời gian trôi qua. Bạn có cần ước tính tổng thời gian máy bạn đang trả tiền không? Bạn có cần ước tính có bao nhiêu chuyến đi đến máy pha cà phê bạn có thể thực hiện không? Hành động mà bạn có thể sẽ thực hiện nếu bạn biết thời gian là gì?
StasK

Ngoài ra, nếu bạn có các sản phẩm không đồng nhất mà bạn xây dựng, thì việc nảy xung quanh là điều tự nhiên, và bạn không nên cố gắng loại bỏ nó. Nếu bạn có thước đo độ phức tạp của một dự án nhất định (# tệp, # dòng mã, # thói quen, v.v.), thì bạn có thể quan tâm đến thời gian trôi qua được chuẩn hóa bởi độ phức tạp, có thể ổn định hơn. Nếu bạn muốn làm cho nó thực sự ổn định và ổn định theo thời gian, thì bạn sẽ không thể học khi bạn cần thực hiện hành động của mình.
StasK

@StasK: cảm ơn ý kiến ​​của bạn, đây là đầu vào có giá trị. Hành động đã được biết đến: nhiều bản dựng này mất quá nhiều thời gian và chúng ta nên làm cho chúng nhanh hơn. Tôi muốn sử dụng biện pháp tổng hợp để xem mọi thứ đang trở nên tốt hơn hay tồi tệ hơn.
Kim Gräsman

Và vâng, lý tưởng là tôi có thể làm điều này theo sản phẩm, nhưng dữ liệu nguồn không duy trì thông tin đó nên tôi gian lận dựa trên những gì tôi biết về phân phối. Điều này có thể thay đổi theo thời gian, tất nhiên, và tôi có thể phải suy nghĩ lại.
Kim Gräsman

Vâng, có vẻ như tôi có ba nhóm trong dữ liệu của bạn: (i) các bản dựng đó; (ii) các bản dựng bị lỗi (và bạn nói rằng chúng có xu hướng thất bại khá nhanh) và (iii) các bản dựng bị treo (hoặc gần như vậy) - và đó có lẽ là nhóm chính nếu không phải là nhóm duy nhất bạn muốn hành động. Thước đo thời gian tổng hợp có thể không được sử dụng nhiều; nhưng một cái gì đó như bản dựng dài thứ 10, hoặc phần trăm cao nhất thứ 10 của phân phối thời gian xây dựng, có thể là thước đo tốt hơn cho những gì ở mức cực đoan của bản phân phối mà bạn quan tâm. Đó là những gì EPA sử dụng trong giám sát ô nhiễm của họ.
StasK

Câu trả lời:


8

Cách tiếp cận của bạn có ý nghĩa với tôi, đưa mục tiêu của bạn vào tài khoản. Thật đơn giản, thật đơn giản, nó hoàn thành công việc và bạn có thể không muốn viết một bài báo khoa học về nó.

Một điều mà một người nên luôn luôn làm trong việc đối phó với các ngoại lệ là hiểu họ, và bạn đã làm rất tốt về điều này. Vì vậy, những cách có thể để cải thiện cách tiếp cận của bạn sẽ là: bạn có thể sử dụng thông tin về các bản dựng đang treo không? Bạn đề cập rằng bạn có "các cơ chế khác để phát hiện những cơ chế đó" - bạn có thể phát hiện ra chúng và sau đó chỉ xóa những cơ chế đó khỏi mẫu không?

Mặt khác, nếu bạn có nhiều dữ liệu hơn, bạn có thể nghĩ về việc loại bỏ không phải tertiles, mà là các nhóm tinh túy ... nhưng đến một lúc nào đó, điều này có thể sẽ không tạo ra nhiều sự khác biệt.


Khi tôi nói các cơ chế "khác", tôi có nghĩa là hoàn toàn khác bên ngoài bộ dữ liệu này, vì vậy tôi không thể đưa ra quyết định dựa trên nó ở đây. Chúng tôi đang tổng hợp dữ liệu hàng ngày và chúng tôi chỉ nhận được ~ 50 bản dựng mỗi ngày, vì vậy tôi nghĩ rằng các nhóm tinh túy có thể mang lại quá ít dữ liệu, nhưng nhờ gợi ý, tôi có thể thử nghiệm nó!
Kim Gräsman

13

Những gì bạn đang làm được gọi là một ý nghĩa cắt xén .

Như bạn đã làm, việc cắt giảm tỷ lệ giống nhau từ mỗi bên (tỷ lệ cắt tỉa) là điều phổ biến.

Bạn có thể cắt bất cứ thứ gì trong khoảng từ 0% (trung bình thông thường) lên đến (gần như) 50% (mang lại giá trị trung bình). Ví dụ của bạn có 30% được cắt từ mỗi đầu.

Xem câu trả lời này và có liên quan bài viết Wikipedia .

[Chỉnh sửa: Xem cuộc thảo luận tuyệt vời của Nick Cox về chủ đề này.]

Đó là một công cụ ước tính vị trí khá hợp lý, hơi mạnh mẽ. Nó thường được coi là phù hợp hơn cho các phân phối gần đối xứng hơn so với các phân phối bị lệch nhiều, nhưng nếu nó phù hợp với mục đích của bạn * không có lý do gì để không sử dụng nó. Bao nhiêu là tốt nhất để cắt giảm phụ thuộc vào các loại phân phối bạn có và các thuộc tính bạn tìm kiếm.

* Nó không hoàn toàn rõ ràng những gì bạn muốn ước tính ở đây.

Có một số lượng lớn các cách tiếp cận mạnh mẽ khác để tóm tắt 'trung tâm' phân phối, một số trong đó bạn cũng có thể thấy hữu ích. (ví dụ: công cụ ước tính M có thể có một số sử dụng cho bạn, có lẽ)

[Nếu bạn cần một biện pháp tương ứng của biến đổi để đi với tỉa của bạn có nghĩa là, một Winsorized độ lệch chuẩn có thể sử dụng một số bạn (về cơ bản, khi tính sd, thay thế các giá trị mà bạn sẽ cắt đứt khi cắt tỉa với các giá trị cực đoan nhất bạn không cắt đứt).]


Tôi thực sự chưa kiểm tra hình dạng điển hình của phân phối của mình, tôi nghĩ rằng nó thay đổi theo từng tuần tùy thuộc vào nơi mọi người thực hiện thay đổi. Thực tế nó có thể bị lệch rất cao.
Kim Gräsman

Cảm ơn bạn đã đặt tên cho công việc hack của tôi, btw. Nó truyền cảm hứng cho sự tự tin :-)
Kim Gräsman

2

Tuy nhiên, một phương pháp khác là tính trung bình của tất cả các trung bình theo cặp hoặc thực hiện bootstrapping.

Cập nhật:

Trung vị của tất cả các máy bay cặp đôi được gọi là công cụ ước tính Hodges của Lehmann . Công cụ ước tính này thường có hiệu quả cao. Mục từ điển bách khoa này của Scott L. Hershberger nói:

Trong khi cả hai công cụ ước lượng trung bình và Hodges-Lehmann đều thích hợp hơn so với trung bình mẫu đối với các phân phối không đối xứng, công cụ ước tính Hodges-Lehmann có hiệu quả tương đối tiệm cận lớn hơn so với trung bình so với trung bình

Bootstrapping có thể ít liên quan và chuyên sâu hơn về tính toán, nhưng bạn có thể lấy một mẫu dữ liệu ngẫu nhiên nhỏ để thay thế và tính giá trị trung bình của mẫu phụ đó, thực hiện nhiều lần và tính trung bình của tất cả các phương tiện.

Trong cả hai trường hợp, bạn không còn phải chọn một giá trị trong số các giá trị của dữ liệu của mình (khi bạn tính trung bình bình thường), mà thay vào đó bạn chọn trong số nhiều giá trị trung bình từ các tập hợp con của dữ liệu.


2
Bạn có thể mô tả ưu điểm và nhược điểm của các phương pháp này? Câu trả lời một dòng là không đủ.
StasK

1
Tôi đã cố gắng thực hiện cập nhật với nhiều lời giải thích hơn
Finn Årup Nielsen

Cả hai trung bình cặp và bootstrapping dường như liên quan đến một số tính toán lại trên toàn bộ dữ liệu. Mẫu nói chung khá nhỏ (<500 giá trị), vì vậy đây có thể không phải là vấn đề, nhưng có vẻ phức tạp hơn. Điều tốt để biết có nhiều cách tiếp cận để thử nghiệm nếu giá trị trung bình cắt ra hóa ra quá cùn. Cảm ơn!
Kim Gräsman

1

Có vẻ hợp lý những gì bạn đang làm: chỉ để biết thông tin tôi sử dụng quy trình sau đây khá thường xuyên cho một mục đích tương tự: nhưng tôi chỉ thực sự quan tâm đến Upper Outliers.

Tính tổng năm số: Min, Q1, Median, Q3, Max. Tính phạm vi liên vùng: Q3-Q1. Đặt 'hàng rào' ngoại lệ của bạn ở Q1-IQR * X và Q3 + IQR * X: trong đó giá trị hợp lý của 'X' là 1,5.

Sử dụng Excel và các số liệu của bạn ở trên (sử dụng 1,5 cho 'X' **) mang lại một ngoại lệ cao hơn: 21011

MIN 50
Q1  3014
MEDIAN  8095
Q3  9073.25
MAX 21011
IQR 6059.25
UPPER FENCE 18162.125
LOWER FENCE -6074.875

Vì vậy, hàng rào thấp hơn ở đây không hữu ích hoặc thực tế cho ví dụ của bạn trong thực tế: sao lưu điểm được tạo bởi bài đăng khác liên quan đến tầm quan trọng của việc hiểu ý nghĩa của dữ liệu cụ thể của bạn.

(** Tìm thấy một trích dẫn cho '1.5' quy tắc: Tôi không nói rằng nó là có thẩm quyền, nhưng dường như một điểm khởi đầu hợp lý với tôi: http://statistics.about.com/od/Descriptive-Statistics/a/ What-Is-The-Interquartile-Range-Rule.htm )

Bạn cũng có thể quyết định (có lẽ) chỉ sử dụng các điểm dữ liệu nằm trong chính IQR: điều này dường như mang lại kết quả hợp lý (trong đó tư cách thành viên cho phương pháp của bạn rất giống nhau).

sử dụng cùng một dữ liệu, điều này sẽ đặt các điểm dữ liệu sau vào 'vùng quan tâm':

7812
3014
13400
21011
8993
8378
9100

Trên Boxplot: tất cả các điểm này sẽ nằm trong phần hộp (chứ không phải phần râu) của sơ đồ.

Có thể thấy rằng danh sách này bao gồm một số mục không có trong danh sách ban đầu của bạn (bản dựng chạy dài hơn); Tôi không thể nói liệu một danh sách có chính xác hơn theo bất kỳ cách nào. (một lần nữa, đi xuống để hiểu dữ liệu của bạn).


Cảm ơn, về nguyên tắc có vẻ rất gần với những gì tôi đã làm. Bằng cách nào phương pháp này có thể tốt hơn là chỉ phân vùng tập dữ liệu?
Kim Gräsman

1
Tôi thực sự không thể nói liệu một trong hai phương pháp có tốt hơn hay không: Tôi đã đề xuất phương pháp này dựa trên những gì tôi đã đọc trong sách / trang thống kê. Một điều (tôi nghĩ) phương pháp thêm vào là cho phép bạn điều chỉnh 'hàng rào' thành bất cứ điều gì bạn cảm thấy phù hợp (điều chỉnh hệ số 1,5); trong đó chỉ cần chiếm một phần ba ở giữa có thể dễ bị ảnh hưởng hơn bao gồm một ngoại lệ có khả năng cao (có thể được phân loại tốt hơn bên ngoài hàng rào) ..... nhưng tôi không thể nói điều đó chắc chắn. Một điều khác về việc sử dụng Quartiles, đó là tóm tắt 5 số được hiểu khá rõ và thường được sử dụng.
monojohnny

Cảm ơn đã thêm chi tiết! Tôi làm điều này trong Python, vì vậy tôi đã có một hàm trong đó tôi phân vùng tập dữ liệu thành N phần và sau đó kéo phần giữa ra. Thay vào đó là thay đổi một ký tự để tạo thành 5 hoặc 7 phân vùng. Nhưng quan điểm của bạn đã được thực hiện tốt, và thật tốt khi thấy một cách phổ biến khác để tiếp cận vấn đề này. Cảm ơn một lần nữa.
Kim Gräsman

Nghe có vẻ tốt đối với tôi: Tôi sẽ thêm một điều nữa để nhấn mạnh về việc sử dụng các phần tư và hàng rào (thay vì có các phân vùng thay đổi) - là chúng ánh xạ thẳng vào các ô vuông: en.wikipedia.org/wiki/Box_plot cho phép (trong số những thứ khác) một cách tiêu chuẩn để so sánh các bản phân phối khác nhau về mặt đồ họa.
monojohnny
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.