Nilai-p
Termasuk bagian Statistik untuk ML dalam perjalanan Machine Learning di Coddy. Pelajaran 44 dari 64.
p-value mengubah hasil pengacakan menjadi satu angka: proporsi selisih semu yang setidaknya sebesar selisih sebenarnya, di kedua sisi.
Dalam kode, untuk studi font:
real = sans.mean() - serif.mean()
rng = np.random.default_rng(4)
diffs = shuffled_diffs(serif, sans, 1000, rng) # perulangan dari pelajaran sebelumnya
p_value = (np.abs(diffs) >= np.abs(real)).mean()
print(p_value)Ini mencetak 0.039. np.abs menghitung selisih -7 sama besarnya dengan 7: pertanyaannya adalah apakah font berbeda sama sekali.
Di bawah tingkat signifikansi, yang sering kali 0.05, peluang bukan penjelasan yang meyakinkan untuk peningkatan pada font atau model. Ini bukan bukti: 4 dari 100 pengocokan tetap menghasilkan hal itu.
Tantangan
SedangSebuah lahan pertanian menyiram stroberi pada pagi atau sore hari. Kode awal memisahkan strawberries.csv menjadi morning dan evening, mencantumkan columns, membaca level, lalu mendefinisikan shuffled_diffs.
- Untuk setiap kolom, hitung selisih sebenarnya (rata-rata sore dikurangi rata-rata pagi), selisih hasil pengacakan (pagi lebih dulu), dan nilai-p.
- Cetak satu baris untuk setiap kolom seperti di bawah ini (selisih 2 angka desimal, p 3 angka):
differssaat p lebih kecil darilevel. - Hitung jumlah kolom yang memiliki selisih.
Lahan pertanian lain, dengan level 0.05:
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 4Coba sendiri
import numpy as np
import pandas as pd
# Mengembalikan selisih yang diacak dari uji permutasi (perulangan pada pelajaran 43): rata-rata b semu dikurangi rata-rata a semu
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())
# Jangan ubah baris-baris di bawah ini
rng = np.random.default_rng(21)
shuffles = 1000
# Tulis kodemu di bawah ini
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Statistik untuk ML
1Pusat dan Sebaran
Rata-rata dan MedianPersentil dan KuartilVarians dan Simpangan BakuSampel atau Populasi?Nilai yang Paling Sering MunculRangkuman: Waktu Pengiriman4Sampel dan Populasi
Populasi dan SampelRata-rata Sampel BervariasiDistribusi SamplingSampel Lebih Besar, Lebih Sedikit GangguanRangkuman: Jajak Pendapat di Sebuah Kota2Distribusi
Histogram KepadatanBentuk DataKurva NormalAturan 68-95-99,7Skor-ZRekap: Daya Tahan Baterai5Nilai Pencilan
Diagram KotakAturan IQRAturan Z-ScoreMenangani Nilai PencilanRangkuman: Gangguan Sensor8Membandingkan Kelompok
Diagram Kotak per KelompokPerbedaan Rata-rataMungkinkah Ini Kebetulan?Nilai-pUji-tRangkuman: Uji A/B3Probabilitas melalui Simulasi
Probabilitas sebagai FrekuensiHukum Bilangan BesarJumlah Mata DaduNilai HarapanProbabilitas BersyaratRangkuman: Peluang di Lapak Dadu6Hubungan
Membaca Diagram PencarKorelasiMatriks KorelasiPeta Panas KorelasiKorelasi Bukan Sebab-AkibatRangkuman: Es Krim dan MatahariLatihan sendiri: Compiler Python online