In [1]:
#티스토리 윈도우 사이즈 맞추기
from IPython.core.display import display, HTML
display(HTML("<style>.container { width:90% !important; }</style>"))
In [28]:
import scipy as sp
import numpy as np
from scipy import stats
In [29]:
homerun_ball = [40.8, 41.2, 41.4, 41.6]
In [30]:
mu = np.mean(homerun_ball)
mu
Out[30]:
41.25
In [31]:
# 자유도 degree of freedom
df = len(homerun_ball) - 1
df
Out[31]:
3
In [34]:
# 분산
sigma = np.std(homerun_ball, ddof = 1)
sigma
Out[34]:
0.34156502553198803
In [35]:
# 표준오차
std_error = sigma / np.sqrt(len(homerun_ball))
std_error
Out[35]:
0.17078251276599402
In [38]:
# 신뢰구간(유의수준 )
inverval = stats.t.interval(alpha = 0.95, df = df, loc=mu, scale=std_error)
inverval
Out[38]:
(40.7064938232407, 41.7935061767593)
In [41]:
# t값의 아래 한계 지점
t_0025 = stats.t.ppf(q=0.025, df= df)
t_0025
Out[41]:
-3.1824463052842638
In [46]:
# t값의 위 한계 지점
t_0975 = stats.t.ppf(q=0.975, df= df)
t_0975
Out[46]:
3.182446305284263
In [47]:
# 평균값의 아래 한계 지점
mean_lower = mu + (t_0025 * std_error)
mean_lower
Out[47]:
40.7064938232407
In [48]:
# 평균값의 위 한계 지점
mean_upper = mu + (t_0975 * std_error)
mean_upper
Out[48]:
41.7935061767593
In [49]:
# 홈런볼 샘플 4봉지의 t값
written_weight = 41
t_value = (mu-written_weight) / std_error
t_value
Out[49]:
1.4638501094227936
1. 샘플 사이즈(n)가 커지면 어떻게 될까?¶
In [52]:
df_bigsmaple = (len(homerun_ball)*10)-1
std_error_bigsample = sigma / np.sqrt(len(homerun_ball)*10)
inverval_bigsample = stats.t.interval(alpha = 0.95, df = df_bigsmaple, loc=mu, scale=std_error_bigsample)
inverval_bigsample
Out[52]:
(41.14076220573351, 41.35923779426649)
표본(샘플)평균의 추정결과가 반복적으로 나와 신뢰할 수 있기 때문에 신뢰구간이 좁아졌습니다.
신뢰구간이 당초 40.70 ~ 41.79
편차가 큰 데이터 41.14 ~ 41.35 가 되었습니다.
In [53]:
# 홈런볼 샘플 40봉지의 t값
written_weight = 41
t_value_bigsample = (mu-written_weight) / std_error_bigsample
t_value_bigsample
Out[53]:
4.629100498862739
In [54]:
# t값의 아래 한계 지점
t_0025_b = stats.t.ppf(q=0.025, df= df_bigsmaple)
t_0025_b
Out[54]:
-2.0226909117347285
In [55]:
# t값의 위 한계 지점
t_0975_b = stats.t.ppf(q=0.975, df= df_bigsmaple)
t_0975_b
Out[55]:
2.022690911734728
귀무가설(H0) : 홈런볼의 중량은 표기된 41g 이다.(일반적 사실)
대립가설(H1) : 홈런볼의 중량은 표기된 41g 이 아니다.(새로운 사실)
t 값이 한계값의 범위 밖이므로 귀무가설을 기각.
따라서 "홈런볼의 실제중량은 표기된 중량 41g과 같지 않다." 라는 결론 도출(양측 검정 기준)
아마도 해태제과는 홈런볼의 중량이 41g 이 넘도록 표준중량을 41.14g ~ 41.35g으로 설정해놓았을 것입니다.
2. 데이터가 흩어진 정도(s)가 커지면 어떻게 될까?¶
샘플링된 데이터가 흩어져 있다는 말은 분산이 크다 또는 표준편차가 크다는 말과 같습니다.
데이터가 흩어져 있으면 자연히 특정 평균값을 신뢰하기 어렵습니다.
따라서 평균값을 신뢰하는 구간이 넓어지기 마련입니다.
In [58]:
df_bigsigma = len(homerun_ball)-1
std_error_bigsigma= sigma*10 / np.sqrt(len(homerun_ball))
inverval_bigsigma = stats.t.interval(alpha = 0.95, df = df_bigsigma, loc=mu, scale=std_error_bigsigma)
inverval_bigsigma
Out[58]:
(35.814938232407, 46.685061767593)
신뢰구간이 당초 40.70 ~ 41.79
편차가 큰 데이터 35.81 ~ 46.68 이 되었습니다.
3. 99% 신뢰수준으로 검정해보면 어떨까?¶
방금 전 유의수준 5% 라는 얘기는 신뢰수준 95% 였습니다.
쉽게 말하면 같은 시험을 100번 시행했을 때 5번 정도는 우연히 데이터가 한쪽으로 쏠려서 잘 못나올 확률이 있다는 뜻입니다.
이제 그 오류의 확률을 100번 중에 1번으로 줄여보겠습니다.
In [50]:
# 신뢰구간(유의수준 )
inverval = stats.t.interval(alpha = 0.99, df = df, loc=mu, scale=std_error)
inverval
Out[50]:
(40.25247483294933, 42.24752516705067)
신뢰구간이 당초 40.70 ~ 41.79
99% 신뢰수준으로 보았을 때 표본의 평균은 40.25 ~ 42.24 에 있을 것입니다.
In [ ]:
'빅데이터(Big Data) 이론과 코드 > 6. 통계지식' 카테고리의 다른 글
최대 우도 추정법(Maximum Likelihood Estimation, MLE) (0) | 2025.01.06 |
---|---|
예산과 전문가 없이 데이터로 인포그래픽을 만들기 (1) | 2024.06.25 |
마트 홈런볼과 편의점 홈런볼의 독립표본 t검정 (1) | 2023.01.18 |
홈런볼 슈링크플레이션과 소비자 물가지수 (2) | 2023.01.09 |
왜도(skewness)와 첨도(kurtosis) (0) | 2022.02.28 |