Menu
CoddyTech

표본이 클수록 잡음은 줄어든다

Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 22번째.

더 큰 표본은 더 나은 추정치를 제공합니다. 그런데 얼마나 더 나을까요? 여기에는 장바구니 25개의 평균 1000개와 장바구니 100개의 평균 1000개가 있습니다:

장바구니당 품목 수의 표본 평균을 나타내는 두 종 모양 곡선으로, 둘 다 30 근처를 중심으로 합니다. 회색으로 표시된 장바구니 25개의 평균은 약 20에서 40까지 퍼져 있고, 파란색으로 표시된 장바구니 100개의 평균은 폭이 절반인 종 모양을 이룹니다

sample_means는 각 산포도를 측정합니다. 표준 오차인 std / np.sqrt(n)는 시뮬레이션 없이 산포도를 예측합니다:

for n in [25, 100]:
    spread = sample_means(baskets, n, 1000).std()
    print(n, np.round(spread, 2), np.round(baskets.std() / np.sqrt(n), 2))

다음과 같이 출력됩니다:

25 3.43 3.45
100 1.72 1.72

데이터는 4배, 노이즈는 절반: 제곱근이 작용한 결과입니다. 400개의 예제로 테스트한 모델의 점수는 100개의 예제로 테스트했을 때보다 두 배 더 정밀합니다.

challenge icon

챌린지

중급

bags에는 제분소 밀가루 자루 5000개의 무게가 그램 단위로 들어 있습니다. 품질 관리 담당자는 매시간 표본의 무게를 재며, 프로그램은 허용되는 표준 오차를 입력받습니다.

  1. 표준 오차 bags.std() / np.sqrt(n)가 해당 값 이하가 되는 가장 작은 n을 찾으세요. 1에서 시작해 너무 큰 동안 1씩 더하세요.
  2. 확인하세요. sample_means에서 표본 평균 300개의 표준 편차를 구하세요.
  3. 아래와 같이 소수점 이하 2자리까지 출력하세요.

다른 제분소의 경우와 2.5를 입력했을 때:

Bags to weigh: 24
Standard error: 2.46 g
Simulated spread: 2.37 g

직접 해보기

import numpy as np

target = float(input())

# 아래 줄은 변경하지 마세요: 각 밀가루 봉지의 무게(그램)
rng = np.random.default_rng(22)
bags = np.round(rng.normal(500, 8, size=5000), 1)


# Sample Means Vary에서 작성한 함수: count개 표본의 평균
def sample_means(data, size, count):
    means = []
    for i in range(count):
        sample = rng.choice(data, size=size, replace=False)
        means.append(sample.mean())
    return np.array(means)


# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

머신러닝을 위한 통계의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러