Udførelse af en T-test i Python

Udførelse af en T-test i Python

Kildeknude: 1902069

Udførelse af en T-test i Python
Billede af redaktør

Nøgleforsøg

  • T-testen er en statistisk test, der kan bruges til at bestemme, om der er en signifikant forskel mellem middelværdierne af to uafhængige stikprøver af data.
  • Vi illustrerer, hvordan en t-test kan anvendes ved hjælp af iris-datasættet og Pythons Scipy-bibliotek.

T-testen er en statistisk test, der kan bruges til at bestemme, om der er en signifikant forskel mellem middelværdierne af to uafhængige stikprøver af data. I denne vejledning illustrerer vi den mest grundlæggende version af t-testen, hvor vi vil antage, at de to prøver har lige store varianser. Andre avancerede versioner af t-testen omfatter Welch's t-test, som er en tilpasning af t-testen, og som er mere pålidelig, når de to prøver har ulige varianser og muligvis ulige stikprøvestørrelser.

t-statistikken eller t-værdien beregnes som følger:

 

Udførelse af en T-test i Python
 

hvor ligning

ligning er middelværdien af ​​prøve 1, ligning er middelværdien af ​​prøve 2, ligning er variansen af ​​prøve 1, ligning er variansen af ​​prøve 2, ligning er stikprøvestørrelsen af ​​prøve 1, og ligning er stikprøvestørrelsen af ​​prøve 2.

For at illustrere brugen af ​​t-testen vil vi vise et simpelt eksempel ved hjælp af iris-datasættet. Antag, at vi observerer to uafhængige prøver, f.eks. blomsterbægerbladslængder, og vi overvejer, om de to prøver er trukket fra den samme population (f.eks. den samme blomsterart eller to arter med lignende bægerbladskarakteristika) eller to forskellige populationer.

t-testen kvantificerer forskellen mellem de aritmetiske middelværdier af de to prøver. P-værdien kvantificerer sandsynligheden for at opnå de observerede resultater, forudsat at nulhypotesen (at prøverne er trukket fra populationer med samme populationsmiddelværdi) er sand. En p-værdi større end en valgt tærskel (f.eks. 5 % eller 0.05) indikerer, at vores observation ikke er så usandsynligt, at den er sket tilfældigt. Derfor accepterer vi nulhypotesen om lige befolkningsmidler. Hvis p-værdien er mindre end vores tærskel, så har vi beviser imod nulhypotesen om lige befolkningsmidler.

T-test input

De input eller parametre, der er nødvendige for at udføre en t-test, er:

  • To arrays a , b indeholdende data for prøve 1 og prøve 2

T-test udgange

T-testen returnerer følgende:

  • Den beregnede t-statistik
  • p-værdien

Importer nødvendige biblioteker

import numpy as np
from scipy import stats import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

 

Indlæs Iris-datasæt

from sklearn import datasets
iris = datasets.load_iris()
sep_length = iris.data[:,0]
a_1, a_2 = train_test_split(sep_length, test_size=0.4, random_state=0)
b_1, b_2 = train_test_split(sep_length, test_size=0.4, random_state=1)

 

Beregn stikprøvegennemsnittet og prøvevarianserne

mu1 = np.mean(a_1) mu2 = np.mean(b_1) np.std(a_1) np.std(b_1)

 

Implementer t-test

stats.ttest_ind(a_1, b_1, equal_var = False)

 

Produktion 

Ttest_indResult(statistic=0.830066093774641, pvalue=0.4076270841218671)

 

stats.ttest_ind(b_1, a_1, equal_var=False)

 

Produktion 

Ttest_indResult(statistic=-0.830066093774641, pvalue=0.4076270841218671)

 

stats.ttest_ind(a_1, b_1, equal_var=True)

 

Produktion

Ttest_indResult(statistic=0.830066093774641, pvalue=0.4076132965045395)

Kommentarer

Vi observerer, at brugen af ​​"sand" eller "falsk" for parameteren "equal-var" ikke ændrer t-testresultaterne så meget. Vi observerer også, at udskiftning af rækkefølgen af ​​prøveopstillingerne a_1 og b_1 giver en negativ t-testværdi, men ændrer ikke størrelsen af ​​t-testværdien som forventet. Da den beregnede p-værdi er langt større end tærskelværdien på 0.05, kan vi afvise nulhypotesen om, at forskellen mellem gennemsnittet af prøve 1 og prøve 2 er signifikant. Dette viser, at bægerbladlængderne for prøve 1 og prøve 2 blev trukket fra samme populationsdata.

a_1, a_2 = train_test_split(sep_length, test_size=0.4, random_state=0)
b_1, b_2 = train_test_split(sep_length, test_size=0.5, random_state=1)

 

Beregn stikprøvegennemsnittet og prøvevarianserne

mu1 = np.mean(a_1) mu2 = np.mean(b_1) np.std(a_1) np.std(b_1)

 

Implementer t-test

stats.ttest_ind(a_1, b_1, equal_var = False)

 

Produktion

stats.ttest_ind(a_1, b_1, equal_var = False)

Kommentarer

Vi observerer, at brug af prøver med ulige størrelse ikke ændrer t-statistikken og p-værdien signifikant. 
 

Udførelse af en T-test i Python

 

Sammenfattende har vi vist, hvordan en simpel t-test kunne implementeres ved hjælp af scipy-biblioteket i python.
 
 
Benjamin O. Tayo er fysiker, underviser i datavidenskab og forfatter, samt ejer af DataScienceHub. Tidligere underviste Benjamin i Engineering and Physics ved U. of Central Oklahoma, Grand Canyon U. og Pittsburgh State U.
 

Tidsstempel:

Mere fra KDnuggets