Матлаб |. Расчет параметров гамма-расставания на основе среднего и вероятностного интервала

StackOverflow https://stackoverflow.com/questions/3690361

Вопрос

У меня есть система из 2 уравнений в 2 неизвестных, которые я хочу решить, используя MatLab, но не знаю точно, как программировать. Мне дали некоторую информацию о гамма-распределении (среднее значение 1,86, 90% от 1,61 до 2,11) и в конечном итоге хотят получить среднее и дисперсию. Я знаю, что я могу использовать нормальное приближение, но я бы предпочел решить для A и B, формы и параметры гамма-распределения гамма и находить среднее и дисперсию таким образом. В PSEUDO-MATLAB-коде я хотел бы решить это:

gamcdf(2.11, A, B) - gamcdf(1.61, A, B) = 0.90;
A*B = 1.86;

Как бы вы пошли о решении этого? У меня есть символический Math Toolbox, если это помогает.

Это было полезно?

Решение

Среднее значение a * b. Так вы можете решить, возможно, а с точки зрения среднего (му) и B?

A = mu/B

Конечно, это не хорошо, если вы не знали B. Или это?

Посмотрите на ваше первое выражение. Вы можете заменить?

gamcdf(2.11, mu/B, B) - gamcdf(1.61, mu/B, B) = 0.90

Это принесет вам ближе? Возможно. Не будет полезного символического решения, за исключением неполной самой функции гамма. Как вы решаете одно уравнение численно одним неизвестным в Matlab? Используйте FZERO.

Конечно, FZERO ищет нулевое значение. Но вычитая 0,90, это разрешено.

Можем ли мы определить функцию, которую FZERO может использовать? Используйте функциональную ручку.

>> mu = 1.86;
>> gamfun = @(B) gamcdf(2.11, mu/B, B) - gamcdf(1.61, mu/B, B) - 0.90;

Так что попробуй. Прежде чем мы сделаем это, я всегда рекомендую построить вещи.

>> ezplot(gamfun)

Хм. Этот сюжет предлагает, чтобы было трудно найти нулю вашей функции. Если вы попробуете это, вы найдете, что здесь необходимо хорошие стартовые значения для FZERO.

Извините за мою первую попытку. Лучшие стартовые значения для FZERO, плюс еще несколько построений делает гамма-распределение, которое дает желаемую форму.

>> B = fzero(gamfun,[.0000001,.1])
B =
        0.0124760672290871
>> A = mu/B
A =
          149.085442218805
>> ezplot(@(x) gampdf(x,A,B))

На самом деле это очень «нормальная», то есть гауссовая, глядя изгиба.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top