Hướng dẫn welchs t-test confidence interval python - trăn khoảng tin cậy t-test của Welch

Không chắc chắn về Scripy. Có thể có một trang web trợ giúp kinh điển sẽ hiển thị mã. [Có lẽ điều này.]

Trong R, CI 95% là một phần của đầu ra

me = qt(.975, 17.9)*sqrt(var(ts1)/10+var(ts2)/10); me
[1] 1.146912
pm=c(-1,1)
-1 + pm*me
[1] -2.1469118  0.1469118
7, trong đó phiên bản Welch của thử nghiệm T 2 mẫu là mặc định (và đối số
me = qt(.975, 17.9)*sqrt(var(ts1)/10+var(ts2)/10); me
[1] 1.146912
pm=c(-1,1)
-1 + pm*me
[1] -2.1469118  0.1469118
8 giúp bạn kiểm tra gộp).

ts1 = c(11,9,10,11,10,12,9,11,12,9)
ts2 = c(11,13,10,13,12,9,11,12,12,11)
t.test(ts1, ts2)

        Welch Two Sample t-test

data:  ts1 and ts2
t = -1.8325, df = 17.9, p-value = 0.08356
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2.1469104  0.1469104
sample estimates:
mean of x mean of y 
     10.4      11.4 

Bởi vì CI 95% bao gồm $ 0 $, thử nghiệm 2 mặt không từ chối $ h_0: \ mu_1 = \ mu_2 $ ở mức 5%.$0$ the 2-sided test does not reject $H_0: \mu_1=\mu_2$ at the 5% level.

Biên độ lỗi 95% là $ t^*\ sqrt {\ frac {s_1^2} {n_1}+\ frac {s_2^2} {n_2}}, $ trong đó $ t^*$ %$ từ đuôi trên của phân phối t của sinh viên với mức độ tự do $ \ nu^\ Prime $ như được tìm thấy từ công thức Welch liên quan đến các phương sai mẫu và cỡ mẫu. [Ở đây, $ \ nu^\ Prime = 17.9, $ trong một số phần mềm được làm tròn xuống một số nguyên. Một luôn luôn có $ \ min (n_1-1, n_2-1) \ le \ nu^\ Prime \ le n_1+n_2-2.] $$t^*\sqrt{\frac{S_1^2}{n_1}+\frac{S_2^2}{n_2}},$ where $t^*$ cuts probability $0.025=2.5\%$ from the upper tail of Student's t distribution with degrees of freedom $\nu^\prime$ as found from the Welch formula involving sample variances and sample sizes. [Here, $\nu^\prime = 17.9,$ in some software rounded down to an integer. One always has $\min(n_1-1,n_2-1) \le \nu^\prime \le n_1+n_2-2.]$

me = qt(.975, 17.9)*sqrt(var(ts1)/10+var(ts2)/10); me
[1] 1.146912
pm=c(-1,1)
-1 + pm*me
[1] -2.1469118  0.1469118

Luôn luôn là một ý tưởng tốt để ghi nhớ các công thức thực tế, ngay cả khi người ta hy vọng sẽ chỉ sử dụng chúng.

Giả sử rằng chúng ta đang ở trong nhóm khoa học dữ liệu cho một công ty nước cam. Trong cuộc họp, nhóm tiếp thị tuyên bố rằng chiến lược tiếp thị mới của họ dẫn đến tăng doanh số. Đội ngũ quản lý yêu cầu chúng tôi xác định xem điều này có thực sự đúng không.

Đây là dữ liệu từ tháng 1 và tháng hai.

  • Doanh số trung bình hàng ngày trong tháng 1 = \ $ 10.000, cỡ mẫu = 31, phương sai = 10.000.000
  • Doanh số trung bình hàng ngày trong tháng 2 = \ $ 12.000, cỡ mẫu = 28, phương sai = 20.000.000

Làm thế nào để chúng ta biết rằng sự gia tăng doanh số bán nước cam hàng ngày không phải do sự thay đổi ngẫu nhiên trong dữ liệu?

NULL và giả thuyết thay thế

