поділу можуть бути різні. Алгоритм від цього не змінюється. Проте якщо у розподілу немає математичного очікування (такі зустрічаються) - бутстрап його не знайдете. Тобто він знайде математичне очікування вибірки, але не генеральної сукупності. Те ж стосується ситуації, коли вибірка маленька.
Розглянемо наведений нижче приклад написання бутстрапа на C ++:
#include stdafx.h
#include lt; iostream gt;
#include lt; iomanip gt;
#include lt; math.h gt;
#include lt; stdlib.h gt;
#include lt; conio.h gt;
typedef int Data_t;
#define ARRAY_SIZE (x) sizeof (x)/ sizeof (x [0])
static double bootstrap ( const Data_t * data, unsigned n)
{
unsigned i;
double sum=0;
for (i=0; i lt; n; i ++) {+=data [rand ()% n];
}
return sum/n;
}
static int compare ( const void * a, const void * b)
{
if (* ( double *) a gt; * ( double *) b) return 1;
if (* ( double *) a lt; * ( double *) b) return - 1;
return 0;
}
int main ( int argc, char * argv [] )
{_ t test [893]={0}; _ t control [923]={0};
unsigned i;
for (i=0; i lt; 34; i ++) {[i]=1;
}
for (i=0; i lt; 28; i ++) {[i]=1;
}
if (argc == 2) {(atoi (argv [1]));
}
double t_minus_c [10000];
for (i=0; i lt; ARRAY_SIZE (t_minus_c); i ++) {_minus_c [i]=bootstrap (test, ARRAY_SIZE (test))
bootstrap (control, ARRAY_SIZE (control));
} (t_minus_c, ARRAY_SIZE (t_minus_c), sizeof ( double ), compare); ( LCL =% g %% n raquo ;, 100. * t_minus_c [250]); ( UCL =% g %% n raquo ;, 100. * t_minus_c [9750]);
_ getch ();
return 0;
}
Опишемо вище показаний код. Функція, яка робить вибірку і вважає по ній відсоток конверсії. Правильніше було б використовувати більш точний алгоритм обчислення середнього значення, але для нашого прикладу це не важливо.
static double bootstrap ( const Data_t * data, unsigned n )
{
unsigned i;
double sum=0;
for (i=0; i lt; n; i ++) {+=data [rand ()% n];
}
return sum/n;
}
функція порівняння для сортування результатів
static int compare ( const void * a, const void * b)
{
if (* ( double *) a gt; * ( double *) b) return 1;
if (* ( double *) a lt; * ( double *) b) return - 1;
return 0;
}
Вихідні дані
int main ( int argc, char * argv [] )
{_ t test [893]={0}; _ t control [923]={0};
unsigned i;
for (i=0; i lt; 34; i ++) {[i]=1;
}
for (i=0; i lt...