Kiểm tra phương sai trong python

Kiểm định t của Welch là một kiểm định đơn biến không tham số nhằm kiểm tra sự khác biệt đáng kể giữa giá trị trung bình của hai nhóm không liên quan. Nó là một phương pháp thay thế cho kiểm định t độc lập khi có sự vi phạm giả định về sự bằng nhau của các phương sai

Nội dung chính Hiển thị

  • Nó là gì?
  • Giả định t-test của Welch
  • Ví dụ kiểm định t của Welch
  • Giải thích bài kiểm tra t của Welch

Giả thuyết đang được thử nghiệm là

  • Giả thuyết không [H0]. u1 = u2, tức là trung bình mẫu 1 bằng trung bình mẫu 2
  • Giả thuyết thay thế [HA]. u1 ≠ u2, tức là trung bình mẫu 1 không bằng trung bình mẫu 2

Nếu giá trị p nhỏ hơn giá trị được thử nghiệm, phổ biến nhất là 0. 05, người ta có thể bác bỏ giả thuyết vô hiệu

Giả định t-test của Welch

Giống như mọi bài kiểm tra, bài kiểm tra thống kê suy luận này có các giả định. Các giả định mà dữ liệu phải đáp ứng để kết quả kiểm tra có giá trị là

  • Biến độc lập [IV] là biến phân loại với ít nhất hai cấp độ [nhóm]
  • Biến phụ thuộc [DV] là biến liên tục được đo lường trên thang đo khoảng hoặc tỷ lệ
  • Phân phối của hai nhóm phải tuân theo phân phối chuẩn

Nếu bất kỳ giả định nào trong số này bị vi phạm thì nên sử dụng thử nghiệm khác

Dữ liệu được sử dụng trong ví dụ này

Dữ liệu được sử dụng trong ví dụ này là từ Kaggle. com và được đăng bởi người dùng Web IR. Liên kết đến tập dữ liệu ở đây. Bộ dữ liệu chứa chiều dài và chiều rộng của đài hoa và cánh hoa của các loài hoa khác nhau. Chúng tôi sẽ kiểm tra xem liệu có sự khác biệt đáng kể về chiều dài cánh hoa giữa loài Iris-setosa và Iris-virginica hay không, tương ứng là các biến số “petal_length” và “species”

Hãy nhập gấu trúc dưới dạng pd, dữ liệu và sau đó xem những gì chúng ta sẽ làm việc với

import pandas as pd

df= pd.read_csv["Iris_Data.csv"]

df.groupby["species"]['petal_length'].describe[]
số lượng loàimeanstdmin25%50%75%maxIris-setosa50. 01. 4640. 1735111. 01. 41. 501. 5751. 9Mống mắt nhiều màu50. 04. 2600. 4699113. 04. 04. 354. 6005. 1Iris-virginica50. 05. 5520. 5518954. 55. 15. 555. 8756. 9

Để làm cho mã trong các bước tiếp theo dễ đọc hơn một chút, tôi sẽ tạo 2 khung dữ liệu là tập hợp con của dữ liệu gốc trong đó mỗi khung dữ liệu chỉ chứa dữ liệu cho một loài hoa tương ứng

setosa = df[[df['species'] == 'Iris-setosa']]
virginica = df[[df['species'] == 'Iris-virginica']]

Ví dụ kiểm định t của Welch

Điều đầu tiên chúng ta cần làm là nhập scipy. số liệu thống kê dưới dạng số liệu thống kê và sau đó kiểm tra các giả định của chúng tôi. Chúng ta có thể kiểm tra giả định về tính quy tắc bằng cách sử dụng số liệu thống kê. shapiro[]. Thật không may, đầu ra không được dán nhãn. Giá trị đầu tiên trong bộ dữ liệu là thống kê kiểm tra W và giá trị thứ hai là giá trị p

from scipy import stats

stats.shapiro[setosa['petal_length']]

[0. 9549458622932434, 0. 05464918911457062]

stats.shapiro[virginica['petal_length']]

[0. 9621862769126892, 0. 10977369546890259]

Cả hai biến quan tâm đều không vi phạm giả định về tính quy tắc để chúng tôi có thể tiếp tục với kế hoạch phân tích của mình. Để tiến hành kiểm tra t của Welch, người ta cần sử dụng số liệu thống kê. phương thức ttest_ind[] trong khi truyền “False” trong đối số “equal_var=”

stats.ttest_ind[setosa['petal_length'], virginica['petal_length'], equal_var = False]

Ttest_indResult[thống kê=-49. 965703359355636, giá trị p = 9. 7138670616970964e-50]

Giá trị p là đáng kể, do đó người ta có thể bác bỏ giả thuyết khống để ủng hộ phương án thay thế

Một thông tin khác bạn sẽ cần khai báo là bậc tự do [DoF]. Tuy nhiên, hiện tại không có phương thức tích hợp sẵn cho việc này. Dưới đây là 2 chức năng sẽ cung cấp cho bạn những gì bạn cần. Đầu tiên, chỉ tính toán DoF dưới dạng thử nghiệm hai đuôi và trả về nó. Thứ hai, tiến hành kiểm tra của Welch, tính toán DoF dưới dạng kiểm tra hai đuôi và trả về tất cả thông tin cần thiết

def welch_dof[x,y]:
        dof = [x.var[]/x.size + y.var[]/y.size]**2 / [[x.var[]/x.size]**2 / [x.size-1] + [y.var[]/y.size]**2 / [y.size-1]]
        print[f"Welch-Satterthwaite Degrees of Freedom= {dof:.4f}"]
        
welch_dof[setosa['petal_length'], virginica['petal_length']]

Bậc tự do Welch-Satterthwaite= 58. 5928

def welch_ttest[x, y]: 
    ## Welch-Satterthwaite Degrees of Freedom ##
    dof = [x.var[]/x.size + y.var[]/y.size]**2 / [[x.var[]/x.size]**2 / [x.size-1] + [y.var[]/y.size]**2 / [y.size-1]]
   
    t, p = stats.ttest_ind[x, y, equal_var = False]
    
    print["\n",
          f"Welch's t-test= {t:.4f}", "\n",
          f"p-value = {p:.4f}", "\n",
          f"Welch-Satterthwaite Degrees of Freedom= {dof:.4f}"]

welch_ttest[setosa['petal_length'], virginica['petal_length']]

Kiểm tra t của Welch= -49. 9657
giá trị p = 0. 0000
Bậc tự do Welch-Satterthwaite= 58. 5928

Giải thích bài kiểm tra t của Welch

Nghiên cứu hiện tại nhằm mục đích kiểm tra xem có sự khác biệt đáng kể về chiều dài cánh hoa giữa các loài hoa Setosa và Virginica hay không. Setosa có chiều dài cánh hoa ngắn hơn [M= 1. 464 đơn vị, SD= 0. 174 đơn vị] so với Virginica [M= 5. 552 đơn vị, SD= 0. 552 đơn vị]. Thử nghiệm t của Welch được chọn để phân tích dữ liệu vì thử nghiệm của Levene về tính đồng nhất của phương sai cho thấy phương sai không bằng nhau giữa các nhóm [F= 39. 977, p

Chủ Đề