Как я могу (численно) приблизительные значения для бета-распределения с большой альфа и бета

11

Существует ли численно устойчивый способ расчета значений бета-распределения для большого целого числа альфа, бета (например, альфа, бета> 1000000)?

На самом деле, мне нужен только 99% доверительный интервал для режима, если это как-то облегчает проблему.

Добавить : Извините, мой вопрос был не так четко сформулирован, как я думал. Я хочу сделать следующее: у меня есть машина, которая проверяет продукты на ленточном конвейере. Некоторая часть этих продуктов отбраковывается машиной. Теперь, если оператор машины меняет какую-либо настройку проверки, я хочу показать ему / ей предполагаемый уровень брака и некоторые подсказки о том, насколько надежна текущая оценка.

Поэтому я подумал, что я рассматриваю фактическую частоту отклонений как случайную величину X и вычисляю распределение вероятностей для этой случайной величины на основе количества отклоненных объектов N и принятых объектов M. Если я предполагаю равномерное предварительное распределение для X, это бета-распределение в зависимости от N и M. Я могу либо отобразить это распределение непосредственно для пользователя, либо найти интервал [l, r], чтобы фактическая частота брака находилась в этом интервале с p> = 0,99 (используя терминологию шаббычефа), и отобразить это интервал. Для малых M, N (т. Е. Сразу после изменения параметра) я могу рассчитать распределение напрямую и приблизить интервал [l, r]. Но для больших M, N этот наивный подход приводит к ошибкам недостаточного значения, поскольку x ^ N * (1-x) ^ M слишком мало, чтобы его можно было представить как число с плавающей запятой двойной точности.

Я полагаю, что лучше всего использовать мое наивное бета-распределение для малых M, N и перейти к нормальному распределению с тем же средним и дисперсией, как только M, N превысит некоторый порог. Имеет ли это смысл?

nikie
источник
1
Вы хотите знать математику или просто решение кода в R или что-то подобное?
Джон
Мне нужно реализовать это в C #, чтобы математика была бы хорошей. Пример кода тоже подойдет, если он не использует встроенную функцию R / Matlab / Mathematica, которую я не могу перевести на C #.
nikie
PDF, CDF или обратный CDF?
JM не является статистиком
Если вы не настаиваете на бета-версии, вы можете использовать дистрибутив Kumaraswamy, который очень похож и имеет гораздо более простую алгебраическую форму: en.wikipedia.org/wiki/Kumaraswamy_distribution
Tim

Ответы:

13

Нормальное приближение работает очень хорошо, особенно в хвостах. Используйте среднее значение и дисперсию . Например, абсолютная относительная ошибка в вероятности хвоста в сложной ситуации (где может иметь место асимметрия), такой как достигает пика около и составляет менее когда вы более 1 SD от среднего. (Это не потому, что бета очень велика: при абсолютные относительные ошибки ограниченыα βα/(α+β) α=106,β=1080,000260,00006α=β=1060,0000001αβ(α+β)2(1+α+β)αзнак равно106,βзнак равно1080,000260,00006αзнак равноβзнак равно1060.0000001.) Таким образом, это приближение отлично подходит практически для любых целей, включающих интервалы 99%.

В свете правок этого вопроса, обратите внимание, что бета-интегралы не вычисляются путем фактической интеграции подынтегральной функции: конечно, вы получите недочеты (хотя они на самом деле не имеют значения, поскольку они не вносят заметного вклада в интеграл) , Существует множество способов вычисления интеграла или его аппроксимации, как описано в Johnson & Kotz (Распределения в статистике). Онлайн-калькулятор можно найти по адресу http://www.danielsoper.com/statcalc/calc37.aspx . Вам действительно нужно обратное значение этого интеграла. Некоторые методы вычисления обратного описаны на сайте Mathematica по адресу http://functions.wolfram.com/GammaBetaErf/InverseBetaRegularized/., Код предоставлен в Числовых Рецептах (www.nr.com). Очень хороший онлайн калькулятор - это сайт Wolfram Alpha (www.wolframalpha.com): введите inverse beta regularized (.005, 1000000, 1000001)для левой конечной точки и inverse beta regularized (.995, 1000000, 1000001)для правой конечной точки ( , интервал 99%).αзнак равно1000000,βзнак равно1000001

Whuber
источник
Отлично! У меня на столе все время была книга NR, но я никогда не думал, что буду искать там. Большое спасибо.
nikie
3

