Hướng dẫn how to run a ttest in python - làm thế nào để chạy một ttest trong python

Kiểm tra t độc lập

Thử nghiệm t độc lập là một thử nghiệm tham số được sử dụng để kiểm tra sự khác biệt có ý nghĩa thống kê về phương tiện giữa 2 nhóm. Như với tất cả các thử nghiệm tham số, có một số điều kiện nhất định cần được đáp ứng để kết quả kiểm tra được coi là đáng tin cậy.

Các giả định kiểm tra tham số

  • Phân phối dân số là bình thường
  • Các mẫu có phương sai bằng nhau
  • Hai mẫu độc lập

Giả thuyết

  1. $ H_0: \ mu_1 - \ mu_2 \ le d_o $
  2. $ H_0: \ mu_1 - \ mu_2 \ ge d_o $
  3. $ H_0: \ mu_1 - \ mu_2 = d_o $
  1. $ H_a: \ mu_1 - \ mu_2> d_o $
  2. $ H_a: \ mu_1 - \ mu_2
  3. $ H_a: \ mu_1 - \ mu_2 \ ne d_o $

Thông thường $ d_o $ được đặt thành 0 và giả thuyết thứ 3 đang được kiểm tra, tức là không có sự khác biệt giữa các nhóm. Thống kê kiểm tra là giá trị T và có thể được tính toán bằng công thức sau:

  • $ t = \ frac {(\ bar {x} _1 - \ Bar {x} _2) - d_0} {s_p \ sqrt {\ frac {1} {n_1}+\ frac
  • Trong đó $ s_p $ là độ lệch chuẩn gộp và được tính là $ s_p = \ sqrt {\ frac {(n_1 - 1) s_1^2 + (n_2 - 1) s_2^2} {n_1 + n_2 - 2}}} $

Người ta bác bỏ giả thuyết null, $ h_0 $, nếu giá trị T được tính toán lớn hơn hoặc nhỏ hơn giá trị t tới hạn. Giá trị t quan trọng được xác định bởi mức độ tự do và alpha, $ \ alpha $, giá trị. Mức độ tự do được tính là $ df = n_1 + n_2 - 2 $ và $ \ alpha $ thường được đặt thành 0,05. Từ chối $ h_0 $ nếu:

  1. $ t \ ge t_ \ alpha $
  2. $ t \ le -t_ \ alpha $
  3. $ | t | \ ge t _ {\ frac {\ alpha} {2}} $

Trước khi quyết định chấp nhận hoặc từ chối giả thuyết khống, các giả định cần được kiểm tra. Xem trang này về cách kiểm tra các giả định tham số.

Đừng sợ nếu toán học không phải là bộ đồ mạnh mẽ của bạn. Tất cả điều này đang được tăng cường khi sử dụng các phương pháp của phần mềm thống kê hoặc ngôn ngữ lập trình. Thật tốt khi biết những gì đang diễn ra đằng sau Scarences. Tài liệu tham khảo cho phần này được cung cấp ở cuối trang.

Đừng quên kiểm tra các giả định trước khi diễn giải kết quả! Đầu tiên để tải các thư viện cần thiết. Trình diễn này sẽ bao gồm 2 cách để tiến hành thử nghiệm t mẫu độc lập trong Python. Một với nghiên cứu và một với scipy.stats.

import pandas as pd
import researchpy as rp
import scipy.stats as stats

Bây giờ để tải tập dữ liệu và xem xét mức độ cao về các biến.

df = pd.read_csv("https://raw.githubusercontent.com/researchpy/Data-sets/master/blood_pressure.csv")
df.info()

Phạm vi Index: 120 Mục nhập, 0 đến 119 Cột dữ liệu (Tổng số 5 cột): Bệnh nhân 120 NON NULL INT64 SEX 120 Đối tượng không null AgeGRP 120 Đối tượng không null BP_BEFFRE 120 NON-NULL INT64 BP_AFTER 120 NON-NULL INT64 DTYPES: INT64 3), đối tượng (2) Sử dụng bộ nhớ: 4,8+ kb

Kiểm tra t độc lập bằng cách sử dụng nghiên cứu

Phương thức trả về 2 khung dữ liệu, một khung chứa thông tin thống kê tóm tắt và một khung khác có chứa thông tin kiểm tra thống kê. Nếu các khung dữ liệu được trả về không được lưu trữ dưới dạng đối tượng Python thì đầu ra sẽ ít sạch hơn so với nó có thể được hiển thị dưới dạng tuple - xem bên dưới.

rp.ttest(group1= df['bp_after'][df['sex'] == 'Male'], group1_name= "Male",
         group2= df['bp_after'][df['sex'] == 'Female'], group2_name= "Female")

( Variable N Mean SD SE 95% Conf. Interval 0 Male 60.0 155.516667 15.243217 1.967891 151.578926 159.454407 1 Female 60.0 147.200000 11.742722 1.515979 144.166533 150.233467 2 combined 120.0 151.358333 14.177622 1.294234 148.795621 153.921046, Independent t-test results 0 Difference (Male - Female) = 8.3167 1 độ tự do = 118.0000 2 T = 3.3480 3 hai bên kiểm tra p Giá trị = 0,0011 4 chênh lệch> 0 p giá trị = 0,9995 5 chênh lệch <0 p giá trị = 0,0005 6 Cohen's d = 0,6112 7 Hedge's G = 0,6074 8 Glass Delta = 0,5456 9 r = 0,2945)

