Kiểm tra giả thuyết Python

Giả sử chúng ta tung 100 đồng xu và quan sát thấy 70 mặt ngửa. Chúng tôi muốn sử dụng những dữ liệu này để kiểm tra giả thuyết rằng xác suất thực sự là 0. 5. Trước tiên, hãy tạo dữ liệu của chúng tôi, mô phỏng 100.000 bộ gồm 100 lần lật. Chúng tôi sử dụng một số lượng lớn như vậy vì hóa ra rất hiếm khi có được 70 mặt ngửa, vì vậy chúng tôi cần thử nhiều lần để có được ước tính đáng tin cậy về các xác suất này. Quá trình này sẽ mất vài phút để hoàn thành

import numpy as np
import pandas as pd

num_runs = 10000


def toss_coins_and_count_heads[num_coins=100, p_heads=0.5]:
    """
    flip a coin num_coins times and return number of heads
    """

    flips = np.random.rand[num_coins] > [1 - p_heads]
    return[np.sum[flips]]

    
flip_results_df = pd.DataFrame[{'n_heads': np.zeros[num_runs]}]

for run in range[num_runs]:
    flip_results_df.loc[run, 'n_heads'] = toss_coins_and_count_heads[]

Bây giờ chúng ta có thể tính toán tỷ lệ mẫu từ phân phối quan sát được khi tỷ lệ thực sự của những cái đầu là 0. 5

import scipy.stats

pvalue = 100 - scipy.stats.percentileofscore[flip_results_df, 70] 
pvalue

Để so sánh, chúng ta cũng có thể tính toán giá trị p cho 70 mặt ngửa trở lên dựa trên giả thuyết khống về \[P_{heads}=0. 5\], sử dụng phân phối nhị thức

Tôi có bằng Thạc sĩ Thống kê và một năm trước, tôi đã bước chân vào lĩnh vực khoa học dữ liệu. Viết blog đã nằm trong danh sách việc cần làm của tôi trong nhiều ngày và ở đây tôi đang cố gắng chia sẻ kiến ​​thức của mình

Trọng tâm chính của bài viết này là giới thiệu kiểm tra giả thuyết và minh họa bằng một vài ví dụ trong Python. Dù là khái niệm nào, việc thực thi nó có thể được thực hiện dễ dàng với các ngôn ngữ lập trình như Python. Tuy nhiên, phần quan trọng nhất là rút ra suy luận từ đầu ra và bạn nên biết toán học đằng sau mã được thực thi

Kiểm tra giả thuyết rất quan trọng trong thống kê vì nó đưa ra bằng chứng thống kê để cho thấy tính hợp lệ của nghiên cứu. Giả thuyết khống nói rằng không có ý nghĩa thống kê nào tồn tại giữa các bộ dữ liệu ngụ ý rằng tham số tổng thể sẽ bằng một giá trị giả định. Thông thường, chúng tôi nêu giả thuyết thay thế mà chúng tôi muốn chứng minh. Đối với giả thuyết không H0 và giả thuyết thay thế bổ sung của nó H1, có 3 trường hợp khi giá trị tham số dưới H0 ≠ H1 hoặc H0 < H1 hoặc H0 > H1

Hãy xem xét một tình huống mà tôi đã nêu giả thuyết, thống kê kiểm tra có liên quan và mã Python để bạn hiểu. Tôi cũng đã mã hóa phần kết luận. Ở đây, tôi đã chia sẻ với bạn một vài trường hợp thay vì bao gồm tất cả. Trong blog này, tôi muốn đưa ra các ví dụ về kiểm tra t một mẫu, kiểm tra t hai mẫu và kiểm tra t ghép cặp bằng Python

Một mẫu t-test

Dữ liệu

Huyết áp tâm thu của 14 bệnh nhân được đưa ra dưới đây

183, 152, 178, 157, 194, 163, 144, 114, 178, 152, 118, 158, 172, 138

Kiểm tra xem trung bình tổng thể có nhỏ hơn 165 không

H0. Không có sự khác biệt đáng kể về huyết áp tâm thu. tôi. e. , μ = 165

H1. Trung bình dân số nhỏ hơn 165. tôi. e. , m < 165

Thử nghiệm thống kê

 

Ở đâu,

x̄ là trung bình mẫu

μ là trung bình dân số

s là độ lệch chuẩn mẫu

n là số quan sát;

Mã số

Mã Python

Vì vậy, chúng tôi kết luận rằng có một sự khác biệt đáng kể về huyết áp tâm thu

i. e. , μ < 165 tại %. Mức ý nghĩa 2f”'%alpha]

Hai mẫu t-test

Dữ liệu

So sánh hiệu quả của amoni clorua và urê, trên năng suất hạt lúa, một thí nghiệm đã được tiến hành. Các kết quả được đưa ra dưới đây

amoni

clorua [X1]

13. 410. 911. 211. 81415. 314. 212. 61716. 216. 515. 7Urê [X2]1211. 710. 711. 214. 814. 413. 913. 716. 91615. 616

H0. Ảnh hưởng của amoni clorua và urê đến năng suất hạt của lúa là như nhau. e. , μ1 = μ2

H1. Ảnh hưởng của amoni clorua và urê đến năng suất hạt lúa không đồng đều. e. , μ1 ≠ μ2

Thử nghiệm thống kê


Ở đâu,

x̄1 và x̄2 lần lượt là phương tiện mẫu cho x1 và x2

n1 và n2 lần lượt là số quan sát trong x1 và x2

s1 và s2 lần lượt là độ lệch chuẩn mẫu cho x1 và x2

Mã số

Ammonium_chloride=[13.4,10.9,11.2,11.8,14,15.3,14.2,12.6,17,16.2,16.5,15.7]
Urea=[12,11.7,10.7,11.2,14.8,14.4,13.9,13.7,16.9,16,15.6,16]
from scipy import stats

t_value,p_value=stats.ttest_ind[Ammonium_chloride,Urea]

print['Test statistic is %f'%float["{:.6f}".format[t_value]]]

print['p-value for two tailed test is %f'%p_value]

alpha = 0.05

if p_value

Chủ Đề