Mann-Whitney U kiểm tra Python

Varga, A. , & Delaney, H. Đ. [2000]. Phê bình và cải thiện thống kê kích thước hiệu ứng ngôn ngữ chung “CL” của McGraw và Wong. Tạp chí thống kê giáo dục và hành vi. Ấn phẩm hàng quý được tài trợ bởi Hiệp hội nghiên cứu giáo dục Hoa Kỳ và Hiệp hội thống kê Hoa Kỳ, 25[2], 101–132. https. //doi. tổ chức/10. 2307/1165329

Thử nghiệm Mann–Whitney U có thể được sử dụng để so sánh giá trị trung bình của hai nhóm dữ liệu số độc lập với nhau

Ví dụ này được lấy từ Mục 12. 4 về Xác suất và Thống kê cho Kỹ sư và Nhà khoa học của SM Ross [tái bản lần thứ 4, 2009]. Một thí nghiệm hư cấu được thiết kế để kiểm tra hiệu quả của hai phương pháp xử lý chống ăn mòn kim loại khác nhau đã cho kết quả như sau

  • Điều trị 1. 65. 2, 67. 1, 69. 4, 78. 2, 74, 80. 3
  • Điều trị 2. 59. 4, 72. 1, 68, 66. 2, 58. 5

trong đó các giá trị đại diện cho độ sâu tối đa của các vết rỗ được mài mòn trong kim loại tính bằng hàng nghìn cm. Đây có thể là mã cứng dưới dạng từ điển danh sách trong Python như sau

# Raw data
data = {
    'Treatment 1': [65.2, 67.1, 69.4, 78.2, 74, 80.3],
    'Treatment 2': [59.4, 72.1, 68, 66.2, 58.5]
}

Đây là những gì dữ liệu trông giống như đồ họa

import matplotlib.pyplot as plt
import numpy as np

#
# Plot
#
# Boxplot
meanprops = {'color': 'b'}
bp = plt.boxplot[data.values[], showmeans=True, meanline=True, meanprops=meanprops]
# Scatterplot for treatment 1
y = data['Treatment 1']
plt.scatter[np.zeros[len[y]] + 1, y, c='k']
# Scatterplot for treatment 2
y = data['Treatment 2']
plt.scatter[np.ones[len[y]] + 1, y, c='k']
# Tile and labels
plt.title['The Effectiveness of Anti-Corrosion Treatments']
plt.xlabel['Treatment']
plt.ylabel['Maximum depth of pits [10e-3 cm]']
# Legend
plt.legend[[bp['medians'][0], bp['means'][0]], ['Medians', 'Means']]

Ở trên sử dụng các gói Matplotlib và Numpy. Cài đặt chúng từ thiết bị đầu cuối với

  • python3.9 -m pip install matplotlib
  • python3.9 -m pip install numpy

Nhìn vào dữ liệu được vẽ ở trên, câu hỏi chúng tôi muốn đặt ra là

Lượng hao mòn trung bình có khác nhau giữa các mẫu được xử lý chống ăn mòn khác nhau không?

Nếu đúng như vậy, nó sẽ gợi ý rằng hiệu quả của các phương pháp điều trị là khác nhau

Trước khi có thể trả lời câu hỏi này, chúng ta cần quyết định xem nên sử dụng thống kê tham số hay phi tham số. Thống kê tham số dựa trên các giả định về phân phối dữ liệu [trong khi thống kê phi tham số thì không] và lý do để chọn chúng bao gồm

  • Dữ liệu của bạn được phân phối bình thường
  • Dữ liệu của bạn không được phân phối bình thường nhưng kích thước mẫu lớn
    • n > 20 nếu bạn chỉ có một nhóm
    • n > 15 trong mỗi nhóm nếu bạn có từ 2 đến 9 nhóm
    • n > 20 trong mỗi nhóm nếu bạn có 10 đến 12 nhóm
  • Sự lan truyền của dữ liệu trong mỗi nhóm là khác nhau
  • Dữ liệu bị sai lệch [nói cách khác, trung vị đại diện cho xu hướng trung tâm hơn là trung bình]
  • Cần phải tăng sức mạnh thống kê [các bài kiểm tra tham số thường có nhiều sức mạnh hơn và do đó có nhiều khả năng phát hiện ra sự khác biệt đáng kể khi một sự khác biệt thực sự tồn tại]

Vì kích thước mẫu trong bộ dữ liệu ví dụ này nhỏ, nên chúng tôi nên chọn thực hiện thống kê phi tham số và điều chỉnh câu hỏi nghiên cứu của mình để nó trở thành “mức độ hao mòn trung bình có khác nhau không?”1. Nói cách khác, các đường màu cam trong biểu đồ trên [trung vị] có ở các độ cao khác nhau không?

1khi thực hiện thống kê tham số, bạn nên sử dụng giá trị trung bình;

Để trả lời câu hỏi nghiên cứu [“mức độ hao mòn trung bình có khác nhau không?”], bây giờ chúng ta cần xây dựng nó một cách chính xác như một giả thuyết không với một giả thuyết thay thế tương ứng

  • H0. lượng hao mòn trung bình thực sự là như nhau đối với cả hai phương pháp điều trị
  • H1. lượng hao mòn trung bình thực sự không giống nhau đối với cả hai phương pháp điều trị

Bây giờ chúng tôi có các giả thuyết, chúng tôi có thể làm theo quy trình lựa chọn kiểm tra thống kê

  • Dữ liệu của chúng tôi liên tục vì nó được tạo thành từ các phép đo là các con số [không phải các danh mục hoặc thứ hạng rời rạc]
  • Chúng tôi quan tâm đến sự khác biệt giữa lượng hao mòn trong một nhóm so với nhóm kia [không phải mối quan hệ giữa lượng hao mòn và thứ khác]
  • Cụ thể, chúng tôi quan tâm đến sự khác biệt của lượng hao mòn trung bình [trung bình] [không phải phương sai về lượng hao mòn]
  • Chúng tôi có hai nhóm vì có hai phương pháp điều trị được so sánh
  • Như đã thảo luận ở trên, chúng tôi đang thực hiện thống kê phi tham số
  • Các phép đo của chúng tôi độc lập với nhau. lượng mà một mẫu bị ăn mòn không ảnh hưởng đến mức độ ăn mòn của mẫu khác

Nhìn vào lưu đồ bên dưới cho chúng ta biết rằng chúng ta nên sử dụng phép thử Mann-Whitney U để kiểm tra giả thuyết của mình

Gói SciPy giúp thực hiện kiểm tra cực kỳ dễ dàng. chỉ cần sử dụng chức năng mannwhitneyu[]

from scipy.stats import mannwhitneyu

# Perform the Mann-Whitney U test
statistic, pvalue = mannwhitneyu[data['Treatment 1'], data['Treatment 2']]

print[f'Mann-Whitney U test: U = {int[statistic]}, p = {pvalue:6.4f}']
## Mann-Whitney U test: U = 24, p = 0.1255

Cài đặt SciPy từ thiết bị đầu cuối với python3.9 -m pip install scipy

Giá trị p này lớn [>0. 05], có nghĩa là chúng tôi không bác bỏ H0 và kết luận rằng không có sự khác biệt có ý nghĩa thống kê giữa hai nghiệm thức [p > 0. 05]

Thông thường, bạn sẽ thấy loại kết quả này được báo cáo bằng cách sử dụng dấu hoa thị để biểu thị mức ý nghĩa [α] liên quan đến kết quả đó. Ngoài ra, nếu giá trị p rất nhỏ thì nó thường chỉ được báo cáo là “

Chủ Đề