Nếu được lưu trữ dưới dạng các đối tượng Python, chúng sẽ được lưu trữ dưới dạng khung dữ liệu Pandas. Điều này có nghĩa là bất cứ điều gì có thể được thực hiện cho khung dữ liệu gấu trúc truyền thống đều có thể được thực hiện cho các kết quả này.

summary, results = rp.ttest(group1= df['bp_after'][df['sex'] == 'Male'], group1_name= "Male",
                            group2= df['bp_after'][df['sex'] == 'Female'], group2_name= "Female")
print(summary)

Biến đổiNBần tiệnSDSe95% Conf.Khoảng thời gian
0Nam giới60.0 155.516667 15.243217 1.967891 151.578926 159.454407
1Giống cái60.0 147.200000 11.742722 1.515979 144.166533 150.233467
2Kết hợp120.0 151.358333 14.177622 1.294234 148.795621 153.921046

print(results)

Kiểm tra t độc lậpkết quả
0Sự khác biệt (nam - nữ) =8.3167
1Mức độ tự do =118.0000
2t =3.3480
3Hai bên kiểm tra p giá trị =0.0011
4Chênh lệch> 0 p giá trị =0.9995
5Chênh lệch <0 p value =0.0005
6Cohen's d =0.6112
7Hedge's G =0.6074
8Delta của kính =0.5456
9r =0.2945

Trước khi kết quả nên được giải thích, các giả định của bài kiểm tra nên được kiểm tra. Ví dụ: mục đích, kết quả sẽ được giải thích trước khi kiểm tra các giả định.

Diễn dịch

Huyết áp trung bình sau khi điều trị cho nam giới, M = 155.2 (151.6, 159,5), cao hơn về mặt thống kê so với nữ, M = 147.2 (144.2, 150.2); t (118) = 3.3480, p = 0,001.

Test t độc lập bằng Scipy.stats

Phương pháp này tiến hành thử nghiệm t mẫu độc lập và chỉ trả về thống kê kiểm tra t và nó liên quan đến giá trị p. Để biết thêm thông tin về phương pháp này, vui lòng tham khảo trang tài liệu chính thức.

stats.ttest_ind(df['bp_after'][df['sex'] == 'Male'],
                df['bp_after'][df['sex'] == 'Female'])

Ttest_indresult (thống kê = 3.3479506182111387, pvalue = 0,0010930222986154283)

Diễn dịch

Huyết áp trung bình sau khi điều trị cho nam giới, M = 155.2 (151.6, 159,5), cao hơn về mặt thống kê so với nữ, M = 147.2 (144.2, 150.2); t (118) = 3.3480, p = 0,001.

Kiểm tra giả định

Các giả định trong phần này cần được đáp ứng để kết quả kiểm tra được coi là hợp lệ. Một cái nhìn sâu hơn về các giả định tham số được cung cấp ở đây, bao gồm một số biện pháp khắc phục tiềm năng.

Hai mẫu độc lập

Giả định này được kiểm tra khi nghiên cứu được thiết kế. Điều này có nghĩa là không có cá nhân nào có dữ liệu trong nhóm A và B.

Phân phối dân số là bình thường

Một trong những giả định là phân phối lấy mẫu thường được phân phối. Thử nghiệm về tính quy tắc này áp dụng cho sự khác biệt về giá trị giữa các nhóm. Một phương pháp để kiểm tra giả định này là thử nghiệm Shapiro-Wilk. Điều này có thể được hoàn thành bằng phương thức shapiro () từ scipy.stats.

sampling_difference = df['bp_after'][df['sex'] == 'Male'].values - \
                      df['bp_after'][df['sex'] == 'Female'].values

stats.shapiro(sampling_difference)

(0.98586106300354, 0.7147841453552246)

Thật không may, đầu ra không được dán nhãn nhưng ở định dạng (Thống kê kiểm tra W, giá trị p). Thử nghiệm không đáng kể cho thấy phân phối lấy mẫu thường được phân phối.

Một cách khác để kiểm tra giả định là thông qua kiểm tra trực quan- điều này rất hữu ích khi mẫu lớn. Lý do điều này đúng là khi kích thước mẫu tăng lên, khả năng của thử nghiệm thống kê từ chối giả thuyết null tăng lên, tức là nó có được sức mạnh để phát hiện sự khác biệt nhỏ hơn khi kích thước mẫu N tăng.

Một phương pháp kiểm tra trực quan phân phối là sử dụng biểu đồ xác suất có hoặc không có giá trị tương quan, $ r^2 $, để đánh giá các giá trị quan sát được tương quan với phân phối lý thuyết trong câu hỏi - trong trường hợp hiện tại, nó sẽ là Gaussian (a.k.a phân phối bình thường). Điều này có thể được hoàn thành bằng cách sử dụng phương thức probplot () từ scipy.stats.

