Скачать файл с текстом программы для Matlab (.m-файл)
1. Теоретическая часть.
Общие сведения
Оценка репрезентативности выборки с определенной вероятностью позволяет судить о границах генеральной выборки, сделать некоторые предположения об отдельных параметрах случайной величины, таких, как математическое ожидание, дисперсия и др. Но при этом нельзя сделать вывод о характере распределения случайной величины. Полную характеристику случайной величины дает закон ее распределения. Однако об этом законе в генеральной совокупности можно получить информацию только из частичных выборок. Поэтому необходимо иметь критерии оценки соответствия статистических законов распределения, полученных из частичных выборок, теоретическим законам распределения, характеризующим генеральную совокупность. Такими критериями являются критерии согласия. Наиболее известны критерии согласия Пирсона, Колмогорова и Смирнова.
Параметрические критерии согласия
Критерий согласия Пирсона
В ходе эксперимента нередко возникает необходимость проверки гипотезы о виде распределения исследуемой выборки. В этом случае пространство значений исследуемой величины разбивают на r интервалов S1, S2,..., Sr, каждый из которых содержит примерно одинаковое число событий. Для определения числа интервалов имеется несколько рекомендаций, которые сводятся, например, к использованию следующих зависимостей:
r=1,87·(n-1)2/5 (1.1)
или
r=b·lg(n). (1.2)
Здесь n-объем исследуемой выборки: b=35.
По этим данным можно построить гистограмму. Гистограмме сопоставляется некоторая конкретная вероятностная функция, которая лучшим образом, по мнению исследователя, описывает экспериментальные данные. Вероятностная функция внутри интервалов принимает значения P1, P2, ..., Pr; при этом


Каждому множеству Si соответствует ni выборочных значений и

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



Пирсон показал, что в соответствии с методом наименьших квадратов мера расхождения z между экспериментом и теорией обладает чрезвычайно важным свойством:

Значит,
-распределение выражается через наблюдаемые частоты
и ожидаемые частоты
для всех r интервалов, при этом
-распределение имеетk=r-1 степень свободы. Число степеней свободы k зависит от того, использовались ли рассматриваемые экспериментальные данные для получения параметров распределения. Выявление параметров распределения понижает число степеней свободы на число выявленных параметров l .




Таким образом, рассматриваемый критерий - параметрический, он учитывает и значение, и число параметров распределения. Если рассматривать нормальное распределение, то оно, как известно, описывается двумя параметрами: l=2 (математическое ожидание и дисперсия). Откуда k=r-l-1=r-3.
Процедура проверки по критерию
сводится к следующим этапам:

1. Выборку объема n разбивают на r интервалов: S1,S2,...,Sr, где r рассчитывается по формуле (1.1) или (1.2). При этом необходимо, чтобы r>7, а каждый интервал
содержал не менее 5 выборочных значений. Интервалы могут иметь различную длину.

2. Из выборочных данных получают оценки параметров экспериментального распределения
. Устанавливают число степеней свободы k=r-l-1.

3. Выдвигают гипотезу (теоретическое распределение) о виде экспериментального распределения и устанавливают уровень значимости , по которому определяют, например из таблицы, представленной в прил. 4, критическую область
.

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

5. На основании (1.5) рассчитывают значение статистики
. Если,
, то гипотеза при данном уровне значимости a не противоречит предполагаемому виду распределения. Если
, то гипотеза о данном виде распределения должна быть отклонена.



