Мое намерение состоит в том, чтобы код выполнял загрузку (статистику) по заданному списку с размером выборки, равным длине списка, 10000 раз, а затем вычислял 95% -ный доверительный интервал.Я создал класс для возврата доверительного интервала после начальной загрузки, но мой доверительный интервал выглядит странно узким. Что я сделал не так?
import numpy
from random import choice
class bootstrapping(object):
def __init__(self,bslist=[],iteration=10000):
self.bslist = bslist
self.iteration = iteration
def CI(self):
listofmeans = []
for numbers in range(0,self.iteration):
bootstraplist = [choice(self.bslist) for _ in range(len(self.bslist))]
listofmeans.append(sum(bootstraplist)/len(bootstraplist))
s = numpy.std(listofmeans)
z = 1.96
n = self.iteration**0.5
lower_confidence = (sum(listofmeans)/len(listofmeans)) - (z*s/n)
upper_confidence = (sum(listofmeans)/len(listofmeans)) + (z*s/n)
return lower_confidence,upper_confidence
test = bootstrapping([60,33,102,53,63,33,42,19,31,86,15,50,
45,47,26,23,30,20,18,48,22,20,17,29,43,52,29],10000)
test.CI()
Доверительный интервал я получаю (37,897427638499948, +38,102572361500052), является странно узким. Когда я ввожу тот же список чисел в Minitab, 95% доверительный интервал, который я получаю, равен (30.74, 47.48). Что-то я сделал не так?
Если вы не установили [random.seed()] (https://docs.python.org/2/library/random.html#random.seed), он даст разные варианты выполнения. Это не будет учитывать несоответствие, но стоит исправить его для будущего тестирования. – TemporalWolf
@TemporalWolf Я не совсем уверен, что понимаю, что вы имеете в виду. Не могли бы вы рассказать немного дальше? –
установка определенного случайного семени делает его таким, чтобы он предоставлял вам одинаковые варианты при каждом его запуске: он полезен для проверки того, работает ли алгоритм с известным входом. – TemporalWolf