fig = plt.figure(figsize= (20, 10))
ax = fig.add_subplot(111)

normality_plot, stat = stats.probplot(sampling_difference, plot= plt, rvalue= True)
ax.set_title("Probability plot of sampling difference", fontsize= 20)
ax.set

plt.show()

Hướng dẫn how to run a ttest in python - làm thế nào để chạy một ttest trong python

Cả hai phương pháp đều hỗ trợ cùng một phát hiện đó là phân phối lấy mẫu thường được phân phối.

Tính đồng nhất của phương sai

Một trong những giả định là cả hai nhóm đều có phương sai như nhau. Một phương pháp để kiểm tra giả định này là thử nghiệm về tính đồng nhất của Levene. Điều này có thể được hoàn thành bằng phương thức levene () từ scipy.stats.

stats.levene(df['bp_after'][df['sex'] == 'Male'],
             df['bp_after'][df['sex'] == 'Female'],
             center= 'mean')

Leveneresult (thống kê = 5.865854141268659, pvalue = 0,01695904277978066)

Thử nghiệm có ý nghĩa cho thấy các nhóm có một lượng biến thể khác nhau và thử nghiệm t có thể không phải là phương pháp thống kê tốt nhất được sử dụng. Một lần nữa, nó có thể đáng để kiểm tra giả định này một cách trực quan.

fig = plt.figure(figsize= (20, 10))
ax = fig.add_subplot(111)


p_bp_male = plt.hist(df['bp_after'][df['sex'] == 'Male'], label= "Male",
                     density= True,
                     alpha=0.75)
p_bp_female = plt.hist(df['bp_after'][df['sex'] == 'Female'], label= "Female",
                       density= True,
                       alpha=0.75)


plt.suptitle("Distribution of Post-Blood Pressure \n between Males and Females", fontsize= 20)
plt.xlabel("Blood Pressure", fontsize= 16)
plt.ylabel("Probability density", fontsize= 16)

plt.text(133, .025,
         f"$\mu= {df['bp_after'][df['sex'] == 'Female'].mean(): .1f}, \ \sigma= {df['bp_after'][df['sex'] == 'Female'].std(): .1f}$")
plt.text(160, .025,
         f"$\mu= {df['bp_after'][df['sex'] == 'Male'].mean(): .1f}, \ \sigma= {df['bp_after'][df['sex'] == 'Male'].std(): .1f}$")


plt.show()

Hướng dẫn how to run a ttest in python - làm thế nào để chạy một ttest trong python

Có nhiều cách khác nhau để xử lý tính không đồng nhất (phương sai không đồng đều) và một quyết định cần được đưa ra. Một số tùy chọn bao gồm, nhưng không giới hạn, biến đổi biến phụ thuộc (kết quả), có thể sử dụng các phương tiện được cắt tỉa, lỗi tiêu chuẩn mạnh mẽ hoặc sử dụng các thử nghiệm tham số làm thử nghiệm t của Welch.

Làm thế nào để bạn chạy một ttest?

Để chạy thử nghiệm t, sắp xếp dữ liệu của bạn trong các cột như được thấy dưới đây. Nhấp vào menu dữ liệu của người Viking, và sau đó chọn tab Phân tích dữ liệu trên mạng. Bây giờ bạn sẽ thấy một cửa sổ liệt kê các bài kiểm tra thống kê khác nhau mà Excel có thể thực hiện. Cuộn xuống để tìm tùy chọn Test Test và nhấp vào OK OK.

Làm thế nào để bạn chạy một T độc lập

Trước tiên chúng tôi nhập chức năng liên quan từ phần thống kê của thư viện SCIPY.Sau đó, chúng tôi chạy thử nghiệm t độc lập của chúng tôi bằng lệnh sau: ttest_ind (group1_data, group2_data).Tuyệt quá!Chúng tôi đã nhận được câu trả lời giống như chúng tôi đã làm với R: giá trị T là 2,37 và giá trị p là 0,02.ttest_ind(group1_data, group2_data) . Great! We got the same answer as we did with R: the t-value is 2.37 and the p-value is 0.02.

Làm thế nào để bạn làm một sinh viên t

# Kiểm tra t của sinh viên cho các mẫu độc lập.từ Numpy.Hạt giống nhập khẩu ngẫu nhiên ..
từ Numpy.Nhập ngẫu nhiên Randn.từ Scipy.Số liệu thống kê nhập TTEST_IND ..
# Hạt trình tạo số ngẫu nhiên.Hạt giống (1).
data1 = 5 * randn (100) + 50. data2 = 5 * randn (100) + 51 ..
stat, p = ttest_ind (data1, data2) in ('t =%. 3f, p =%. 3f'%(stat, p)).

Làm thế nào để bạn thực hiện một

Tiến hành thử nghiệm một mẫu trong Python..
Cú pháp: Scipy.số liệu thống kê.ttest_1samp (a, popmean, trục = 0) ..
parameters:.
Trả về: T thống kê và hai giá trị p đuôi ..