2. Практическая часть — моделирование в системе Matlab
На основе вышеизложенного материала в программном пакете Matlab была составлена программа для проверки гипотезы по критерию Пирсона.
В реализованной программе используется ранее опубликованная функция для построения гистограммы.
Текст программы Matlab:
clc; clear;
n = input('Введите количество случайных величин в массиве: ');
alpha = 0.05; % устанавливаем уровень значимости
mu = 10; % устанавливаем мат. ожидание для генерируемой выборки
sigma = 1;
x = normrnd(mu,sigma,n,1); % Массив случайных чисел, закон о виде
% распределения которых будем проверять
x = sort(x); % сортируем массив (для поиска min и max)
disp('Максимальные и минимальные значения в массиве: ');
xmax = max(x)
xmin = min(x)
% Определяем количество интервалов (формула (1.2)):
b = 3;
disp('Количество интервалов:')
r = round(b*log(n))
% Определяем длину одного интервала:
disp('Длина интервала:')
stp = (xmax-xmin)/r
% Определяем частоту (количество чисел, попавших в каждый интервал)
k1 = xmin;
i = 1;
while i<=r
k2 = 0;
for j=1:n
if (x(j)>=k1) & (x(j)<=k1+stp)
k2 = k2+1;
end
end
freqn(i) = k2;
k1 = xmin+stp*i;
i = i+1;
end
disp('Частота (количество чисел, попавших в каждый интервал):');
freqn
relfreq = freqn/n % относительная частота
disp('Относительная частота: ');
disp(relfreq)
% мат. ожидание (найденное по экспериментальным данным)
disp('Мат. ожидание: ');
m = (sum(x))/n
% среднеквадратичное отклонение
disp('Среднеквадратичное отклонение: ');
d = sqrt(sum((x-m).^2)/(n-1))
% плотность нормального распределения (для всей выборки)
f = (1/(d*sqrt(2*pi)))*exp((-(x-m).^2)/(2*d^2));
% Построение гистограммы
j = 1;
for i=1:2:2*r
a(i) = (xmin-stp)+stp*j;
a(i+1) = (xmin-stp)+stp*(j+1)-0.001;
b(i) = relfreq(j)/stp;
b(i+1) = relfreq(j)/stp;
j = j+1;
end
plot(a,b,'b',x,f,'r');
ylabel('Плотность')
% Теоретическая вероятность:
% Складывается из суммы(j=1:r) значений определённого интеграла
% для каждого из интервалов
% --------------------------
% Для вычисления определённого интеграла используется метод Симпсона
a1 = xmin; % верхний и нижний
b1 = a1+stp; % пределы интегрирования
for j=1:r
s1=0; % сумма, "основной" множитель в формуле Симпсона
n1 = 10;% количество разбиений каждого участка
stp1=(b1-a1)/n1; % шаг разбиения участка на интервалы
for i=a1:2*stp1:b1-2*stp1
% вычисляем необходимые значения функции
% (в соответствии с формулой Симпсона):
f1=exp((-((i)-m)^2)/(2*d^2)) / (d*sqrt(2*pi));
f2=exp((-((i+stp1)-m)^2)/(2*d^2)) / (d*sqrt(2*pi));
f3=exp((-((i+2*stp1)-m)^2)/(2*d^2)) / (d*sqrt(2*pi));
s1=s1+f1+4*f2+f3;
end
p(j)=(stp1/3)*s1; % используем формулу Симпсона для вычисления
% интеграла для j-того интервала
% (т.е. получаем теоретическую вероятность j-того интервала)
a1=a1+stp;
b1=b1+stp;
end
% ----------------------------
% конец вычисления интеграла, теоритич. вероятность получена:
disp('Теоретическая вероятность: ');
disp(p);
% мера расхождения между экспериментом и теорией (формула (1.5))
disp('Мера расхождения между экспериментом и теорией');
chie = 0;
for i=1:r
chie = chie+((freqn(i)-n*p(i)).^2)/(n*p(i));
end
chie
% количество степеней свободы
disp('Количество степеней свободы');
k = r-3
% табличное (теоретическое) значение критерия хи-квадрат
disp('Значения критерия хи-квадрат:');
chietabl = chi2inv(1-alpha, k)
% На основе вычисленных данных, делаем вывод,
% что гипотеза при данном уровне значимости (не) противоречит
% предполагаемому виду распределения:
if chie<=chietabl
disp('Распределение случайных величин в массиве подчиняется нормальному закону распределения');
else
disp('Распределение случайных величин в массиве не подчиняется нормальному закону распределения');
end
3.Результат работы программы:
При выборке объема n=1000 программа рассчитывает следующие значения, на основе которых делается вывод об отклонении или принятии гипотезы о виде распределения:
Введите количество случайных величин в массиве: 1000
Максимальные и минимальные значения в массиве:
xmax =
13.4918
xmin =
6.4130
Количество интервалов:
r =
21
Длина интервала:
stp =
0.3371
Частота (количество чисел, попавших в каждый интервал):
freqn =
Columns 1 through 15
1 1 5 4 20 35 58 78 90 124 124 142 121 69 53
Columns 16 through 21
36 21 9 5 2 2
relfreq =
Columns 1 through 9
0.0010 0.0010 0.0050 0.0040 0.0200 0.0350 0.0580 0.0780 0.0900
Columns 10 through 18
0.1240 0.1240 0.1420 0.1210 0.0690 0.0530 0.0360 0.0210 0.0090
Columns 19 through 21
0.0050 0.0020 0.0020
Относительная частота:
Columns 1 through 9
0.0010 0.0010 0.0050 0.0040 0.0200 0.0350 0.0580 0.0780 0.0900
Columns 10 through 18
0.1240 0.1240 0.1420 0.1210 0.0690 0.0530 0.0360 0.0210 0.0090
Columns 19 through 21
0.0050 0.0020 0.0020
Мат. ожидание:
m =
9.9821
Дисперсия:
d =
1.0229
Теоретическая вероятность:
Columns 1 through 9
0.0005 0.0015 0.0039 0.0088 0.0178 0.0325 0.0532 0.0783 0.1035
Columns 10 through 18
0.1228 0.1308 0.1251 0.1075 0.0829 0.0574 0.0357 0.0200 0.0100
Columns 19 through 21
0.0045 0.0018 0.0007
Мера расхождения между экспериментом и теорией
chie =
16.0763
Количество степеней свободы
k =
18
Значения критерия хи-квадрат:
chietabl =
28.8693
Распределение случайных величин в массиве подчиняется нормальному закону распределения

Рис. 1— гистограмма и график плотности вероятности
Очень полезная статья, помогла, но нашел ошибку, которая не влияет на работу программы. % дисперсия
ОтветитьУдалитьdisp('Дисперсия: ');
d = sqrt(sum((x-m).^2)/(n-1))
Это не дисперсия, а среднеквадратичное отклонение
Здравствуйте, Владислав!
УдалитьСпасибо за интерес и внимательность. Вы правы, в данной строке действительно идёт расчёт среднеквадратичного отклонения. Ошибка была исправлена, благодарим вас за комментарий.