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

Confidence Intervals on the Standard Deviation

Boost , Math Toolkit 2.5.0 , Chi Squared 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

После того, как вы вычислили стандартное отклонение для ваших данных, законным вопросом будет «Насколько надежно рассчитанное стандартное отклонение?». Для этой ситуации распределение Chi Squared может быть использовано для расчета доверительных интервалов для стандартного отклонения.

Полный примерный код & выход образца находится в chi_square_std_dev_test.cpp.

Начнем с определения процедуры, которая вычислит и распечатает доверительные интервалы:

void confidence_limits_on_std_deviation(
     double Sd,    // Sample Standard Deviation
     unsigned N)   // Sample size
{

Начнем с распечатки некоторой общей информации:

cout <<
   "________________________________________________\n"
   "2-Sided Confidence Limits For Standard Deviation\n"
   "________________________________________________\n\n";
cout << setprecision(7);
cout << setw(40) << left << "Number of Observations" << "=  " << N << "\n";
cout << setw(40) << left << "Standard Deviation" << "=  " << Sd << "\n";

затем определим таблицу уровней значимости, для которой вычислим интервалы:

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

Распределение, которое нам понадобится для вычисления доверительных интервалов, представляет собой распределение Чи Квадрата с N-1 степенями свободы:

chi_squared dist(N - 1);

Для каждого значения альфа формула доверительного интервала задается:

Где - верхнее критическое значение, а - нижнее критическое значение распределения Chi Squared.

В коде мы начинаем с распечатки заголовка таблицы:

cout << "\n\n"
        "_____________________________________________\n"
        "Confidence          Lower          Upper\n"
        " Value (%)          Limit          Limit\n"
        "_____________________________________________\n";

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

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 limits:
   double lower_limit = sqrt((N - 1) * Sd * Sd / quantile(complement(dist, alpha[i] / 2)));
   double upper_limit = sqrt((N - 1) * Sd * Sd / quantile(dist, alpha[i] / 2));
   // Print Limits:
   cout << fixed << setprecision(5) << setw(15) << right << lower_limit;
   cout << fixed << setprecision(5) << setw(15) << right << upper_limit << endl;
}
cout << endl;

Для вывода некоторых примеров мы будем использовать gear data из NIST/SEMATECH e-Handbook of Statistical Methods.. Данные представляют собой измерения диаметра передач от производственного процесса.

________________________________________________
2-Sided Confidence Limits For Standard Deviation
________________________________________________
Number of Observations                  =  100
Standard Deviation                      =  0.006278908
_____________________________________________
Confidence          Lower          Upper
 Value (%)          Limit          Limit
_____________________________________________
    50.000        0.00601        0.00662
    75.000        0.00582        0.00685
    90.000        0.00563        0.00712
    95.000        0.00551        0.00729
    99.000        0.00530        0.00766
    99.900        0.00507        0.00812
    99.990        0.00489        0.00855
    99.999        0.00474        0.00895

Таким образом, на уровне 95% достоверности мы приходим к выводу, что стандартное отклонение составляет от 0,00551 до 0,00729.

Confidence intervals as a function of the number of observations

Аналогично, мы можем также перечислить доверительные интервалы для стандартного отклонения для общих уровней уверенности 95%, для увеличения числа наблюдений.

Стандартное отклонение, используемое для вычисления этих значений, является единством, поэтому указанные пределы являются умножителями для любого конкретного стандартного отклонения. Например, при заданном стандартном отклонении 0,0062789, как в примере выше; для 100 наблюдений множитель составляет 0,8780, давая нижний предел достоверности 0,8780 * 0,006728 = 0,00551.

____________________________________________________
Confidence level (two-sided)            =  0.0500000
Standard Deviation                      =  1.0000000
________________________________________
Observations        Lower          Upper
                    Limit          Limit
________________________________________
         2         0.4461        31.9102
         3         0.5207         6.2847
         4         0.5665         3.7285
         5         0.5991         2.8736
         6         0.6242         2.4526
         7         0.6444         2.2021
         8         0.6612         2.0353
         9         0.6755         1.9158
        10         0.6878         1.8256
        15         0.7321         1.5771
        20         0.7605         1.4606
        30         0.7964         1.3443
        40         0.8192         1.2840
        50         0.8353         1.2461
        60         0.8476         1.2197
       100         0.8780         1.1617
       120         0.8875         1.1454
      1000         0.9580         1.0459
     10000         0.9863         1.0141
     50000         0.9938         1.0062
    100000         0.9956         1.0044
   1000000         0.9986         1.0014

Всего за 2 наблюдения пределы от 0.445 до 31.9, так что стандартное отклонение может быть примерно половину наблюдаемое значение до 30 раз наблюдаемое значение!

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

Даже для 10 наблюдений, обычно считающихся разумным числом, диапазон все еще составляет от 0,69 до 1,8, примерно от 0,7 до 2, и все еще сильно перекошен с верхним пределом в два раза медиана.

Когда мы имеем 1000 наблюдений, оценка стандартного отклонения начинает выглядеть убедительной, с диапазоном от 0,95 до 1,05 - теперь почти симметричная, но все еще около + или - 5%.

Только когда у нас есть 10000 или более повторных наблюдений, мы можем начать быть достаточно уверенными (при условии, что мы уверены, что другие факторы, такие как дрейф, не ползут).

Для 10000 наблюдений интервал составляет от 0,99 до 1,1 — наконец, действительно убедительная + или —1% достоверность.


PrevUpHomeNext

Статья Confidence Intervals on the Standard Deviation раздела Math Toolkit 2.5.0 Chi Squared Distribution Examples может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chi Squared Distribution Examples ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 08:54:07/0.0071771144866943/0