Существуют аналитические оценки максимального правдоподобия для некоторых параметров, таких как среднее нормального распределения или коэффициент экспоненциального распределения . Для других параметров аналитическая оценка отсутствует, но вы можете использовать численный анализ , чтобы найти приемлемые оценки параметров.
Функция fitdistr () в R использует числовую оптимизацию функции логарифмического правдоподобия путем вызова функции optim () . Если вы считаете, что ваши данные представляют собой смесь гамма-распределения и t, просто создайте функцию правдоподобия, которая описывает такую смесь. Затем передайте эти значения параметров в optim () для оптимизации. Вот пример использования этого подхода для подгонки дистрибутива:
library( MASS )
vals = rnorm( n = 10000, mean = 0, sd = 1 )
print( summary(x_vals) )
ll_func = function(params) {
log_probs = log( dnorm( x = vals, mean = params[1], sd = params[2] ))
tot = sum(log_probs)
return(-1 * tot)
}
params = c( 0.5, 10 )
print( ll_func(params) )
res = optim( params, ll_func )
print( res$par )
Запуск этой программы в R приводит к выводу:
[1] "mean: 0.0223766157516646"
[1] "sd: 0.991566611447471"
Это довольно близко к начальным значениям среднего = 0 и SD = 1.
Не забывайте, что при смешении двух распределений у вас есть один дополнительный параметр, который определяет относительные веса между распределениями. Кроме того, будьте осторожны при настройке большого количества параметров одновременно. С большим количеством бесплатных параметров вам нужно беспокоиться о переоснащении .