์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„(25.12.01~)

์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„_๋ณธ์บ ํ”„_data11๊ธฐ ๊น€์„ ์˜_TIL_Day 72

0๏ธโƒฃ 2026. 4. 7. 09:36

[์˜ค๋Š˜์˜ ํ•™์Šต]

  • 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}")