Использование MATLAB chi2gof с нестандартными пользовательскими PDF-файлами

Я хотел бы использовать MATLAB chi2gof для выполнения теста на соответствие хи-квадрат. Моя проблема в том, что мое предполагаемое (то есть теоретическое) распределение не является одним из стандартных встроенных распределений вероятностей в MATLAB. Конкретная форма моего желаемого дистрибутива:

p = x^a*exp(-b*x^2)

где a и b — константы. Должен ли быть способ использовать chi2gof для произвольных PDF-файлов? Я сделал исчерпывающий поиск в Google, но пришел с пустыми руками.


person user6006085    schedule 02.03.2016    source источник
comment
Вы можете использовать выборку с обратным преобразованием для создания чисел из произвольных распределений.   -  person jadhachem    schedule 02.03.2016
comment
Действительно ли проблема в том, что вы не знаете, как найти CDF для вашего дистрибутива (chi2gof имеет возможность выбрать CDF произвольного гипотетического дистрибутива)? Кстати, как называется ваш дистрибутив? @jadhachem: я не понимаю вашего комментария. Я не думаю, что проблема заключается не в генерации случайных чисел из распределения, а в том, как проверить соответствие существующих данных конкретному распределению.   -  person horchler    schedule 02.03.2016
comment
@horchler Плохо, наверное, я неправильно понял вопрос.   -  person jadhachem    schedule 02.03.2016
comment
@horchler: у меня есть аналитическое выражение для CDF, включающее неполную гамма-функцию. Моя проблема заключается в том, как закодировать проблему. Предположим, например, что мой CDF был задан как F(x)=a*exp(-bx-cx^2) [b,c,›0]. (Предположим, что a, b, c — известные константы.) Как будет выглядеть вызов chi2gof? Я знаю, что это потребует использования дескриптора функции, но я не уверен, как его закодировать.   -  person user6006085    schedule 02.03.2016


Ответы (1)


Вы можете указать дескриптор функции, принимает один аргумент для chi2gof следующим образом:

a = ...
b = ...
c = ...
F = @(x)a*exp(-b*x-c*x.^2); % Technically this is an anonymous function
[H,P,STATS] = chi2gof(data,'cdf',F)

Или в особых случаях:

a = ...
b = ...
c = ...
F = @(x,a,b,c)a*exp(-b*x-c*x.^2);
[H,P,STATS] = chi2gof(data,'cdf',{F,a,b,c})

последняя строка которого эквивалентна

[H,P,STATS] = chi2gof(data,'cdf',@(x)F(x,a,b,c))

Если параметры a, b и c оцениваются (например, с использованием некоторого процесса подбора), то вы должны указать количество оцениваемых параметров chi2gof. В таком случае:

[H,P, STATS] = chi2gof(data,'cdf',F,'nparams',3)

Прочтите документацию, чтобы узнать о других параметрах.

person horchler    schedule 02.03.2016
comment
Большое спасибо! Я буду подражать вашему коду с моим настоящим F(x). В качестве боковой панели меня также смутила разница между дескриптором функции и анонимной функцией, но ваш комментарий разрешает этот запрос. - person user6006085; 02.03.2016