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


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 превысит некоторый порог. Имеет ли это смысл?


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


Отлично! У меня на столе все время была книга 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р как отдельные цифры, так что этот маршрут может быть достаточно хорошим.


Когда альфа и бета не слишком далеко друг от друга (то есть альфа / бета ограничены сверху и снизу), 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 создает отличительную кривую, указывающую на ненормальность

α,β

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.