Số tiền bán hàng mỗi ngày không nhất quán trong suốt tháng. Dữ liệu tháng 1 có phương sai 10.000.000 và độ lệch chuẩn là ~ 3162. Vào những ngày tồi tệ, chúng tôi sẽ bán \ 8.000 đô la nước cam. Vào những ngày tốt, chúng tôi sẽ bán 14.000 đô la nước cam. Chúng tôi phải chứng minh rằng sự gia tăng doanh số trung bình hàng ngày trong tháng Hai đã không hoàn toàn xảy ra.

Giả thuyết khống sẽ là:

$ H_0: \ mu_0 - \ mu_1 = 0 $

Có ba giả thuyết thay thế có thể:

  1. $ H_a: \ mu_0 <\ mu_1 $
  2. $ H_a: \ mu_0> \ mu_1 $
  3. $ H_a: \ mu_0 \ ne \ mu_1 $

Trong đó $ \ mu_0 $ là doanh số trung bình hàng ngày trong tháng 1 và $ \ mu_1 $ là doanh số trung bình hàng ngày trong tháng Hai. Giả thuyết khống của chúng tôi chỉ đơn giản là nói rằng không có thay đổi về doanh số trung bình hàng ngày.

Nếu chúng tôi quan tâm đến việc kết luận rằng doanh số trung bình hàng ngày đã tăng thì chúng tôi sẽ đi với giả thuyết thay thế đầu tiên. Nếu chúng tôi quan tâm đến việc kết luận rằng doanh số trung bình hàng ngày đã giảm, thì chúng tôi sẽ đi với giả thuyết thay thế thứ hai. Nếu chúng tôi quan tâm đến việc kết luận rằng doanh số trung bình hàng ngày đã thay đổi, thì chúng tôi sẽ đi với giả thuyết thay thế thứ ba.

Trong trường hợp của chúng tôi, bộ phận tiếp thị tuyên bố rằng doanh số đã tăng lên. Vì vậy, chúng tôi sẽ sử dụng giả thuyết thay thế đầu tiên.

Lỗi loại I và II

Chúng tôi phải xác định xem chúng tôi chấp nhận hoặc từ chối giả thuyết null. Điều này có thể dẫn đến bốn kết quả khác nhau.

  1. Giữ lại giả thuyết null, và giả thuyết null là chính xác. (Không có lỗi)
  2. Giữ lại giả thuyết null, nhưng giả thuyết thay thế là chính xác. (Lỗi loại II, Sai âm)
  3. Bác bỏ giả thuyết null, nhưng giả thuyết null là chính xác. (Lỗi loại I, dương tính giả)
  4. Bác bỏ giả thuyết null, và giả thuyết thay thế là chính xác. (Không có lỗi)

Kiểm tra giả thuyết sử dụng logic tương tự như một phiên tòa xét xử. Giả thuyết khống (bảo vệ) là vô tội cho đến khi được chứng minh là có tội. Chúng tôi sử dụng dữ liệu làm bằng chứng để xác định xem các khiếu nại có đưa ra giả thuyết null là đúng hay không.

Mức độ đáng kể¶

Để đưa ra quyết định, chúng ta cần biết liệu dữ liệu tháng hai có ý nghĩa thống kê hay không. Chúng ta sẽ phải tính toán xác suất tìm thấy dữ liệu được quan sát hoặc dữ liệu cực đoan hơn giả định rằng giả thuyết null, $ h_0 $ là đúng. Xác suất này được gọi là giá trị p.p-value.

Nếu xác suất này cao, chúng tôi sẽ giữ lại giả thuyết null. Nếu xác suất này thấp, chúng tôi sẽ từ chối giả thuyết null. Ngưỡng xác suất này được gọi là mức ý nghĩa, hoặc $ \ alpha $. Nhiều nhà thống kê thường sử dụng $ \ alpha $ = 0,05.significance level, or $\alpha$. Many statisticians typically use $\alpha$ = 0.05.

Để trực quan hóa điều này bằng cách sử dụng phân phối Sababiliy, hãy nhớ rằng chúng tôi đã chọn để chứng minh rằng $ \ mu_0 <\ mu_1 $. Đây được gọi là một bài kiểm tra đuôi phải.right-tailed test.

In [1]:

import matplotlib.pyplot as plt
import numpy as np
import math
import seaborn as sns
from scipy.integrate import simps
%matplotlib inline

#The Gaussian Function
def g(x):
    return 1/(math.sqrt(1**math.pi))*np.exp(-1*np.power((x - 0)/1, 2)/2)

