[통계] 예제로 이해하는 신뢰구간

데이터셋

1
df.head()

샘플 생성

1
2
3
4
5
6
s1 = df.sample(n = 20, 
               random_state = 42)
s2 = df.sample(n = 200, 
               random_state = 42)
print(s1.head())
print(s2.head())

95% 신뢰구간

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from scipy.stats import t
import numpy as np

# 표본의 크기
n1 = len(s1['오존(ppm)'])
n2 = len(s2['오존(ppm)'])

# 자유도
dof1 = n1 - 1
dof2 = n2 - 1

# 표본의 평균
mean1 = np.mean(s1['오존(ppm)']) 
mean2 = np.mean(s2['오존(ppm)'])

# 표본의 표준편차
sample_std1 = np.std(s1['오존(ppm)'], ddof = 1)
sample_std2 = np.std(s2['오존(ppm)'], ddof = 1)

# 표준 오차
std_err1 = sample_std1 / n1 ** 0.5
std_err2 = sample_std2 / n2 ** 0.5

CI1 = t.interval(.95, dof1, loc = mean1, scale = std_err1) 
CI2 = t.interval(.95, dof2, loc = mean2, scale = std_err2)

print("s1의 95% 신뢰구간: ", CI1)
print("s2의 95% 신뢰구간: ", CI2)

시각화

1
2
3
4
5
6
7
8
9
10
11
12
13
import matplotlib.pyplot as plt
%matplotlib inline

pop_mean = df['오존(ppm)'].mean() # population : 모집단

x = ['s1', 's2']
y = [mean1, mean2]
err = [std_err1, std_err2] # 표준오차

plt.bar(x, y, yerr = err, capsize = 7, color = ['dodgerblue', 'orange'], width = 0.8);
plt.axhline(pop_mean, 0, 1, color='#4000c7', linestyle='--', linewidth='1');
plt.axhline(mean1, 0.15, 0.34, color='black', linestyle='-', linewidth='2');
plt.axhline(mean2, 0.65, 0.86, color='black', linestyle='-', linewidth='2');

0%