t-검정
Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 45번째.
컴퓨터가 등장하기 전, 통계에는 지름길이 있었습니다. 바로 t-test입니다. 공식 하나로 평균, 분산, 그룹 크기를 한 번에 p값으로 바꿉니다:
from scipy import stats
result = stats.ttest_ind(sans, serif)
print(np.round(result.pvalue, 3))
print(np.round(result.statistic, 2))글꼴 연구에서는 0.031과 -2.61이 출력됩니다. 1000번의 섞기에서는 0.039가 나왔습니다. 평소처럼 근접한 값입니다.
t 값은 표준 오차 단위로 나타낸 차이이며, 부호는 어느 그룹이 먼저 나왔는지만 나타냅니다. 이 공식은 데이터가 종 모양이라고 가정하므로, 작고 치우친 그룹의 경우 셔플 결과를 신뢰하세요.
또한 한 모델이 실제로 다른 모델보다 더 나은지 확인합니다.
챌린지
중급페인트 제조업체가 세 가지 마감재의 건조 시간을 측정했습니다. 시작 코드에서는 각 마감재의 시간을 times에 넣고, 세 개의 pairs를 나열하며, permutation_p(a, b)를 정의하고 level을 읽습니다.
- 무광과 새틴의 t-검정 p값을 셔플의 p값 옆에 출력하세요.
- 각 쌍을 테스트하고, 첫 번째 마감재를 먼저 두어 p값이 가장 작은 쌍을 출력하세요.
level보다 작은 p값을 가진 쌍의 수를 세세요.
p값은 소수점 셋째 자리까지 반올림하세요. 다른 제조업체의 경우, 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직접 해보기
import numpy as np
import pandas as pd
from scipy import stats
# 지난 두 강의에서 다룬 순열 검정: a와 b를 비교한 p값을 반환합니다
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())
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
머신러닝을 위한 통계의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러