fig = plt.figure(figsize=(10,3))
x = np.linspace(-300, 300, 10000)
sns.set(font_scale=2)

#Draws the gaussian curve
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, g(x))
ax.set_ylim(bottom = 0, top = 1.1)
ax.set_xlim(left = -4, right = 4)
ax.set_yticks([])
plt.xticks([0, 1.645], 
               [0, r'$t_\alpha$']
              )
    
#Fills the area under the curve
section = np.arange(1.645, 300, 1/2000)
ax.fill_between(section, g(section))

#Calculates the area under the curve using Simpson's Rule
x_range = np.linspace(1.645, 300, 2000)
y_range = g(x_range) 
area_total = simps(g(x), x)
area_part = simps(y_range , x_range)
percent_data = np.round((area_part/area_total), 2)
ax.annotate(r'$\alpha$ < {}'.format(percent_data), xy=(3, 0.45), ha='center')
ax.annotate('Rejection '.format(1-percent_data), xy=(3, 0.26), ha='center')
ax.annotate('Region '.format(1-percent_data), xy=(3, 0.1), ha='center')
ax.annotate('Retain $H_0$', xy=(0, 0.26), ha='center')
plt.show()

Chúng tôi không biết dữ liệu từ tháng Hai ở đâu trong phân phối này. Chúng tôi vẫn sẽ tính toán giá trị p để xác định xem chúng tôi có ở vùng từ chối hay không. Giá trị p chỉ có thể trả lời câu hỏi này: dữ liệu tháng hai có khả năng như thế nào, giả sử rằng giả thuyết null là đúng? Nếu chúng ta kết thúc với giá trị p nhỏ hơn 0,05, thì chúng ta sẽ từ chối giả thuyết null.

Các trường hợp khác: ¶

Nếu giả thuyết thay thế của chúng tôi là $ \ MU_0> \ MU_1 $, thì chúng tôi sẽ phải sử dụng một bài kiểm tra đuôi trái, chỉ đơn giản là sự xác minh của bài kiểm tra đuôi phải.left-tailed test, which is simply the flipped veresion of the right-tailed test.

Nếu giả thuyết thay thế của chúng tôi là $ \ mu_0 \ ne \ mu_1 $, thì chúng tôi sẽ phải sử dụng thử nghiệm hai đuôi, cả hai thử nghiệm đuôi trái và phải kết hợp với $ \ alpha $ = 0,025 ở mỗi bên.two-tailed test, which is both the left and right tailed test combined with $\alpha$ = 0.025 on each side.

T-Test¶ The Welch

Một cách để giải quyết vấn đề này là tính toán xác suất tìm dữ liệu tháng hai trong khu vực từ chối bằng cách sử dụng thử nghiệm t của Welch. Phiên bản này của thử nghiệm t có thể được sử dụng cho các cỡ mẫu bằng hoặc không đều nhau. Ngoài ra, thử nghiệm t này có thể được sử dụng cho hai mẫu với các phương sai khác nhau. Đây thường được ca ngợi là hình thức mạnh mẽ nhất của bài kiểm tra t. Tuy nhiên, bài kiểm tra t của Welch giả định rằng hai mẫu dữ liệu độc lập và phân phối giống hệt nhau.

Điểm T có thể được tính toán bằng công thức sau:

$$ T_ {SCORE} = \ frac {\ Bar {x} _1 - \ Bar {x} _2} {S_ {Welch}} $$

$$ S_ {Welch} = \ sqrt {\ frac {s^2_1} {n_1}+\ frac {s^2_2} {n_2}} $$

Mức độ tự do có thể được tính bằng cách sử dụng công thức sau:

$$ DOF = \ frac {\ bigg ({\ frac {s^2_1} {n_1}+\ frac {s^2_2} {n_2}} \ bigg)^2} {n_1})^2} {n_1-1} + \ frac {({s^2_2}/{n_2})^2} {n_2-1}} $$

Trong đó $ \ Bar {x} $ là trung bình mẫu, $ s $ là phương sai và $ n $ là cỡ mẫu. Với mức độ tự do và điểm T, chúng ta có thể sử dụng máy tính Table T hoặc máy tính phân phối T để xác định giá trị p. Nếu giá trị p nhỏ hơn mức ý nghĩa, thì chúng ta có thể kết luận rằng dữ liệu của chúng ta có ý nghĩa thống kê và giả thuyết null sẽ bị từ chối.