Быстрый графический эксперимент показывает, что бета-распределение очень похоже на нормальное распределение, когда альфа и бета очень велики. Погуглив «нормальный бета-предел распространения», я нашел http://nrich.maths.org/discus/messages/117730/143065.html?1200700623 , который дает «доказательство» ручной работы.

Страница википедии о бета-распределении дает среднее значение, режим (v близок к среднему значению для больших альфа и бета) и дисперсию, поэтому вы можете использовать нормальное распределение с тем же средним и дисперсией, чтобы получить приближение. Является ли это достаточно хорошим приближением для ваших целей, зависит от ваших целей.

одна остановка
источник
Глупый вопрос: как вы провели этот графический эксперимент? Я попытался построить распределение для альфа / бета около 100, но ничего не увидел из-за ошибок недостаточного количества.
nikie
Вы не хотите построить интеграл: вы хотите построить интеграл. Тем не менее, вы можете получить интегральную во многих отношениях. Один из них - ввести «участок D (бета (х, 1000000, 2000000), х) / бета (1, 1000000, 2000000) с 0,3325 до 0,334» на сайте Wolfram Alpha. Сам интеграл виден с "Бета графика (x, 1000000, 2000000) / бета (1, 1000000, 2000000) от 0,3325 до 0,334".
whuber
Я подготовил в Stata подынтегральное выражение, то есть pdf бета-версии, - оно имеет встроенную функцию для pdf. Для больших альфа и бета нужно ограничить диапазон графика, чтобы увидеть, что он близок к нормальному. Если бы я сам программировал это, я вычислил бы его логарифм, а затем возвеличил в конце. Это должно помочь с проблемами недостаточного заполнения. Бета-функция в знаменателе определяется в терминах гамма-функций, эквивалентных факториалам для целого числа альфа и бета, и многие пакеты / библиотеки включают lngamma () или lnfactorial () вместо /, а также функции gamma () и factorial ().
остановка
2

[L,р]Lр[L,р]α,β Lр как отдельные цифры, так что этот маршрут может быть достаточно хорошим.

shabbychef
источник
Когда альфа и бета не слишком далеко друг от друга (то есть альфа / бета ограничены сверху и снизу), SD Бета [альфа, бета] пропорциональна 1 / Sqrt (альфа). Например, для alpha = beta = 10 ^ 6 SD очень близка к 1 / Sqrt (8) / 1000. Я думаю, что не будет проблем с представлением l и r, даже если вы используете только плавающие с одинарной точностью ,
whuber
106
1
Да, это сумасшедший номер для бета-приложения. Кстати, эти неравенства не будут давать хороших интервалов вообще, потому что они являются крайностями во всех распределениях (удовлетворяющих определенным ограничениям).
whuber
@whuber: Вы правы, они сумасшедшие числа. С моим наивным алгоритмом «нормальные» числа были просты и работали хорошо, но я не мог себе представить, как рассчитать его для «сумасшедших» параметров. Отсюда и вопрос.
nikie
2
Хорошо, вы правы: как только альфа + бета превысит 10 ^ 30 или около того, у вас будут трудности с двойными числами :-). (Но если вы представляете l и r как отличия от среднего значения альфа / (альфа + бета), все будет в порядке, пока альфа или бета не превысят примерно 10 ^ 303.)
whuber
1

ппLограмм(п/(1-п))мяN(α,β)>100

Например

f <- function(n, a, b) {
    p <- rbeta(n, a, b)
    lor <- log(p/(1-p))
    ks.test(lor, 'pnorm', mean(lor), sd(lor))$p.value
}
summary(replicate(50, f(10000, 100, 1000000)))

как правило, производит вывод, как

резюме (копия (50, f (10000, 100, 1000000))) Мин. 1 кв. Медиана Среднее 3 кв. Максимум. 0,01205 0,10870 0,18680 0,24810 0,36170 0,68730

т.е. типичные значения р составляют около 0,2.

αзнак равно100,βзнак равно100000

п

f2 <- function(n, a, b) {
    p <- rbeta(n, a, b)
    ks.test(p, 'pnorm', mean(p), sd(p))$p.value
}
summary(replicate(50, f2(10000, 100, 1000000)))

производит что-то вроде

summary(replicate(50, f2(10000, 100, 1000000)))
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
2.462e-05 3.156e-03 7.614e-03 1.780e-02 1.699e-02 2.280e-01 

с типичными значениями р около 0,01

Функция R qqnormтакже дает полезную визуализацию, создавая очень прямолинейный график для распределения логарифмических шансов, указывающий приблизительную нормальность, распределение переменной бета dsitribute создает отличительную кривую, указывающую на ненормальность

α,β

Дэниел Малер
источник