Использование fminsearch для подбора дистрибутива

Предположим, у меня есть набор одномерных данных, хранящихся в массиве errors.

Я хотел бы подогнать PDF к моему наблюдаемому распределению данных.

Мой PDF определен в функции poissvmwalkpdf, строка определения которой выглядит так:

function p = poissvmwalkpdf(theta, mu, kappa, xi)

Здесь theta — это ошибка (переменная, для которой значения в errors являются экземплярами), а mu, kappa и xi — это параметры PDF, для которых я хочу найти наилучшее соответствие, используя оценку максимального правдоподобия. Эта функция возвращает плотность вероятности при заданном значении theta.

Учитывая все это, как мне использовать fminsearch, чтобы найти значения для mu, kappa и xi, которые лучше всего соответствуют моему наблюдаемому errors? В документации fminsearch это не проясняется. Ни один из примеров в документации не является примерами распределения.

Примечание. В учебнике здесь четко описывается что такое подгонка распределения (в отличие от подгонки кривой), но в приведенном примере не используется fminsearch.


person dbliss    schedule 11.03.2016    source источник
comment
Вопрос с подвохом: почему бы не использовать то, что в учебнике используется для настройки распределения? :)   -  person Andras Deak    schedule 12.03.2016
comment
Для таких данных нет уникальной подгонки. Должен быть сделан выбор в том, как выполняется подбор, и общие методы подбора не учитывают, что предполагается, что данные взяты из известного распределения. Наиболее распространенные методы подгонки распределения основаны на MLE (и сведении к минимуму вероятности отрицательного логарифма). Вы могли использовать fminsearch, и вы могли бы получить что-то приличное, но, вероятно, он не вернет статистически наиболее вероятные параметры.   -  person horchler    schedule 12.03.2016
comment
@horchler, вы можете интерпретировать мой вопрос так: как бы я использовал fminsearch для получения соответствия MLE между моим PDF и моими данными? вы, кажется, утверждаете, что fminsearch не может этого сделать, но это общая функция минимизации. это может свести к минимуму отрицательную логарифмическую вероятность.   -  person dbliss    schedule 12.03.2016


Ответы (1)


Вот минимальный пример использования fminsearch для получения оценок максимального правдоподобия (согласно запросу в комментариях):

function mle_fit_minimal

n       = 100;
% for reproducibility
rng(333)
% generate dummy data
errors  = normrnd(0,1,n,1);

par0    = [1, 1];
[par_hat, nll] = fminsearch(@nloglike, par0)

% custom pdf
    function p = my_pdf(data, par)
        mu      = par(1);
        sigma   = par(2);
        p       = normpdf(data, mu, sigma);
    end

% negative loglikelihood function -- note that the parameters must be passed in a 
% single argument (here called par).
    function nll = nloglike(par)
        nll     = -sum(log(my_pdf(errors, par)));
    end
end

После формулировки функции правдоподобия (или отрицательного логарифмического правдоподобия) это просто простая оптимизация.

введите здесь описание изображения

person rozsasarpi    schedule 12.03.2016
comment
именно то, что я искал, спасибо. пользователи с тем же вопросом, что и у меня, могут также захотеть проконсультироваться с этот блог сообщение. - person dbliss; 13.03.2016