Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Estimating Sample Sizes for a Binomial Distribution.

Boost , Math Toolkit 2.5.0 , Binomial Distribution Examples

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Представьте, что у вас есть критический компонент, который, как вы знаете, потерпит неудачу в 1 из N «использования» (для некоторого подходящего определения «использования»). Вы можете запланировать плановую замену компонента таким образом, чтобы его вероятность неудачи между рутинной заменой была меньше P%. Если сбои следуют за биномиальным распределением (каждое время компонент «используется» либо терпит неудачу, либо нет), то статическая функция члена binomial_distibution<>::find_maximum_number_of_trials можно использовать для оценки максимального количества «использований» этого компонента для определенного приемлемого уровня риска альфа.

Пример программы binomial_sample_sizes.cpp демонстрирует ее использование. Он сосредоточен на рутине, которая печатает таблицу максимальных размеров выборки для различных порогов вероятности:

void find_max_sample_size(
   double p,              // success ratio.
   unsigned successes)    // Total number of observed successes permitted.
{

Затем рутина объявляет таблицу порогов вероятности: это максимально допустимая вероятность того, что успехи или меньше событий будут наблюдаться. В нашем примере success всегда будет нулевым, так как мы не хотим никаких сбоев компонентов, но в других ситуациях ненулевые значения вполне могут иметь смысл.

double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };

Большая часть остальной части программы довольно-печатная, важная часть заключается в расчете максимального количества разрешенных испытаний для каждого значения альфа:

for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
{
   // Confidence value:
   cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);
   // calculate trials:
   double t = binomial::find_maximum_number_of_trials(
                  successes, p, alpha[i]);
   t = floor(t);
   // Print Trials:
   cout << fixed << setprecision(5) << setw(15) << right << t << endl;
}

Обратите внимание, что, поскольку мы вычисляем максимальное количество разрешенных испытаний, мы будем ошибаться на безопасной стороне и возьмем пол результата. Если бы мы рассчитывали minimum количество испытаний, необходимых для наблюдения определенного количества success, используя find_minimum_ number_of_trials, мы бы взяли потолок вместо этого.

Мы закончим, глядя на некоторые результаты выборки, во-первых, на 1 из 1000 шансов на отказ компонента с каждым использованием:

________________________
Maximum Number of Trials
________________________
Success ratio                           =  0.001
Maximum Number of "successes" permitted =  0
____________________________
Confidence        Max Number
 Value (%)        Of Trials
____________________________
    50.000            692
    75.000            287
    90.000            105
    95.000             51
    99.000             10
    99.900              0
    99.990              0
    99.999              0

Таким образом, 51 «использование» компонента даст 95% шанс, что никакие сбои компонентов не будут соблюдаться.

Сравните это с 1 из 1 миллиона шансов на отказ компонента:

________________________
Maximum Number of Trials
________________________
Success ratio                           =  0.0000010
Maximum Number of "successes" permitted =  0
____________________________
Confidence        Max Number
 Value (%)        Of Trials
____________________________
    50.000         693146
    75.000         287681
    90.000         105360
    95.000          51293
    99.000          10050
    99.900           1000
    99.990            100
    99.999             10

В этом случае даже 1000 применений компонента по-прежнему дают менее 1 из 1000 шансов на наблюдение за отказом компонента (т.е. 99,9% шансов на отсутствие сбоя).


PrevUpHomeNext

Статья Estimating Sample Sizes for a Binomial Distribution. раздела Math Toolkit 2.5.0 Binomial Distribution Examples может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Binomial Distribution Examples ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 00:44:30/0.0058581829071045/1