์๊ฐํ
๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ฐจํธ๋ก ํํํ๊ณ ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์๊ฐํ๋ matplotlib ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฉฐ, ์น ๋์๋ณด๋์ CLI ๋ชจ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฐจํธ ์ข ๋ฅ
| ์ฐจํธ | ์ฉ๋ | ๋ชจ๋ |
|---|---|---|
| Weibull ํ๋ฅ ํ๋กฏ | ๋ถํฌ ์ ํฉ๋ ํ์ธ | analysis/domain/ |
| ๊ณ ์ฅ๋ฅ ๊ณก์ (์์กฐ ๊ณก์ ) | ์๋ช ์ฃผ๊ธฐ๋ณ ๊ณ ์ฅ ํจํด | analysis/domain/ |
| ์ ๋ขฐ๋ ํจ์ ๊ทธ๋ํ | ์๊ฐ๋ณ ์์กด ํ๋ฅ | analysis/domain/ |
| CDF (๋์ ๊ณ ์ฅ ๋ถํฌ) | ์๊ฐ๋ณ ๋์ ๊ณ ์ฅ ํ๋ฅ | analysis/domain/ |
| ์๊ณ์ด ํ๋กฏ | ์์ ๋ฐ์ดํฐ ํธ๋ ๋ ํ์ธ | simulation/domain/ |
| ํํธ๋งต | ์จ๋/์ ๋ฅ ๋ถํฌ ์๊ฐํ | simulation/domain/ |
Weibull ํ๋ฅ ํ๋กฏ
Weibull ํ๋ฅ ์ง(Probability Paper) ์์ ๊ณ ์ฅ ๋ฐ์ดํฐ์ ์ ํฉ์ ์ ํ์ํฉ๋๋ค. X์ถ์ ์๊ฐ(log), Y์ถ์ ๋์ ๊ณ ์ฅ ํ๋ฅ (์ด์ค ๋ก๊ทธ ๋ณํ)์ ๋๋ค.
ํด์ ๋ฐฉ๋ฒ
- ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ์ง์ ์ ๊ฐ๊น์ธ์๋ก Weibull ๋ถํฌ ์ ํฉ๋๊ฐ ๋์
- ์ง์ ์ ๊ธฐ์ธ๊ธฐ๊ฐ ํ์ ๋ชจ์ ฮฒ์ ํด๋น
- ๊ณก์ ํํ๋ฅผ ๋ณด์ด๋ฉด ํผํฉ ๊ณ ์ฅ ๋ชจ๋(Mixed Mode)๋ฅผ ์์ฌ
CLI์์ ์์ฑ
python -m simulation.runner \
--input data/test_001.csv \
--analysis weibull \
--plot probability \
--output results/weibull_probability.png์ต์
| ์ต์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
--confidence-bounds | true | ์ ๋ขฐ ๊ตฌ๊ฐ ๋ฐด๋ ํ์ |
--point-style | scatter | ๋ฐ์ดํฐ ํฌ์ธํธ ์คํ์ผ (scatter, step) |
--dpi | 150 | ์ด๋ฏธ์ง ํด์๋ |
--figsize | 10,7 | ์ฐจํธ ํฌ๊ธฐ (์ธ์น) |
๊ณ ์ฅ๋ฅ ๊ณก์ (์์กฐ ๊ณก์ )
์ ์ฒด ์๋ช ์ฃผ๊ธฐ์ ๊ฑธ์น ๊ณ ์ฅ๋ฅ ๋ณํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ณก์ ์ ๋๋ค. Weibull ํด์ ๋ ํจ์ h(t) = (ฮฒ/ฮท) ร (t/ฮท)^(ฮฒ-1)์ ์๊ฐํํฉ๋๋ค.
์ธ ๊ตฌ๊ฐ์ ์๋ฏธ
| ๊ตฌ๊ฐ | ฮฒ ๋ฒ์ | ํน์ง | ๋ํ ์์ธ |
|---|---|---|---|
| ์ด๊ธฐ ๊ณ ์ฅ๊ธฐ | ฮฒ < 1 | ๊ณ ์ฅ๋ฅ ๊ฐ์ | ์ ์กฐ ๊ฒฐํจ, ์กฐ๋ฆฝ ๋ถ๋ |
| ์ฐ๋ฐ ๊ณ ์ฅ๊ธฐ | ฮฒ โ 1 | ๊ณ ์ฅ๋ฅ ์ผ์ | ์ธ๋ถ ์ถฉ๊ฒฉ, ๊ณผ๋ถํ |
| ๋ง๋ชจ ๊ณ ์ฅ๊ธฐ | ฮฒ > 1 | ๊ณ ์ฅ๋ฅ ์ฆ๊ฐ | ์ ์ฐ ์ดํ, ๋ฒ ์ด๋ง ๋ง๋ชจ |
์ค์ ๋ชจํฐ ์์คํ ์ ๋ณต์์ ๊ณ ์ฅ ๋ฉ์ปค๋์ฆ์ด ์ค์ฒฉ๋๋ฏ๋ก, ๊ฐ ๋ฉ์ปค๋์ฆ์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ณ Weibull ๊ณก์ ์ผ๋ก ํํํ ์ ์์ต๋๋ค.
python -m simulation.runner \
--input data/test_001.csv \
--analysis weibull \
--plot hazard \
--output results/bathtub_curve.png์ ๋ขฐ๋ ํจ์ ๊ทธ๋ํ
์๊ฐ์ ๋ฐ๋ฅธ ์ ๋ขฐ๋ R(t)๋ฅผ ๋ณด์ฌ์ค๋๋ค. R(t) = exp(-(t/ฮท)^ฮฒ) ๊ณก์ ์ผ๋ก, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ 1์์ 0์ผ๋ก ๊ฐ์ํฉ๋๋ค.
์ฃผ์ ์ฝ๊ธฐ ํฌ์ธํธ
- R(t) = 0.90 ์์ : B10 ์๋ช . ์ ์ฒด์ 10%๊ฐ ๊ณ ์ฅ
- R(t) = 0.50 ์์ : B50 ์๋ช (์ค์ ์๋ช )
- ๊ณก์ ์ ๊ธฐ์ธ๊ธฐ: ๊ธ๊ฒฉํ ์๋ก ๊ณ ์ฅ์ด ํน์ ์์ ์ ์ง์ค
๋ณต์ ๋ฐ์ดํฐ์ ๋น๊ต
์๋ก ๋ค๋ฅธ ์ํ ์กฐ๊ฑด์ ์ ๋ขฐ๋ ๊ณก์ ์ ํ๋์ ์ฐจํธ์ ๊ฒน์ณ ๋น๊ตํ ์ ์์ต๋๋ค.
python -m simulation.runner \
--input data/test_normal.csv data/test_accelerated.csv \
--analysis weibull \
--plot reliability \
--labels "์์จ ์ํ" "๊ฐ์ ์ํ" \
--output results/reliability_comparison.png์ ๋ขฐ ๊ตฌ๊ฐ ํ์
์ถ์ ๋ชจ์์ ๋ถํ์ค์ฑ์ ๋ฐ์ํ ์ ๋ขฐ ๊ตฌ๊ฐ ๋ฐด๋๋ฅผ ํจ๊ป ํ์ํฉ๋๋ค. ๊ธฐ๋ณธ ์ ๋ขฐ ์์ค์ 90%์ด๋ฉฐ, --confidence-level ์ต์
์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
python -m simulation.runner \
--input data/test_001.csv \
--analysis weibull \
--plot reliability \
--confidence-level 0.95 \
--output results/reliability_with_ci.png์๊ณ์ด ํ๋กฏ
์์ ์ธก์ ๋ฐ์ดํฐ์ ์๊ฐ ๋ณํ๋ฅผ ํ์ธํฉ๋๋ค. ์ ์ฒ๋ฆฌ ์ ํ ๋น๊ต, ์ด์์น ์๋ณ์ ํ์ฉ๋ฉ๋๋ค.
python -m simulation.runner \
--input data/test_001.csv \
--plot timeseries \
--columns speed,torque,temp_winding \
--output results/timeseries.png์ฌ๋ฌ ๋ฌผ๋ฆฌ๋์ ๋์ผ ์๊ฐ์ถ์ ์๋ธํ๋กฏ์ผ๋ก ๋ฐฐ์นํ์ฌ, ์๊ด๊ด๊ณ๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ ๋ด๋ณด๋ด๊ธฐ
์ด๋ฏธ์ง ํ์
| ํ์ | ์ต์ | ์ฉ๋ |
|---|---|---|
| PNG | --format png | ์น, ํ๋ ์ ํ ์ด์ (๊ธฐ๋ณธ๊ฐ) |
--format pdf | ๋ณด๊ณ ์ ์ฝ์ (๋ฒกํฐ) | |
| SVG | --format svg | ์น (ํ๋ ๊ฐ๋ฅ) |
# PDF๋ก ๋ด๋ณด๋ด๊ธฐ
python -m simulation.runner \
--input data/test_001.csv \
--analysis weibull \
--plot all \
--format pdf \
--output results/
# ์ ์ฒด ์ฐจํธ ์ผ๊ด ์์ฑ
python -m simulation.runner \
--input data/test_001.csv \
--analysis weibull \
--plot all \
--output results/--plot all ์ต์
์ Weibull ํ๋ฅ ํ๋กฏ, ๊ณ ์ฅ๋ฅ ๊ณก์ , ์ ๋ขฐ๋ ํจ์, CDF๋ฅผ ์ผ๊ด ์์ฑํฉ๋๋ค.
๋ณด๊ณ ์ ์์ฑ
Jinja2 ํ ํ๋ฆฟ ๊ธฐ๋ฐ์ผ๋ก ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ HTML ๋ณด๊ณ ์๋ฅผ ์๋ ์์ฑํ ์ ์์ต๋๋ค.
python -m simulation.runner \
--input data/test_001.csv \
--analysis weibull \
--report html \
--output results/report.html๋ณด๊ณ ์์๋ ๋ชจ์ ์ถ์ ๊ฒฐ๊ณผ, ๋ชจ๋ ์ฐจํธ, ๋ฐ์ดํฐ ์์ฝ ํต๊ณ๊ฐ ํฌํจ๋ฉ๋๋ค. ํ
ํ๋ฆฟ์ templates/ ๋๋ ํ ๋ฆฌ์์ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ด๋ณด๋ด๊ธฐ
์ฐจํธ์ ํจ๊ป ์์น ๋ฐ์ดํฐ๋ CSV/JSON์ผ๋ก ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
# CSV๋ก ์ ๋ขฐ๋ ํ
์ด๋ธ ๋ด๋ณด๋ด๊ธฐ
python -m simulation.runner \
--input data/test_001.csv \
--analysis weibull \
--export csv \
--output results/reliability_table.csv๋ด๋ณด๋ด๊ธฐ ๋ฐ์ดํฐ์๋ ์๊ฐ, ์ ๋ขฐ๋ R(t), ๋์ ๊ณ ์ฅ ํ๋ฅ F(t), ๊ณ ์ฅ๋ฅ h(t) ์ปฌ๋ผ์ด ํฌํจ๋ฉ๋๋ค.