Chúng tôi có thể cắm từng số vào Python, và sau đó tìm kiếm một bảng T. Nhưng việc sử dụng mô -đun scipy.stats dễ dàng hơn. Nhấn vào đây để liên kết đến tài liệu.

In [2]:

from scipy import stats

t_score = stats.ttest_ind_from_stats(mean1=12000, std1=np.sqrt(10000000), nobs1=31, \
                               mean2=10000, std2=np.sqrt(20000000), nobs2=28, \
                               equal_var=False)
t_score

Out[2]:

Ttest_indResult(statistic=1.9641226483541647, pvalue=0.055312326250267031)

Từ bài kiểm tra t của người xứ Wales, chúng tôi đã kết thúc với giá trị p là 0,055. SCIPY tính toán giá trị này dựa trên hai trường hợp đuôi. Nếu chúng ta chỉ muốn giá trị p của đuôi phải, chúng ta có thể chia giá trị này cho 2. Điều này có nghĩa là xác suất có ~ 2,57% cơ hội tìm kiếm các giá trị được quan sát từ tháng 2 được đưa ra từ tháng 1. Chúng ta nên từ chối giả thuyết null.

Bài kiểm tra t của Welch với dữ liệu Facebook

Hãy thử sử dụng dữ liệu thực lần này. Tôi đã lấy dữ liệu từ kho lưu trữ máy học của UCI. Nhấn vào đây để liên kết đến tài liệu và trích dẫn. Tóm lại, dữ liệu có liên quan đến 'Bài đăng' được xuất bản trong năm 2014 trên trang Facebook của một thương hiệu mỹ phẩm nổi tiếng.

Giả sử công ty mỹ phẩm của chúng tôi muốn có nhiều làn da hơn trong trò chơi tiếp thị kỹ thuật số. Chúng tôi quan tâm đến việc sử dụng Facebook như một nền tảng để quảng cáo công ty của chúng tôi. Hãy bắt đầu với một số khám phá dữ liệu đơn giản.

In [3]:

import pandas as pd
data = pd.read_csv('dataset_Facebook.csv', delimiter=';')
data.head()

Out[3]:

Trang tổng lượt thíchLoại hìnhLoạiĐăng thángĐăng ngày trong tuầnBài sauTrảTổng số bài viết trọn đờiTổng số lần hiển thị bài viết trọn đờiNgười dùng tham gia trọn đờiNgười tiêu dùng bài trọn đờiBài viết trọn đờiẤn tượng bài đăng trọn đời của những người đã thích trang của bạnBài đăng trọn đời đạt được bởi những người thích trang của bạnNhững người trọn đời đã thích trang của bạn và tham gia vào bài đăng của bạnbình luậngiốngđăng lạiTổng số tương tác
0139441 ảnh2 12 4 3 0.0 2752 5091 178 109 159 3078 1640 119 4 79.0 17.0 100
1139441 Trạng thái2 12 3 10 0.0 10460 19057 1457 1361 1674 11710 6112 1108 5 130.0 29.0 164
2139441 ảnh3 12 3 3 0.0 2413 4373 177 113 154 2812 1503 132 0 66.0 14.0 80
3139441 ảnh2 12 2 10 1.0 50128 87991 2211 790 1119 61027 32048 1386 58 1572.0 147.0 1777
4139441 ảnh2 12 2 3 0.0 7244 13594 671 410 580 6228 3200 396 19 325.0 49.0 393

Trạng thái

Khám phá các bài đăng trên Facebook 'trả tiền' và 'không trả tiền'

In [4]:

Chúng tôi quan tâm đến việc biết số lượng lượt thích 'đã trả tiền' được nhận so với một bài đăng "không trả tiền". Hãy bắt đầu với một số biểu đồ và thống kê mô tả.

sample_size: 359
sample_mean: 155.84679665738162
sample_variance: 48403.23623970993

In [5]:

paid_likes = data[data['Paid']==1]['like']
fig = plt.figure(figsize=(10,3))
ax=paid_likes.hist(range=(0, 1500),bins=30)
ax.set_xlim(0,1500)

plt.xlabel('Likes (Unpaid)')
plt.ylabel('Frequency')
plt.show()

