Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы / Бочаров (5 вариант) / Лабораторная работа 6.docx
Скачиваний:
31
Добавлен:
28.06.2014
Размер:
242.29 Кб
Скачать

Решение

Для начала заметим, что наблюдение в течение времени Tза случайной величиной, распределенной по закону Пуассона с некоторым параметром равнозначно проведениюTизмерений этой случайной величины. В дальнейшем, чтобы не создавать путаницы, отождествимTиn– число измерений.

Построим процедуру различения гипотез при фиксированном объеме выборки:

Сгенерируем выборки с соответствующими характеристиками и проверим работу решающего правила:

В первом случае , следовательно, принимается гипотеза о нахождении в капсуле первого вещества. Во втором случае, следовательно, принимается гипотеза о нахождении в капсуле второго вещества.

Убедились в том, что по построенному правилу принимаются правильные решения.

Построим последовательную процедуру различения гипотез. Для обработки и графического отображения процесса получения результата была написана программа на языке Pythonс использованием специализированных математических библиотек. Приведем ее код в приложении.

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

Приведем пример графика процесса принятия решения:

Код программы

import math;

import numpy as np;

import scipy.stats as stats;

from scipy import *

def get_probability_ratio(x,lamb1,lamb2):

return stats.poisson.pmf(x,lamb2)/stats.poisson.pmf(x,lamb1)

def serial_wald_analisys(A,B,lamb1,lamb2):

ratio = 0;

current = 0;

result = list()

while (math.log(A)<ratio<math.log(B)):

current = stats.poisson.rvs(lamb2)

ratio += math.log(get_probability_ratio(current,lamb1,lamb2))

result.append(ratio);

print "Measurement time needed: "+ str(len(result))+" seconds"

if (ratio<math.log(A)):

print "Poisson distribution with A parameter"

else:

print "Poisson distribution with B parameter"

return result;

def show_result(ratiolist,A,B):

plt.plot(range(1,len(ratiolist)+1),ratiolist,'r-');

t = linspace(0,len(ratiolist),len(ratiolist));

y1 = B+t-t;

y2 = A+t-t;

plt.plot(t,y1,'b-');

plt.plot(t,y2,'g-');

plt.ylabel("Likeness ratio")

plt.xlabel("Measurement time,seconds")

plt.show();

def serial_to_file(A,B,lamb1,lamb2,count):

f = open("E:\\inputfiles\\output.txt",'w');

for i in xrange(0,count):

ratio = 0;

current = 0;

result = list()

while (math.log(A)<ratio<math.log(B)):

current = stats.poisson.rvs(lamb2)

ratio += math.log(get_probability_ratio(current,lamb1,lamb2))

result.append(ratio);

f.write('\n');

f.write("Measurement time needed: "+ str(len(result))+" seconds")

f.write('\n');

if (ratio<math.log(A)):

f.write("Poisson distribution with A parameter")

f.write('\n');

else:

f.write("Poisson distribution with B parameter")

f.write('\n');

f.close();

#serial_to_file(0.0526,19,0.1,0.12,30);

show_result(serial_wald_analisys(0.0526,19,0.1,0.12),math.log(0.0526),math.log(19))