Метод имитации статистического выбора

Начиная с середины прошлого века инициированные развитием вычислительных технологий вышли в свет работы (Эфрон Б., Тьюки Дж. и др.), посвященные так называемому ресэмплингу — генерации дополнительных выборок из уже имеющихся. Одним из таких подходов, распространенных в век компьютерных технологий, является bootstrap-метод, или метод имитации статистического выбора.

Суть  метода заключается в формировании множества выборок, на основе случайного выбора с повторениями. Если о законе распределения выборки нет никаких априорных сведений, а получить оценки его характеристики все-таки необходимо, то bootstrap-метод может быть весьма полезным инструментом. Рассмотрим его работу на примере вычисления среднего значения.

Иллюстрация Бутстреп-подхода

Допустим, имеется набор \(x_1, x_2, \ldots, x_{10} \) значений, на основе которых необходимо оценить среднее.  На языке "математической статистики" данная задача звучит так: имеется выборка из некоторого неизвестного закона распределения; необходимо оценить математическое ожидание  этого распределения и найти доверительные границы  оценки.

Метод виртуальных выборок (bootstrap-метод) заключается в том, что на основе исходного набора \(x_1, x_2, \ldots, x_{10} \) с использованием процедуры случайного выбора с повторениями формируются наборы вида: $$ \begin{array}{l}
x_2, x_4, x_5, x_5, x_7, x_8, x_{10}, x_9, x_4, x_5 \\
x_7, x_1, x_3, x_2, x_7, x_6, x_{10}, x_9, x_6 , x_1\\
x_4, x_5, x_1, x_2, x_1, x_6, x_9, x_{10}, x_{10} , x_8 \\
\ldots \\
x_8, x_1, x_1, x_3, x_4, x_6, x_7, x_5, x_7 , x_8
\end{array}
$$

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

Допустим мы сформировали 1000 выборок и нашли для каждого набора среднее значение. Обозначим их \(m_1, m_2,\ldots,m_{1000}\). Поскольку количество элементов в каждой из выборок одинаково, найденные средние значения представляют собой выборку из некоторого закона распределения вероятностей, который достаточно хорошо представлен (имеется 1000 выборочных значений!).  Медиана полученной выборки может служить оценкой неизвестного математического ожидания, а соответствующие ей проценитили (если задаться доверительным уровнем вероятности) будут границами искомого доверительного интервала.

Рассмотрим пример вычисления оценки математического ожидания и ее доверительного интервала с использованием языка программирования Python.

import scipy.stats as st
import numpy as np

def bootstrap(sample, samplesize = None, nsamples = 1000, statfunc = np.mean):
    """
    Arguments:
       sample - input sample of values
       nsamples - number of samples to generate
       samplesize - sample size of each generated sample
       statfunc- statistical function to apply to each generated sample.
 
    Performs resampling from sample with replacement, gathers
    statistic in a list computed by statfunc on the each generated sample.
    """
    if samplesize is None:                                                                   
        samplesize=len(sample)
    n = len(sample)
    X = []
    for i in range(nsamples):
        resample = [sample[j] for j in st.randint.rvs(0, n-1, size=samplesize)] 
        x = statfunc(resample)
        X.append(x)
    return np.array(X)


def bootstrap_estimation(X,alpha):
    '''Bootstrap estimation of X-statistic based on median value.
    '''
    return [np.percentile(X,50), np.percentile(X,(alpha/2)*100.0), np.percentile(X,100-(alpha/2)*100)]

Функция bootstrap формирует виртуальные выборки (по умолчанию количество виртуальных выборок nsamples=1000) и вычисляет для каждой выборки значение функции statfunc. Если в качестве statfunc передается функция, вычисляющая среднее значение, то результатом работы bootstrap будет массив из средних значений виртуальных выборок. Поскольку параметром statfunc может быть не только функция среднего, но и любая другая функция, предлагаемый пример может использоваться не только для получения bootstrap-оценок среднего, но и любых других статистических характеристик.

Функция bootstrap_estimation — определяет оценку и соответствующий ей доверительный интервал (при соответствующем уровне значимости). Для доверительной вероятности 95% значение параметра alpha будет равно 0.05. 

Рассмотрим практический пример работы функции bootstrap_estimation для оценки среднего значения. Выполним

x=[ 17.,  51.,  71.,  91.,  79.,  37.,  34.,  77.,  38.,  17.,  26., 0.,   8.,   1.,  44.,  78.,  63.,  58.,   9.,  29.]
bootstrap_estimation(bootstrap(x), 0.05)

что вычислит для тестовой выборки x bootstrap-оценку среднего и его 95% доверительный интервал на основе 1000 виртуальных выборок. Результат (зависит от начального состояния генератора случайных чисел и может несколько варьироваться от выполнения к выполнению) будет приблизительно следующим:
 

1
[41.850000000000001, 29.098749999999999, 54.757499999999993]

Первое значение из полученных трех — искомая оценка математического ожидания; последующие два значения — нижняя и верхняя границы 95% доверительного интервала. Доверительный интервал, как видно из результатов, достаточно большой, что является следствием разброса выборочных значений (исходная выборка генерировалась как набор 20 случайных целочисленных положительных значений, меньших 100).
Таким образом, метод имитации статистического выбора (bootstrap-подход) может быть рекомендован в случаях, когда: 1) неизвестен закон распределения, из которого сформирована выборка, подлежащая анализу; 2) закон распределения известен, но достаточно сложен (например, имеет многомодовую структуру —  т.е. функция плотности распределения имеет несколько локальных максимумов);  3) выборка имеет малый объем (в этом случае bootstrap-подход имеет свои ограничения).

Рассмотрим в заключение 2 гистограммы: 1) средних значений для 1000 bootstrap выборок, полученных для одной выборки размером 10 значений равномерно взятых на интервале [0, 1]; 2) 1000 различных выборок размером 10 значений, также из интервала [0, 1]. В первом случае элементы выборок повторяются. Во втором — используется генератор псевдослучайных чисел и значения, участвующие в выборках, вероятно, не повторяются.

Гистограмма для различных 1000 выборок Гистограмма для 1000 виртуальных выборок

Гистограмма для 1000 различных выборок (слева) - имеет равномерный вид относительно положения 0.5 - точного среднего значения; соответствующая гистограмма для 1000 bootstrap-выборок (справа) имеет заметное смещение относительно положения 0.5. Это происходит вследствие того, что исходная выборка, использованная для генерирования виртуальных, имела малый объем. Таким образом, хотя и bootstrap-метод дает возможность построить оценки и найти их доверительные интервалы, он не свободен от возможных в них смещений, в особенности, в случае малых выборок.

blog comments powered by Disqus