Menu
CoddyTech

P-Değerleri

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

p-value, karıştırmaları tek bir sayıya dönüştürür: her iki yönde de gerçek fark kadar büyük veya daha büyük olan sahte farkların oranı.

Yazı tipi çalışmasının 1000 karıştırılmış farkının histogramı. Her iki tarafta da 6.6 saniyede veya ötesinde kalan çubuklar kırmızıdır; 39 karıştırma vardır ve bir etiket p = 39 / 1000 = 0.039 yazar

Kodda, yazı tipi çalışması için:

real = sans.mean() - serif.mean()
rng = np.random.default_rng(4)
diffs = shuffled_diffs(serif, sans, 1000, rng)  # önceki dersin döngüsü
p_value = (np.abs(diffs) >= np.abs(real)).mean()
print(p_value)

Bu, 0.039 yazdırır. np.abs, -7'lik bir farkı 7 kadar büyük sayar: soru, yazı tiplerinin farklı olup olmadığıdır.

Genellikle 0.05 olan anlamlılık düzeyinin altında, bir yazı tipinin veya modelin kazancı için şans zayıf bir açıklamadır. Bu, kanıt değildir: 100 karıştırmanın 4’ünde yine de oldu.

challenge icon

Görev

Orta

Bir çiftlik çilekleri sabahları veya akşamları sular. Başlangıç kodu strawberries.csv dosyasını morning ve evening olarak ayırır, columns listesini oluşturur, level değerini okur ve shuffled_diffs işlevini tanımlar.

  1. Her sütun için gerçek farkı (akşam ortalaması eksi sabah ortalaması), karıştırılmış farkları (önce sabah) ve p-değerini hesapla.
  2. Aşağıdaki gibi sütun başına bir satır yazdır (fark 2 ondalık, p 3 ondalık): p değeri level değerinden düşük olduğunda differs yazdır.
  3. Farklı olanları say.

Başka bir çiftlik, 0.05 seviyesi:

berries: difference -5.4, p = 0.009, differs
weight_g: difference 0.2, p = 1.0, could be chance
sweetness_brix: difference 0.46, p = 0.022, differs
leaf_spots: difference 0.6, p = 0.397, could be chance
Columns that differ: 2 of 4

Kendin dene

import numpy as np
import pandas as pd


# Bir permütasyon testinin karıştırılmış farklarını döndürür (43. dersin döngüsü): sahte b ortalaması eksi sahte a ortalaması
def shuffled_diffs(a, b, shuffles, rng):
    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())
    return np.array(diffs)


beds = pd.read_csv("strawberries.csv")
morning = beds[beds["watering"] == "morning"]
evening = beds[beds["watering"] == "evening"]
columns = ["berries", "weight_g", "sweetness_brix", "leaf_spots"]
level = float(input())
# Aşağıdaki satırları değiştirmeyin
rng = np.random.default_rng(21)
shuffles = 1000

# 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