Machine Learning/이론

Hypothesis and Inference, p-value

파송송 2022. 8. 11. 14:37
728x90

Hypothesis

  • 귀무 가설 (Null Hypothesis) :   가설 검정에서 기본 입장
  • 대립 가설 (Alternative alt Hypothesis) : 귀무 가설과 대비되는 입장

가설을 세우고 추론해보자!

귀무 가설 : 1 ~ 10 숫자 카드를 랜덤하게 뽑았을 때 5가 나올 확률은 \( \frac{1}{10}  \)이다.

대립 가설 : 1 ~ 10 숫자 카드를 랜덤하게 뽑았을 때 5가 나올 확률은 \( \frac{1}{10}  \)가 아니다.

 

베르누이 : 2가지의 결과값만 갖는 것

1 ~ 10 숫자 카드 중에서 5를 뽑을 때 1이라고 한다면 1000번 실행하였을 때 5가 나올 확률

import random

def bernoulli_trial(p) :
    return 1 if random.randint(1,10) == p else 0

def binomial(n, p) -> int:
    return sum(bernoulli_trial(p) for _ in range(n))
print(binomial(1000, 5))

 


from collections import Counter
import matplotlib.pyplot as plt
import math

# cdf
def normal_cdf(x, mu, sigma):
    return (1 + math.erf((x - mu) / math.sqrt(2) / sigma)) / 2
    

def binomial_histogram(p, n, num_points):
    data = [binomial(n, p) for _ in range(num_points)]
    
    histogram = Counter(data)
    plt.bar([x - 0.4 for x in histogram.keys()],
            [v / num_points for v in histogram.values()],
            0.8,
            color='0.75')
    
    
    mu = sum(data)/len(data)
    sigma_sum = 0
    for da in data:
        sigma_sum += (da-mu)**2
    sigma = sigma_sum / len(data)
    sigma = math.sqrt(sigma)
    
    xs = range(min(data), max(data) + 1)
    ys = [normal_cdf(i + 0.5, mu, sigma) -
          normal_cdf(i - 0.5, mu, sigma) for i in xs]
    plt.plot(xs, ys)
    plt.title("Binomial Distribution vs. Normal Approximation")
    plt.show()


binomial_histogram(5, 1000, 1000)

 

(1 ~ 10 숫자 카드에서 5뽑기를 1000번 진행하였을 때 5는 100번 정도 나왔다)

위의 행위를 1000번 반복한다면

평균은 100이고 분산은 9.486이 나온다

import random
import numpy as np


def normal_approximation_to_binomial(n, p):
    mu = p * n
    sigma = math.sqrt(p * (1 - p) * n)
    return mu, sigma
    
# call function
# (500.0, 15.811388300841896)
normal_approximation_to_binomial(1000, 0.1)

 

68%의 이항 확률 변수는 100 \( \pm \) 9.486

95%의 이항 확률 변수는 100 \( \pm \) 18.912

 

 

 

 

 

 

 

 

 

 

 

 

 


가설 검증

제 1종 오류

  • 귀무 가설이 참인데 기각할 경우

제 2종 오류

  • 귀무 가설이 거짓인데 기각하지 않은 경우

P-value 

  • 귀무 가설이 옳다고 가정하고 실제 관측된 값보다 극단적인 값이 나올 확률이다. 우연을 평가함.
  •  
  • 실험에서 평균 98에 표준편차 9가 나왔다. 여기서 나온 평균 98이 모평균이 될 수 있을까?
    • 가설 검증은 전체 데이터에서 일부만을 추출하여 평균을 내는 것이기 때문에 추출 데이터의 평균이 전체 데이터의 평균에서 멀어질 수 있다.
    • 모평균이 100이라는 가정하에 추출 데이터의 평균이 100에서 멀어지면 모평균이 100이 아닐지도 모른다고 생각하게 됨

 

p-value 핑크색 부분

모집단 분포에서 임의로 값을 선택할 때, 핑크색 부분을 가져올 확률

 

유의 수준(alpha) = 0.05, 5%

노란 부분 - p-value

파란 부분 - alpha

 

p-value > alpha

90은 모집단 분포의 일부이다.

728x90