Menu
CoddyTech

t-Testi

Coddy'nin Machine Learning Journey'sinin Makine Öğrenimi için İstatistik bölümünün bir parçası. Ders 45 / 64.

Bilgisayarlardan önce istatistikte bir kestirme yol vardı: t-testi. Bir formül, ortalamaları, yayılımları ve grup büyüklüklerini tek seferde bir p-değerine dönüştürür:

from scipy import stats

result = stats.ttest_ind(sans, serif)
print(np.round(result.pvalue, 3))
print(np.round(result.statistic, 2))

Yazı tipi çalışması için bu, 0.031 ve -2.61 değerlerini yazdırır. 1000 karıştırma 0.039 verdi: her zamanki gibi yakın.

Yazı tipi çalışmasının 1000 karıştırılmış farkını soluk bir histogram olarak gösteren; t-testinin çan biçimli eğrisinin histogramın üzerine oturduğu ve gerçek -6.6 farkında kesikli kırmızı bir çizginin bulunduğu grafik. Açıklama, karıştırmalar için p = 0.039 ve formül için 0.031 değerlerini veriyor

t değeri, standart hatalar cinsinden farkı gösterir; işareti yalnızca hangi grubun önce geldiğini belirtir. Formül, çan eğrisi şeklinde dağılan verileri varsayar; bu nedenle, çarpık dağılıma sahip küçük gruplarda permütasyonlara güven.

Ayrıca bir modelin diğerini gerçekten geçip geçmediğini de kontrol eder.

challenge icon

Görev

Orta

Bir boya üreticisi üç boya türünün kuruma süresini ölçtü. Başlangıç kodu her türün dakika değerlerini times içine koyar, üç pairs listeler, permutation_p(a, b) tanımlar ve level değerini okur.

  1. Mat ile saten için t-testinin p-değerini, permütasyonların p-değerinin yanında yazdır.
  2. Her çifti, ilk boya türü önce gelecek şekilde test et ve p-değeri en küçük olanı yazdır.
  3. level değerinin altındaki çiftleri say.

p-değerlerini 3 ondalık basamağa yuvarla. Başka bir üretici, level 0.05:

matte vs satin: t-test 0.012, simulation 0.023
Clearest difference: satin vs gloss (p = 0.0)
Pairs that differ: 3 of 3

Kendin dene

import numpy as np
import pandas as pd
from scipy import stats


# Son iki derste ele alınan permütasyon testi: a ile b karşılaştırması için p-değerini döndürür
def permutation_p(a, b, shuffles=1000, seed=0):
    rng = np.random.default_rng(seed)
    pooled = np.concatenate([a, b])
    diffs = []
    for i in range(shuffles):
        shuffled = rng.permutation(pooled)
        diffs.append(shuffled[len(a):].mean() - shuffled[:len(a)].mean())
    real = b.mean() - a.mean()
    return (np.abs(np.array(diffs)) >= np.abs(real)).mean()


paint = pd.read_csv("paint.csv")
times = {
    "matte": paint[paint["finish"] == "matte"]["minutes"],
    "satin": paint[paint["finish"] == "satin"]["minutes"],
    "gloss": paint[paint["finish"] == "gloss"]["minutes"],
}
pairs = [("matte", "satin"), ("matte", "gloss"), ("satin", "gloss")]
level = float(input())

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Makine Öğrenimi için İstatistik bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi