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

F Distribution Examples

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

Представьте, что вы хотите сравнить стандартные отклонения двух образцов, чтобы определить, отличаются ли они каким-либо существенным образом, в этой ситуации вы используете распределение F и выполняете F-тест. Эта ситуация обычно возникает при проведении сравнения изменений процесса: «является ли новый процесс более последовательным, чем старый?»

В этом примере мы будем использовать данные для керамической прочности изhttp://www.itl.nist.gov/div898/handbook/eda/section4/eda42a1.htmДанные для данного тематического исследования были собраны Саидом Джаханмиром из отдела керамики NIST в 1996 году в связи с консорциумом керамики NIST / промышленности для оптимизации прочности керамики.

Пример программыf_test.cpp, выпуск программы был преднамеренно сделан как можно более похожим на выход DATAPLOT в соответствующем примереNIST EngineeringStatistics Handbook.

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

void f_test(
    double sd1,     // Sample 1 std deviation
    double sd2,     // Sample 2 std deviation
    double N1,      // Sample 1 size
    double N2,      // Sample 2 size
    double alpha)  // Significance level
{

Процедура начинается с распечатки резюме наших входных данных:

using namespace std;
using namespace boost::math;
// Print header:
cout <<
   "____________________________________\n"
   "F test for equal standard deviations\n"
   "____________________________________\n\n";
cout << setprecision(5);
cout << "Sample 1:\n";
cout << setw(55) << left << "Number of Observations" << "=  " << N1 << "\n";
cout << setw(55) << left << "Sample Standard Deviation" << "=  " << sd1 << "\n\n";
cout << "Sample 2:\n";
cout << setw(55) << left << "Number of Observations" << "=  " << N2 << "\n";
cout << setw(55) << left << "Sample Standard Deviation" << "=  " << sd2 << "\n\n";

Тестовая статистика для F-теста - это просто отношение квадрата двух стандартных отклонений:

F = s12/ s22

где s1- стандартное отклонение первого образца, а s2- стандартное отклонение второго образца. Или в коде:

double F = (sd1 / sd2);
F *= F;
cout << setw(55) << left << "Test Statistic" << "=  " << F << "\n\n";

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

гипотеза

Тест

Нулевая гипотеза: нет разницы в стандартных отклонениях (двусторонний тест)

Отклонить, если F<= F(1-альфа/2; N1-1, N2-1)или F >= F(альфа/2; N1-1, N2-1)

Альтернативная гипотеза: есть разница в средствах (двусторонний тест)

Отклонить, если F(1-альфа/2; N1-1, N2-1)<= F<= F(alpha/2; N1-1, N2-1)

Альтернативная гипотеза: Стандартное отклонение образца 1 больше, чем отклонение образца 2

Отклонить, если F< F(альфа; N1-1, N2-1)

Альтернативная гипотеза: Стандартное отклонение образца 1 меньше, чем отклонение образца 2

Отклонить, если F >F(1-альфа; N1-1, N2-1)

Где F(1-альфа; N1-1, N2-1)— нижнее критическое значение распределения F со степенями свободы N1-1 и N2-1, а F(альфа; N1-1, N2-1)— верхнее критическое значение распределения F со степенями свободы N1-1 и N2-1.

Верхнее и нижнее критические значения могут быть вычислены с помощью функции квантиля:

F(1-альфа; N1-1, N2-1)=<quantile(fisher_f(N1-1,N2-1), alpha)>

F(альфа; N1-1, N2-1)=<quantile(complement(fisher_f(N1-1,N2-1), alpha))>

В нашей примерной программе нам нужны как верхние, так и нижние критические значения для альфа и для альфа/2:

double ucv = quantile(complement(dist, alpha));
double ucv2 = quantile(complement(dist, alpha / 2));
double lcv = quantile(dist, alpha);
double lcv2 = quantile(dist, alpha / 2);
cout << setw(55) << left << "Upper Critical Value at alpha: " << "=  "
   << setprecision(3) << scientific << ucv << "\n";
cout << setw(55) << left << "Upper Critical Value at alpha/2: " << "=  "
   << setprecision(3) << scientific << ucv2 << "\n";
cout << setw(55) << left << "Lower Critical Value at alpha: " << "=  "
   << setprecision(3) << scientific << lcv << "\n";
cout << setw(55) << left << "Lower Critical Value at alpha/2: " << "=  "
   << setprecision(3) << scientific << lcv2 << "\n\n";

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

cout << setw(55) << left <<
   "Results for Alternative Hypothesis and alpha" << "=  "
   << setprecision(4) << fixed << alpha << "\n\n";
cout << "Alternative Hypothesis                                    Conclusion\n";
cout << "Standard deviations are unequal (two sided test)          ";
if((ucv2 < F) || (lcv2 > F))
   cout << "ACCEPTED\n";
else
   cout << "REJECTED\n";
cout << "Standard deviation 1 is less than standard deviation 2    ";
if(lcv > F)
   cout << "ACCEPTED\n";
else
   cout << "REJECTED\n";
cout << "Standard deviation 1 is greater than standard deviation 2 ";
if(ucv < F)
   cout << "ACCEPTED\n";
else
   cout << "REJECTED\n";
cout << endl << endl;

Используя данные о прочности керамики в качестве примера, мы получаем следующий результат:

F test for equal standard deviations
____________________________________
Sample 1:
Number of Observations                                 =  240
Sample Standard Deviation                              =  65.549
Sample 2:
Number of Observations                                 =  240
Sample Standard Deviation                              =  61.854
Test Statistic                                         =  1.123
CDF of test statistic:                                 =  8.148e-001
Upper Critical Value at alpha:                         =  1.238e+000
Upper Critical Value at alpha/2:                       =  1.289e+000
Lower Critical Value at alpha:                         =  8.080e-001
Lower Critical Value at alpha/2:                       =  7.756e-001
Results for Alternative Hypothesis and alpha           =  0.0500
Alternative Hypothesis                                    Conclusion
Standard deviations are unequal (two sided test)          REJECTED
Standard deviation 1 is less than standard deviation 2    REJECTED
Standard deviation 1 is greater than standard deviation 2 REJECTED

В этом случае мы не можем отвергнуть нулевую гипотезу и должны отвергнуть альтернативную гипотезу.

Напротив, давайте посмотрим, что происходит, когда мы используем некоторые другиевыборочные данные:, еще раз из Справочника инженерной статистики NIST: Вводится и тестируется новая процедура сборки устройства для возможного улучшения времени сборки. Рассматривается вопрос о том, является ли стандартное отклонение нового процесса сборки (образец 2) лучше (т.е. меньше), чем стандартное отклонение старого процесса сборки (образец 1).

____________________________________
F test for equal standard deviations
____________________________________
Sample 1:
Number of Observations                                 =  11.00000
Sample Standard Deviation                              =  4.90820
Sample 2:
Number of Observations                                 =  9.00000
Sample Standard Deviation                              =  2.58740
Test Statistic                                         =  3.59847
CDF of test statistic:                                 =  9.589e-001
Upper Critical Value at alpha:                         =  3.347e+000
Upper Critical Value at alpha/2:                       =  4.295e+000
Lower Critical Value at alpha:                         =  3.256e-001
Lower Critical Value at alpha/2:                       =  2.594e-001
Results for Alternative Hypothesis and alpha           =  0.0500
Alternative Hypothesis                                    Conclusion
Standard deviations are unequal (two sided test)          REJECTED
Standard deviation 1 is less than standard deviation 2    REJECTED
Standard deviation 1 is greater than standard deviation 2 ACCEPTED

В этом случае мы принимаем нашу нулевую гипотезу как «стандартное отклонение 1 меньше или равно стандартному отклонению 2», поскольку это представляет ситуацию «без изменений». Поэтому мы хотим сравнить верхнее критическое значение вальфа(однобокий тест) с тестовой статистикой, и с 3.35< 3.6 эта гипотеза должна быть отвергнута. Поэтому мы заключаем, что в нашем стандартном отклонении есть изменение к лучшему.


PrevUpHomeNext

Статья F Distribution Examples раздела Math Toolkit 2.5.0 Worked Examples может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Worked Examples ::


реклама


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

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