Выбор вероятностных распределений

Симуляции Монте-Карло на Python

Izzy Weber

Curriculum Manager, DataCamp

Метод максимального правдоподобия (MLE)

  • Используется для выбора вероятностного распределения по качеству подгонки
    • Оптимальным считается распределение с наибольшим правдоподобием для данных
  • .nnlf() из SciPy вычисляет отрицательную функцию правдоподобия
  • Чем меньше значение MLE, полученное с помощью .nnlf(), тем лучше подгонка
Симуляции Монте-Карло на Python

Выбор распределения для переменной age

sns.histplot(dia["age"])

Гистограмма распределения переменной age из набора данных о диабете

Симуляции Монте-Карло на Python

Распределения-кандидаты

distributions = [st.laplace, st.norm, st.expon]

PDF распределения Лапласа

Симуляции Монте-Карло на Python

Сравнение распределений-кандидатов

mles = []


for distribution in distributions: pars = distribution.fit(dia["age"])
mle = distribution.nnlf(pars, dia["age"])
mles.append(mle)
print(mles)
[1797.8467779878652, 1764.0693689033028, 1938.171599681118]
Симуляции Монте-Карло на Python

Сравнение распределений-кандидатов

for var in ["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"]:

distributions = [st.laplace, st.norm, st.expon] mles = []
for distribution in distributions: pars = distribution.fit(dia[var]) mle = distribution.nnlf(pars, dia[var]) mles.append(mle)
best_fit = sorted(zip(distributions, mles), key=lambda d: d[1])[0] print(f"Best fit reached using {best_fit[0].name}, \ MLE value: {best_fit[1]}, for variable {var}")
Симуляции Монте-Карло на Python

Результаты оценки

Best fit reached using norm, MLE value: 1764.0693689033028, for variable age
Best fit reached using norm, MLE value: 1283.356127017369, for variable bmi
Best fit reached using norm, MLE value: 1787.7746251622739, for variable bp
Best fit reached using norm, MLE value: 2193.1564373753627, for variable to
Best fit reached using norm, MLE value: 2136.0440476305284, for variable ldl
Best fit reached using norm, MLE value: 1758.1350738323013, for variable hdl
Best fit reached using norm, MLE value: 739.3762494786798, for variable tch
Best fit reached using norm, MLE value: 339.6620870566908, for variable ltg
Best fit reached using norm, MLE value: 1706.0467588930867, for variable glu
Симуляции Монте-Карло на Python

Давайте потренируемся!

Симуляции Монте-Карло на Python

Preparing Video For Download...