[์ค๋์ ํ์ต]
- streamlit ๋ผ์ด๋ธ ์ธ์ 2ํ์ฐจ
- ํต๊ณ ์ง๊ธ๊ฐ์ 2ํ์ฐจ
[ํ์ต๋ด์ฉ ์ ๋ฆฌ]
streamlit ๋ผ์ด๋ธ ์ธ์ 2ํ์ฐจ
์ฝ๋ ๋๊ฐ์ด ๋ฐ๋ผ์ณ๋ณด๊ธฐ (http://localhost:8501/#st-markdown)
ํต๊ณ
1. ํ๋ณธ ๊ตฌํ๊ธฐ
- np.random.normal(ํ๊ท , ํ์คํธ์ฐจ, ์์ฑํ ๋ฐ์ดํฐ ๊ฐ์)
: ์ค์ ํ ํ๊ท , ํ์คํธ์ฐจ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ท๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ ๋ฐ์ดํฐ๋ฅผ ์์ฑ.
- random.normal -> ์ํ ๊ฐ์์ ๋ง๋ ๋์๋ฅผ ์์ฑํจ. - np.random.choice(๋ชจ์ง๋จ, ์ํ ๊ฐ์)
: ๋ชจ์ง๋จ์์ ๋ช ๊ฐ๋ฅผ ๋๋ค์ผ๋ก ๊ณจ๋ผ ํ๋ณธ์ ๋ง๋ฆ.
import numpy as np
import matplotlib.pyplot as plt
# ๋ชจ์ง๋จ ์์ฑ
population = np.random.normal(170, 10, 1000)
# ํ๋ณธ ์ถ์ถ
sample = np.random.choice(population, 100)
# ์๊ฐํํ๊ธฐ
plt.hist(population, bins=50, alpha=0.5, label='population', color='blue')
plt.hist(sample, bins=50, alpha=0.5, label='sample', color='red')
plt.title('population and sample distribution')
plt.legend() # ๋ฒ๋ก ๋ง๋ค๊ธฐ->hist์ lebal์ด ์์ด์ผ ํจ.
plt.show()
2. ์ ๋ขฐ๊ตฌ๊ฐ ๊ตฌํ๊ธฐ
(์ฐธ๊ณ : ๋ชจํ์คํธ์ฐจ๋ฅผ ๋ชจ๋ฅผ ๋ t-๋ถํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ขฐ๊ตฌ๊ฐ ๊ตฌํจ.)
- stats.t.interval(alpha, df, loc, scale)
: t-๋ถํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ขฐ๊ตฌ๊ฐ์ ์ ๋๊ฐ(ํํ๊ฐ๊ณผ ์ํ๊ฐ)์ ๊ณ์ฐํด์ฃผ๋ ๊ธฐ๋ฅ- alpha: ์ ๋ขฐ์์ค
- df(degrees of freedom): ํ๋ณธ ์์์ ์ถ์ ๋งค๊ฐ๋ณ์ ์๋ฅผ ๋บ ๊ฐ. ๐ด
- loc(location): ์ ๋ขฐ๊ตฌ๊ฐ์ ์ค์ฌ์ด ๋๋ ์ง์ ์ผ๋ก, ์ฌ๊ธฐ์๋ ํ๋ณธํ๊ท . ๊ตฌ๊ฐ์ด ์ด ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ข์ฐ๋ก ํผ์ณ์ง.
- scale: ํ์ค์ค์ฐจ(Standard Error). ํ๋ณธํ๊ท ์ด ์ค์ ๋ชจํ๊ท ์์ ์ผ๋ง๋ ๋จ์ด์ ธ ์์์ง๋ฅผ ๋ํ๋ด๋ ์ฒ๋
์ํ์ ๊ฐ์๊ฐ ๋ง์์ง์๋ก ์ค์ฐจ๊ฐ ์ค์ด๋๋๋ฐ, ์ด๋ ์ํ ์์ ๋น๋กํด์ ์ค์ด๋๋ ๊ฒ ์๋๋ผ ์ํ ์์ ๋ฃจํธ ๊ฐ(
)์ ๋น๋กํด์ ์ฒ์ฒํ ์ค์ด๋ฆ. ์ด์ฉ๊ตฌ ์ ์ฉ๊ตฌ............
import scipy.stats as stats
# ํ๋ณธ ํ๊ท ๊ณผ ํ๋ณธ ํ์คํธ์ฐจ ๊ณ์ฐ
sample_mean = np.mean(sample)
sample_std = np.std(sample)
# 95% ์ ๋ขฐ๊ตฌ๊ฐ ๊ณ์ฐ
conf_interval = stats.t.interval(0.95, len(sample)-1, loc=sample_mean, scale=sample_std/np.sqrt(len(sample)))
print(f"ํ๋ณธ ํ๊ท : {sample_mean}")
print(f"95% ์ ๋ขฐ๊ตฌ๊ฐ: {conf_interval}")