print('sample_size: {}'.format(paid_likes.shape[0]))
print('sample_mean: {}'.format(paid_likes.mean()))
print('sample_variance: {}'.format(paid_likes.var()))

sample_size: 139
sample_mean: 235.6474820143885
sample_variance: 247175.07048274425

unpaid_likes = data[data['Paid']==0]['like']
unpaid_likes = unpaid_likes.dropna()
sns.set(font_scale=1.65)
fig = plt.figure(figsize=(10,3))
ax=unpaid_likes.hist(range=(0, 1500),bins=30)
ax.set_xlim(0,1500)

plt.xlabel('Likes (Paid)')
plt.ylabel('Frequency')
plt.show()

print('sample_size: {}'.format(unpaid_likes.shape[0]))
print('sample_mean: {}'.format(unpaid_likes.mean()))
print('sample_variance: {}'.format(unpaid_likes.var()))

Khoảng tin cậyconfidence interval. This is a range of values that is likely to contain the value of an unknown population mean based on our sample mean. In this case, I've split the data into two categories, 'Paid' and 'Unpaid'. As a result, the population mean will be calculated with respect to each categories.

Chúng ta cũng có thể khám phá bằng dữ liệu bằng cách tính khoảng tin cậy. Đây là một loạt các giá trị có khả năng chứa giá trị của giá trị dân số chưa biết dựa trên giá trị trung bình mẫu của chúng tôi. Trong trường hợp này, tôi đã chia dữ liệu thành hai loại, 'trả tiền' và 'không trả tiền'. Do đó, trung bình dân số sẽ được tính toán liên quan đến từng loại.

  • Đây là các giả định:
  • Dữ liệu phải được lấy mẫu ngẫu nhiên.
  • Các giá trị mẫu phải độc lập với nhau.

Cỡ mẫu phải đủ lớn để sử dụng định lý giới hạn trung tâm. Thông thường chúng tôi muốn sử dụng N> 30.

Chúng ta có thể tính toán khoảng này bằng cách nhân lỗi tiêu chuẩn với 1.96, đó là điểm cho độ tin cậy 95%. Điều này có nghĩa là chúng tôi tự tin 95% rằng dân số có nghĩa là ở đâu đó trong khoảng thời gian này.

In [6]:

me = qt(.975, 17.9)*sqrt(var(ts1)/10+var(ts2)/10); me
[1] 1.146912
pm=c(-1,1)
-1 + pm*me
[1] -2.1469118  0.1469118
0

Nói cách khác, nếu chúng ta lấy nhiều mẫu và khoảng tin cậy 95% được tính toán cho mỗi mẫu, 95% các khoảng sẽ chứa trung bình dân số.

Từ biểu đồ trên, chúng ta có thể thấy rằng các thanh lỗi cho các bài đăng 'trả tiền' và các bài đăng "không trả tiền 'có vùng chồng chéo. Chúng ta cũng có thể thấy rằng giá trị trung bình của' lượt thích 'trong các bài đăng có trả tiền cao hơn giá trị trung bình của mẫu' ' Thích 'trong các bài đăng chưa trả tiền. Chúng tôi cần xác định xem dữ liệu chúng tôi có có ý nghĩa thống kê và đảm bảo rằng kết quả của chúng tôi không xảy ra hoàn toàn do tình cờ.

Giả thuyết khống sẽ đề xuất rằng việc trả tiền cho quảng cáo không làm tăng số lượng lượt thích.

$$ h_0: \ mu_0 = \ text {139 lượt thích} $$

Giả thuyết thay thế sẽ đề xuất rằng việc trả tiền cho quảng cáo sẽ làm tăng số lượng lượt thích.

$$ h_a: \ mu_1> \ text {139 lượt thích} $$

In [7]:

me = qt(.975, 17.9)*sqrt(var(ts1)/10+var(ts2)/10); me
[1] 1.146912
pm=c(-1,1)
-1 + pm*me
[1] -2.1469118  0.1469118
1

me = qt(.975, 17.9)*sqrt(var(ts1)/10+var(ts2)/10); me
[1] 1.146912
pm=c(-1,1)
-1 + pm*me
[1] -2.1469118  0.1469118
2

In [8]:

