Р: Как совместить большой набор данных с комбинацией распределений? - PullRequest
5 голосов
/ 26 июня 2011

Чтобы согласовать набор данных действительных чисел (x) с одним распределением, мы можем использовать MASS следующим образом: гамма или распределение Т Стьюдента:

fitdistr(x, "gamma")

или

fitdistr(x2, "t")

Что если я считаю, что мой набор данных должен соответствовать сумме гамма- и t-распределений?

P(X) = Gamma(x) + t(x)

Могу ли я подобрать параметры смесей распределений вероятностей, используя подбор максимального правдоподобия в R?

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

Существуют аналитические оценки максимального правдоподобия для некоторых параметров, таких как среднее нормального распределения или коэффициент экспоненциального распределения . Для других параметров аналитическая оценка отсутствует, но вы можете использовать численный анализ , чтобы найти приемлемые оценки параметров.

Функция 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.

Не забывайте, что при смешении двух распределений у вас есть один дополнительный параметр, который определяет относительные веса между распределениями. Кроме того, будьте осторожны при настройке большого количества параметров одновременно. С большим количеством бесплатных параметров вам нужно беспокоиться о переоснащении .

2 голосов
/ 27 июня 2011

Попробуйте mixdist. Вот пример смеси трех распределений:

https://stats.stackexchange.com/questions/10062/which-r-package-to-use-to-calculate-component-parameters-for-a-mixture-model

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...