me = qt(.975, 17.9)*sqrt(var(ts1)/10+var(ts2)/10); me
[1] 1.146912
pm=c(-1,1)
-1 + pm*me
[1] -2.1469118  0.1469118
3

me = qt(.975, 17.9)*sqrt(var(ts1)/10+var(ts2)/10); me
[1] 1.146912
pm=c(-1,1)
-1 + pm*me
[1] -2.1469118  0.1469118
4

Chúng ta có thể đi đến một quyết định bằng cách sử dụng bài kiểm tra t của Welch phải. Lần này, chúng tôi sẽ tính toán giá trị p trong việc sử dụng các công thức trong phần trước thay vì mô-đun SCIPY.

Sử dụng Table T ở đây. Chúng tôi chỉ cần điểm T là 1,658 và mức độ tự do ít nhất 120 để có được giá trị p là 0,05.

In [9]:

me = qt(.975, 17.9)*sqrt(var(ts1)/10+var(ts2)/10); me
[1] 1.146912
pm=c(-1,1)
-1 + pm*me
[1] -2.1469118  0.1469118
5

Out[9]:

me = qt(.975, 17.9)*sqrt(var(ts1)/10+var(ts2)/10); me
[1] 1.146912
pm=c(-1,1)
-1 + pm*me
[1] -2.1469118  0.1469118
6

Tiếp theo, chúng tôi sẽ sử dụng SCIPY một lần nữa để xác định giá trị p chính xác.

Từ bài kiểm tra t của tiếng Welch, chúng tôi đã kết thúc với giá trị P hai đuôi là ~ 0,07, hoặc ~ 0,035 cho bài kiểm tra một đuôi. Chúng tôi sẽ từ chối giả thuyết null và chấp nhận rằng quảng cáo trên Facebook có tác động tích cực đến số "lượt thích" trên một bài đăng.

  1. Ghi chú:
  2. Giá trị p không cho chúng ta xác suất giả thuyết null là sai. Chúng tôi cũng không biết xác suất của giả thuyết thay thế là đúng.
  3. Giá trị p không chỉ ra mức độ của hiệu ứng quan sát được, chúng ta chỉ có thể kết luận rằng các hiệu ứng là dương.
  4. Giá trị p 0,05 chỉ là một quy ước để xác định ý nghĩa thống kê.



Làm thế nào để bạn làm một người xứ Wales t

Để tiến hành thử nghiệm t của Welch, người ta cần sử dụng phương thức StatS.TTest_ind () trong khi chuyển giao sai trong đối số của Bình đẳng Giá trị p là có ý nghĩa, do đó người ta có thể bác bỏ giả thuyết null để hỗ trợ cho sự thay thế.use the stats. ttest_ind() method while passing “False” in the “equal_var=” argument. The p-value is significant, therefore one can reject the null hypothesis in support of the alternative.

Làm thế nào để bạn tìm thấy khoảng tin cậy trong Python?

Tạo một mẫu mới dựa trên bộ dữ liệu của chúng tôi, với sự thay thế và với cùng một số điểm.Tính giá trị trung bình và lưu trữ nó trong một mảng hoặc danh sách.Lặp lại quá trình nhiều lần (ví dụ: 1000) trong danh sách các giá trị trung bình, tính toán phần trăm 2,5 và 97,5 phần trăm (nếu bạn muốn khoảng tin cậy 95%)

P là gì

Nếu giá trị tuyệt đối của thống kê t (| t |) lớn hơn giá trị tới hạn, thì sự khác biệt là đáng kể.Nếu không thì không.Mức độ ý nghĩa hoặc (giá trị p) tương ứng với rủi ro được biểu thị bằng bảng T cho tính toán | t |giá trị.corresponds to the risk indicated by the t table for the calculated |t| value.

Sự khác biệt giữa sinh viên t là gì

Sự khác biệt quan trọng nhất giữa bài kiểm tra t của sinh viên và bài kiểm tra của Welch, và thực sự lý do chính khiến bài kiểm tra của Welch được phát triển, là khi cả phương sai và kích thước mẫu khác nhau giữa các nhóm, giá trị t, mức độ tự do vàGiá trị p Tất cả đều khác nhau giữa bài kiểm tra t của sinh viên và bài kiểm tra t của Welch.both the variances and the sample sizes differ between groups, the t-value, degrees of freedom, and p-value all differ between Student's t-test and Welch's t-test.