Метод максимального или наибольшего правдоподобия предложен Р. Фишером [6, 13]. С помощью этого метода производится точечная оценка неизвестных параметров априорно известного закона распределения случайной величины.
Рассмотрим сначала суть метода при оценке параметров
Обозначим вероятность того, что в результате испытания величина $$X$$ примет значение $$x_{i}\mbox{ }(i=1,2,...,n)$$, через $$p_i(x_i,\theta)$$.
Определение. Функцией правдоподобия случайной дискретной величины $$X$$ называют функцию аргумента $$\theta$$:
$$L(x_1,x_2,...,x_n;\theta)=p(x_1;\theta)p(x_2;\theta) ...,p(x_n;\theta),$$где $$x_{1},\mbox{ }x_{2},...,x_{n}$$ — фиксированные числа, полученные при измерении случайной величины $$X$$.
В качестве точечной оценки параметра $$\theta$$ принимают такое его значение $$\theta^{*}=\theta^{*}(x_1,x_2,...,x_n)$$, при котором функция правдоподобия достигает максимума. Оценку $$\theta^{*}$$ называют
Для упрощения расчетов в рассмотрение вводится логарифм функции правдоподобия $$lnL$$, которую называют
или
$$\frac{\partial\ln L(\vec x_n;\theta)}{\partial \theta}=0,$$где $$\vec x_n$$ — заданная выборка случайных величин.
Уравнение правдоподобия (7.3) с логарифмической функцией, как правило, более простое относительно функции правдоподобия (7.2).
Если распределение случайной величины $$Х$$ зависит от вектора параметров $$\vec \theta=(\theta_1,\theta_2,...,\theta_r)$$, то уравнение (7.3) заменяется системой уравнений
$$\frac{\partial\ln L(\vec x_n;\theta)}{\partial \theta_k}=0,\qquad k=\overline{1,r}.$$Именно уравнения (7.3) и (7.4) принято называть
Рассмотрим применение метода максимального правдоподобия для оценки параметров непрерывного распределения случайных величин генеральной совокупности $$Х$$.
Пусть $$X$$ — непрерывная случайная величина, которая в результате $$n$$ испытаний приняла значения $$x_{1},\mbox{ }x_{2},...,x_{n}$$. Предполагается, что вид плотности распределения $$f(x)$$ задан, но неизвестен параметр $$\theta$$, которым определяется эта функция.
Определение. Функцией правдоподобия непрерывной случайной величины $$Х$$ называют функцию аргумента $$\theta$$
$$L(x_1,x_2,...,x_n;\theta)=f(x_1;\theta)f(x_2;\theta) ... f(x_n;\theta),$$где $$x_{1},\mbox{ }x_{2},...,x_{n}$$ — фиксированные числа.
Замечание. Если плотность распределения непрерывной случайной величины $$Х$$ определяется двумя неизвестными параметрами $$\theta_1$$ и $$\theta_2$$, то функция правдоподобия является функцией двух независимых аргументов $$\theta_1$$ и $$\theta_2$$:
$$L(x_1,x_2,...,x_n;\theta_1,\theta_2)=f(x_1;\theta_1,\theta_2)f(x_2;\theta_1,\theta_2) ... f(x_n;\theta_1,\theta_2),$$Как для дискретных распределений, так и для непрерывных точку максимума логарифмической функции распределения $$lnL$$ аргумента $$\theta$$ можно искать через необходимое условие
Найденную точку максимума $$\theta^{*}$$ принимают в качестве оценки максимального правдоподобия параметра $$\theta$$.
Метод максимального правдоподобия имеет ряд достоинств: его оценки, вообще говоря, состоятельны (но они могут быть смещенными), распределены асимптотически нормально (при больших значениях $$n$$ приближенно нормально) и имеют наименьшую дисперсию по сравнению с другими асимптотически нормальными оценками; если для оцениваемого параметра $$\theta$$ существует эффективная оценка $$\theta^{*}$$, то уравнение правдоподобия имеет единственное решение $$\theta^{*}$$ ; этот метод наиболее полно использует данные выборки об оцениваемом параметре, поэтому он особенно полезен в случае малых выборок. Недостаток метода состоит в том, что он часто требует сложных вычислений.
Рассматривается пример поиска методом максимального правдоподобия оценки параметра $$\lambda$$ экспоненциального распределения случайной величины, для которой функция плотности имеет вид
$$f(x)=\begin{cases} \lambda e^{-\lambda x},x\ge0,\\ 0,x<0.\\ \end{cases}$$К характеристикам экспоненциального распределения относятся математическое ожидание $$M[X]$$ и дисперсия $$D[X]$$:
$$M[X]=\frac{1}{\lambda},$$ $$D[X]=\frac{1}{\lambda^2}.$$Замечание. Во встроенных функциях MATLAB параметром экспоненциального распределения является математическое ожидание случайной величины.
Возможная программная реализация точечной оценки параметра экспоненциального распределения:
clear,clc,close all
%%% Проверка на закрытие диалоговых окон
try
global h11
close(h11);
end
try
global n11
close(n11);
end
try
global v11
close(v11)
end
%% ВВОД ТЕОРЕТИЧЕСКОГО ПАРАМЕТРА РАСПРЕДЕЛЕНИЯ
options.Resize = 'on';
options.WindowStyle = 'modal'; %%'normal';
options.Interpreter = 'tex';
P1 = inputdlg({'\bfВвод параметра:......................................................'},...
sprintf('Теоретическая величина параметра'),1,{'1.23'},options);
%% ПРЕОБРАЗОВАНИЕ К СТРОКОВОЙ ПЕРЕМЕННОЙ
P2 = char(P1);
%% ПРЕОБРАЗОВАНИЕ К ЧИСЛУ С ДВОЙНОЙ ТОЧНОСТЬЮ
P0 = str2num(P2);
%% КОНТРОЛЬ ВВОДА ПАРАМЕТРА
if isempty(P0)
h11 = errordlg('Параметр должен быть действительным положительным числом!','Ошибка ввода');
return
end
%% КОНТРОЛЬ ВВОДА ПАРАМЕТРА
global h11
if P0 <= 0 | ~isreal(P0) | ~isfinite(P0)
h11 = errordlg('Параметр должен быть конечным действительным положительным числом!','Ошибка ввода');
return
end
% ВВОД ЧИСЛА ПРОГОНОВ ПРОГРАММЫ
n1 = inputdlg({'\bfВвод числа прогонов программы..........................'},...
'Число прогонов программы',1,{'10'}, options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛОВОЙ ПЕРЕМЕННОЙ
n = str2num(char(n1));
%% Контроль ввода цифр
if isempty(n)
global n11
n11 = errordlg('Число прогонов программы должно быть целым положительным числом!', 'Ошибка ввода');
return
end
if ~isreal(n) | ~isfinite(n)
global n11
n11 = errordlg('Число прогонов программы должно быть целым положительным числом!', 'Ошибка ввода');
return
end
%% Контроль целого положительного числа циклов
if n <= 0 | n ~= round(n)
global n11
n11 = errordlg('Число прогонов программы должно быть целым положительным числом!', 'Ошибка ввода');
return
end
% ВВОД ЧИСЛА ИЗМЕРЕНИЙ СЛУЧАЙНОЙ ВЕЛИЧИНЫ
v1 = inputdlg({'\bfВвод числа измерений случайной величины...................................'},...
'Число измерений случайной величины',1,{'1234'}, options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛОВОЙ ПЕРЕМЕННОЙ
v = str2num(char(v1));
if isempty(v)
global v11
v11 = errordlg('Число измерений должно быть положительным целым числом!','Ошибка ввода');
return
end
if ~isreal(v) | ~isfinite(v)
global v11
v11 = errordlg('Число измерений должно быть положительным целым числом!','Ошибка ввода');
return
end
% КОНТРОЛЬ ЦЕЛОГО ЧИСЛА ИЗМЕРЕНИЙ
% СЛУЧАЙНОЙ ВЕЛИЧИНЫ
if v <= 0 | v ~= round(v)
global v11
v11 = errordlg('Число измерений должно быть положительным целым числом!','Ошибка ввода');
return
end
syms m
k = 0;
%% ЦИКЛ ЗАДАННОГО ЧИСЛА ПРОГОНОВ ПРОГРАММЫ
for I = 1:n
k=k+1;
%% ФОРМИРОВАНИЕ ЧИСЛА ИЗМЕРЕНИЙ СЛУЧАЙНОЙ ВЕЛИЧИНЫ
t = exprnd(1/P0,v,1);
%% ФОРМИРОВАНИЕ ФУНКЦИИ МАКСИМАЛЬНОГО
%% ПРАВДОПОДОБИЯ
L = m^(length(t))*exp(-m*sum(t));
%% ЛОГАРИФМИЧЕСКАЯ ФУНКЦИЯ МАКСИМАЛЬНОГО
%% ПРАВДОПОДОБИЯ
Lg = log(L);
%% ДИФФЕРЕНЦИРОВАНИЕ
dLg = diff(Lg,m);
%% ПРЕОБРАЗОВАНИЕ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ К СТРОКОВОЙ
dLg = char(dLg);
%% РЕШЕНИЕ УРАВНЕНИЯ ОТНОСИТЕЛЬНО ОЦЕНИВАЕМОГО
%% ПАРАМЕТРА
as1(k) = double(solve(dLg));
%% УСРЕДНЕНИЕ ОЦЕНИВАЕМОГО ПАРАМЕТРА
as(k) = mean(as1);
end
%% ОКОНЧАНИЕ ЦИКЛА ЗАДАННОГО ЧИСЛА ПРОГОНОВ ПРОГРАММЫ
mcp = mean(as);
%% ВЫВОД РЕЗУЛЬТАТОВ В КОМАНДНОЕ ОКНО
fprintf('\n\t%s%g\n \t%s%g\n','Теоретический параметр: ',P0,...
'Оценка параметра: ', mcp)
fprintf('\tОтносительная погрешность: %g%s\n',abs(P0-mcp)/P0*100,'%')
%% ГРАФИЧЕСКИЕ ПОСТРОЕНИЯ
figure(1)
%% set(gcf,'position',[a(3)/90,a(3)/20,a(3)/2.1,a(4)/2])
plot(1:n,as1,'r:','linew',2),grid off,hold on,
plot(1:n,as,'linew',2),
title(sprintf('%s%g','\bfТеоретический параметр\fontsize{12} \lambda\fontsize{10} = ',P0))
xlabel('\bf Количество циклов'),
ylabel('\bf Эмпирический параметр\fontsize{14} \lambda'),
legend('\bf Измеряемая величина\fontsize{12} \lambda',...
'\bf Средняя величина\fontsize{12} \lambda'),
set(gcf,'color','w')
%% ПОСТРОЕНИЕ ТЕОРЕТИЧЕСКОЙ И ЭМПИРИЧЕСКОЙ
%% ФУНКЦИИ ПЛОТНОСТИ
t = 0 : 0.1 : 4;
y1 = P0*exp(-P0*t); %exppdf(t,1/P0); % встроенная функция
y2 = mcp*exp(-mcp*t); %exppdf(t,1/mcp);
figure(2)
plot(t, y1, 'r', 'linew',2),
hold on
plot(t, y2, 'bo', 'linew',2)
grid off
legend('\bf Теоретическая функция плотности (PDF)',...
'\bf Эмпирическая функция плотности'),
text(t(end)/3,2/3*max(max([y1,y2])),['\bf',...
sprintf('Теоретический параметр: %g\n Эмпирический параметр: %g',P0,mcp)])
xlabel('\bf Случайная величина'),
ylabel('\bf Функция плотности'),
set(gcf,'color','w')
Задание 1
№ 1: $$\lambda = 0.011$$ ; № 2: $$\lambda = 0.22$$ ; № 3: $$\lambda = 3.3$$ ; № 4: $$\lambda = 4.4$$ ; № 5: $$\lambda = 55.5$$ ;
№ 6: $$\lambda = 1.66$$ ; № 7: $$\lambda = 2.77$$ ; № 8: $$\lambda = 0.88$$ ; № 9: $$\lambda = 0.99$$ ; № 10: $$\lambda = 1.11$$.
№ 1: n = 200; № 2: n = 300; № 3: n = 400; № 4: n = 500; № 5: n = 600; № 6: n = 700; № 7: n = 800; № 8: n = 900; № 9: n = 1000; № 10: n = 2000;
Число прогонов программы выберите по равномерному закону из следующих интервалов (в соответствии с номером компьютера):
№ 1: (10-19); № 2: (20-29); № 3: (30-39); № 4: (40-49); № 5 (50-59); № 6: (60-69); № 7: (70-79); № 8: (80-89); № 9: (90-99); № 10: (100-110).
Поставим задачу оценки параметра
где $$k=0,1,2,...,n$$, $$C_n^k=\frac{n!}{k!(n-k)!}$$ —
Биномиальный закон распределения (7.10) представляет собой закон распределения числа $$X=k$$ наступлений события $$A$$ (удачного испытания) в $$n$$ независимых испытаниях, в каждом из которых оно может произойти с одной и той же вероятностью $$p$$.
Таким образом, параметром $$\theta$$
Математическое ожидание:
$$M[X]=np,$$дисперсия:
$$D[X]=np(1-p).$$Величину $$(1-p)$$ — неуспех испытания — часто обозначают через $$q$$.
Ряд распределения биномиального закона приводится в таблице 7.1.
| Распределение вероятностей биномиального закона | |||||||
| $$x_{i}$$ | $$0$$ | $$1$$ | $$2$$ | … | $$k$$ | … | $$n$$ |
| $$p_i$$ | $$q^n$$ | $$C_n^1pq^{n-1}$$ | $$C_n^2p^2q^{n-2}$$ | $$C_n^kp^kq^{n-k}$$ | ... | $$p^n$$ | |
Возможная программная реализация оценки параметра
clear,clc,close all
try
global n11
close(n11);
end
try
global k11
close(k11);
end
try
global Nk
close(Nk)
end
try
global r1
close(r1);
end
% CВОЙСТВА ОКНА inputdlg
options.Resize = 'on';
options.WindowStyle = 'normal';
options.Interpreter = 'tex';
% ВВОД ЧИСЛА ИСПЫТАНИЙ
N1 = inputdlg({'\bfВведите число испытаний:.......'},'Число испытаний N',1,{'13'},options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛУ С ДВОЙНОЙ ТОЧНОСТЬЮ
N = str2num(char(N1));
if isempty(N)
global n11
n11 = errordlg('Число испытаний должно быть целым положительным числом','Ошибка ввода N');
return
end
if ~isreal(N) | ~isfinite(N)
global n11
n11 = errordlg('Число испытаний должно быть целым положительным числом','Ошибка ввода N');
return
end
% КОНТРОЛЬ ВВОДА ПАРАМЕТРА N
if prod(size(N))~=1| N < 0 | N ~= round(N)| ~isreal(N)
n11 = errordlg('Число испытаний должно быть целым положительным числом','Ошибка ввода N');
return
end
% ВВОД ЧИСЛА УСПЕШНЫХ ИСПЫТАНИЙ
k1 = inputdlg({'\bfВведите число успешных испытаний:.......'},...
'Число успешных испытаний k',1,{'9'}, options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛУ С ДВОЙНОЙ ТОЧНОСТЬЮ
k = str2num(char(k1));
if isempty(k)
global n11
n11 = errordlg('Число успешных испытаний должно быть целым положительным числом','Ошибка ввода N');
return
end
if ~isreal(k) | ~isfinite(k)
global n11
n11 = errordlg('Число успешных испытаний должно быть целым положительным числом','Ошибка ввода N');
return
end
% КОНТРОЛЬ ВВОДА ПАРАМЕТРА k
if prod(size(k)) ~= 1 | k < 0 | k ~= round(k)
global k11
k11 = errordlg('\bfЧисло успешных испытаний k должно быть положительным целым числом и
меньше общего числа испытаний N','Ошибка ввода числа k');
return
end
% КОНТРОЛЬ ВЕЛИЧИНЫ ЗНАЧЕНИЙ N и k
nums = (N-k+1) : N;
dens = 1 : k;
nums = nums./dens;
c = round(prod(nums));
if c > 1e+015
global Nk
Nk = errordlg('\bfПроизведение N*k велико......','Ошибка');
return
end
syms p
% ФОРМИРОВАНИЕ ФУНКЦИИ
% МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ
% см. help nchoosek
L = nchoosek(N,k)*p^k*(1-p)^(N-k);%m^(length(t))*exp(-m*sum(t));
% ЛОГАРИФМИЧЕСКАЯ ФУНКЦИЯ МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ
Lg = log(L);
% ДИФФЕРЕНЦИРОВАНИЕ
dLg = diff(Lg,p);
% ПРЕОБРАЗОВАНИЕ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ
% К СТРОКОВОЙ
dLg = char(dLg);
% РЕШЕНИЕ УРАВНЕНИЯ ПРАВДОПОДОБИЯ
ap1 = double(solve(dLg));
% ВЫВОД РЕЗУЛЬТАТОВ В КОМАНДНОЕ ОКНО
fprintf('\n\t БИНОМИАЛЬНОЕ РАСПРЕДЕЛЕНИЕ:\n')
fprintf('\t Число испытаний N = %d\n',N)
fprintf('\t Число успешных испытаний k = %d\n',k)
fprintf('\t Оценка параметра биномиального распределения: p = %g\n',ap1)
% РЯД РАСПРЕДЕЛЕНИЯ БИНОМИАЛЬНОГО ЗАКОНА
m = 0;
for J = 0:N
m = m+1;
P(m) = (factorial(N)/(factorial(J)*factorial(N-J)))*ap1^J*(1-ap1)^(N-J);
end
options.Resize = 'on';
options.WindowStyle = 'normal';
options.Interpreter = 'tex';
global r1
CreateStruct.WindowStyle = 'replace';
CreateStruct.Interpreter = 'tex';
r1 = msgbox('\bfРезультаты смотрите в командном окне...........','Help', CreateStruct);
fprintf('\t Максимальное значение вероятности успеха в N испытаниях Pmax = %g\n', max(P))
Pmax = find(P == max(P));
% УСЛОВИЕ РАСПОЛОЖЕНИЯ НАДПИСИ
if Pmax - 1 < N/2
% ДИАГРАММА РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТЕЙ
stem(0:N,P,'filled','r'),
hold on
set(gca,'ygrid','on')
title('\bf Эмпирическое биномиальное распределение')
set(gcf,'color','w'),
ylim([0 1.1*max(P)])
promt = sprintf('p = %g',ap1);
text(mean(0:N)+0.5*mean(0:N),0.95*max(P),['\bf',promt])
elseif Pmax - 1 >= N/2
stem(0:N,P,'filled','r'),
set(gca,'ygrid','on')
title('\bfЭмпирическое биномиальное распределение')
promt = sprintf('p = %g',ap1);
text(N/6,0.95*max(P),['\bf\fontsize{12}',promt])
end
xlabel('\bf Случайная величина')
ylabel('\bf Вероятность')
ylim([0 1.1*max(P)])
set(gcf,'color','w')
Задание 2
№ 1: N = 10, k = 7; № 2: N = 22, k = 12; № 3: N = 23, k = 13; № 4: N = 24, k = 14; № 5: N = 35, k = 25; № 6: N = 36, k = 16; № 7: N = 37, k = 17; № 8: N = 38, k = 28; № 9: N = 29, k = 19; № 10: N = 40, k = 12.
№ 1: N1 = 10, k1 = 7, N2 = 11, k2 = 6; № 2: N1 = 12, k1 = 2, N2 = 13, k2 = 12; № 3: N1 = 13, k = 3, N2 = 3, k2 = 2; № 4: N1 = 14, k1 = 4, N2 = 10, k2 = 8; № 5: N1 = 15, k1 = 5, N2 = 5, k2 = 3; № 6: N1 = 16, k1 = 6, N2 = 16, k2 = 12; № 7: N1 = 17, k1 = 7, N2 = 27, k2 = 17; № 8: N1 = 28, k1 = 18, N2 = 18, k2 = 8; № 9: N1 = 29, k1 = 9, N2 = 19, k2 = 9; № 10: N1 = 30, k1 = 10, N2 = 20, k2 = 11.
Отрицательное
где:
$$n=0,1,2,...;\mbox{ }m=1,2,...;$$
$$C_{n+m-1}^{m-1}=\frac{(n+m-1)!}{(m-1)!n!}$$ —
Распределение (7.13) определяет вероятность того, что потребуется провести $$n$$
Математическое ожидание:
$$M[X]=\frac{m(1-p)}{p},$$дисперсия:
$$D[X]=\frac{m(1-p)}{p^2}.$$В качестве параметра $$\theta$$ отрицательного
Ряд распределения отрицательного
| Распределение вероятностей отрицательного |
|||||||
| $$m=3$$ | |||||||
| $$x_i$$ | 0 | 1 | 2 | ... | $$k$$ | ... | 13 |
| $$p_i$$ | $$p^3$$ | $$3p^3(1-p)$$ | $$6p^3(1-p)^2$$ | ... | $$C_{k+3-1}^{3-1}p^3(1-p)^k$$ | ... | $$105p^3(1-p)^{13}$$ |
Возможная программная реализация оценки параметра отрицательного
clear,clc,close all
% CВОЙСТВА ОКНА inputdlg
options.Resize = 'on';
options.WindowStyle = 'normal';
options.Interpreter = 'tex';
% ВВОД ЧИСЛА ИСПЫТАНИЙ
N1 = inputdlg({'\bfВвод числа испытаний:.............................................'},...
'Число испытаний Бернулли',1,{'23'},options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛУ С ДВОЙНОЙ ТОЧНОСТЬЮ
N = str2num(char(N1));
% ВВОД ЧИСЛА УСПЕШНЫХ ИСПЫТАНИЙ
options.Resize = 'on';
options.WindowStyle = 'normal';
options.Interpreter = 'tex';
m1 = inputdlg({'\bfВвод числа успешных испытаний:................................'},...
'Число успешных испытаний',1,{'12'},options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛУ С ДВОЙНОЙ ТОЧНОСТЬЮ
m = str2num(char(m1));
% КОНТРОЛЬ ВЕЛИЧИНЫ ЗНАЧЕНИЙ N и k
N0 = N + m - 1;
nums = (N0 - m +1):N0;
dens = 1:m ;
nums = nums./dens;
c = round(prod(nums));
if c > 1e+015
Nm = errordlg('Произведение N*m велико.','Ошибка');
pause(1)
break
end
%--------------------------------------------------
%%% Определение символьной переменной
syms p
% ФОРМИРОВАНИЕ ФУНКЦИИ
% МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ ПРИ N = 0
% см. help nchoosek
L0 = nchoosek(0+m-1,0)*p^m*(1-p)^0;
dL0 = diff(L0);
dL0char = char(dL0);
% РЕШЕНИЕ УРАВНЕНИЯ ПРАВДОПОДОБИЯ ПРИ N=0
x10 = solve(dL0char);
x20 = double(x10);
u = find(x20);
if length(u) == length(x20)
x0 = 0;
elseif length(u) < length(x20)
x20(u);
u1 = find(x20 > 0);
x20(u1);
x0 = mean(x20);
end
if N > 0
% ФОРМИРОВАНИЕ ФУНКЦИИ
% МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ ПРИ N>0
k = 0;
for I = 1:N
k = k + 1;
L = nchoosek(I + m-1,m-1)*p^m*(1-p)^I;
% ЛОГАРИФМИЧЕСКАЯ ФУНКЦИЯ
% МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ
Lg = log(L);
% ДИФФЕРЕНЦИРОВАНИЕ
dLg = diff(Lg,p);
% ПРЕОБРАЗОВАНИЕ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ
% К СТРОКОВОЙ
dLg = char(dLg);
% РЕШЕНИЕ УРАВНЕНИЯ ПРАВДОПОДОБИЯ
ap1 = solve(dLg);
ap(k) = double(ap1);
end
app = mean([ap,x0]);
% ВЫВОД РЕЗУЛЬТАТОВ В КОМАНДНОЕ ОКНО
fprintf('\n\t ОТРИЦАТЕЛЬНОЕ БИНОМИАЛЬНОЕ РАСПРЕДЕЛЕНИЕ:\n\t %s%d\n\t %s%d\n',
'Число испытаний Бернулли: N = ', N,'Число успешных испытаний: m = ',m)
fprintf('\n\t Оценка параметра: p = %g\n', app)
% РЯД РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТЕЙ
% ОТРИЦАТЕЛЬНОГО БИНОМИАЛЬНОГО ЗАКОНА
k = 0;
for J = 0:N
k = k+1;
P(k) = (factorial(J+m-1)/(factorial(J)*factorial(m-1)))*app^m*(1-app)^J;
end
fprintf('\t Максимальное значение вероятности при N = %d испытаниях: Pmax = %g\n', N, max(P))
n = find(P == max(P));
fprintf('\t Номер испытания с максимальной вероятностью: n = %d\n', n-1)
r1 = helpdlg('Результаты смотрите в командном окне','Help');
% ДИАГРАММА РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТЕЙ
if n < N/2
h2 = figure(2);
stem(0:N,P,'filled','r'),hold on
set(gca,'ygrid','on')
text(mean(0:N)+0.5*mean(0:N),0.95*max(P),sprintf('%sp = %g','\bf',app))
elseif n >= N/2
h2 = figure(2);
stem(0:N,P,'filled','r'),
set(gca,'ygrid','on')
text(N/20,0.95*max(P),sprintf('%sp = %g','\bf',app))
end
end
title('\bf Эмпирическое отрицательное биномиальное распределение')
xlabel('\bf Случайная величина')
ylabel('\bf Вероятность')
ylim([0 1.1*max(P)]),
Задание 3
№ 1: N = 11, m = 3; № 2: N = 12, m = 4; № 3: N = 13, m = 5; № 4: N = 14, m = 6; № 5: N = 15, m = 16; № 6: N = 26, m = 6; № 7: N = 17, m = 17; № 8: N = 18, m = 8; № 9: N = 19, m = 9; № 10: N = 20, m = 10.
Метод максимального или наибольшего правдоподобия предложен Р. Фишером [6, 13]. С помощью этого метода производится точечная оценка неизвестных параметров априорно известного закона распределения случайной величины.
Рассмотрим сначала суть метода при оценке параметров
Обозначим вероятность того, что в результате испытания величина $$X$$ примет значение $$x_{i}\mbox{ }(i=1,2,...,n)$$, через $$p_i(x_i,\theta)$$.
Определение. Функцией правдоподобия случайной дискретной величины $$X$$ называют функцию аргумента $$\theta$$:
$$L(x_1,x_2,...,x_n;\theta)=p(x_1;\theta)p(x_2;\theta) ...,p(x_n;\theta),$$где $$x_{1},\mbox{ }x_{2},...,x_{n}$$ — фиксированные числа, полученные при измерении случайной величины $$X$$.
В качестве точечной оценки параметра $$\theta$$ принимают такое его значение $$\theta^{*}=\theta^{*}(x_1,x_2,...,x_n)$$, при котором функция правдоподобия достигает максимума. Оценку $$\theta^{*}$$ называют
Для упрощения расчетов в рассмотрение вводится логарифм функции правдоподобия $$lnL$$, которую называют
или
$$\frac{\partial\ln L(\vec x_n;\theta)}{\partial \theta}=0,$$где $$\vec x_n$$ — заданная выборка случайных величин.
Уравнение правдоподобия (7.3) с логарифмической функцией, как правило, более простое относительно функции правдоподобия (7.2).
Если распределение случайной величины $$Х$$ зависит от вектора параметров $$\vec \theta=(\theta_1,\theta_2,...,\theta_r)$$, то уравнение (7.3) заменяется системой уравнений
$$\frac{\partial\ln L(\vec x_n;\theta)}{\partial \theta_k}=0,\qquad k=\overline{1,r}.$$Именно уравнения (7.3) и (7.4) принято называть
Рассмотрим применение метода максимального правдоподобия для оценки параметров непрерывного распределения случайных величин генеральной совокупности $$Х$$.
Пусть $$X$$ — непрерывная случайная величина, которая в результате $$n$$ испытаний приняла значения $$x_{1},\mbox{ }x_{2},...,x_{n}$$. Предполагается, что вид плотности распределения $$f(x)$$ задан, но неизвестен параметр $$\theta$$, которым определяется эта функция.
Определение. Функцией правдоподобия непрерывной случайной величины $$Х$$ называют функцию аргумента $$\theta$$
$$L(x_1,x_2,...,x_n;\theta)=f(x_1;\theta)f(x_2;\theta) ... f(x_n;\theta),$$где $$x_{1},\mbox{ }x_{2},...,x_{n}$$ — фиксированные числа.
Замечание. Если плотность распределения непрерывной случайной величины $$Х$$ определяется двумя неизвестными параметрами $$\theta_1$$ и $$\theta_2$$, то функция правдоподобия является функцией двух независимых аргументов $$\theta_1$$ и $$\theta_2$$:
$$L(x_1,x_2,...,x_n;\theta_1,\theta_2)=f(x_1;\theta_1,\theta_2)f(x_2;\theta_1,\theta_2) ... f(x_n;\theta_1,\theta_2),$$Как для дискретных распределений, так и для непрерывных точку максимума логарифмической функции распределения $$lnL$$ аргумента $$\theta$$ можно искать через необходимое условие
Найденную точку максимума $$\theta^{*}$$ принимают в качестве оценки максимального правдоподобия параметра $$\theta$$.
Метод максимального правдоподобия имеет ряд достоинств: его оценки, вообще говоря, состоятельны (но они могут быть смещенными), распределены асимптотически нормально (при больших значениях $$n$$ приближенно нормально) и имеют наименьшую дисперсию по сравнению с другими асимптотически нормальными оценками; если для оцениваемого параметра $$\theta$$ существует эффективная оценка $$\theta^{*}$$, то уравнение правдоподобия имеет единственное решение $$\theta^{*}$$ ; этот метод наиболее полно использует данные выборки об оцениваемом параметре, поэтому он особенно полезен в случае малых выборок. Недостаток метода состоит в том, что он часто требует сложных вычислений.
Рассматривается пример поиска методом максимального правдоподобия оценки параметра $$\lambda$$ экспоненциального распределения случайной величины, для которой функция плотности имеет вид
$$f(x)=\begin{cases} \lambda e^{-\lambda x},x\ge0,\\ 0,x<0.\\ \end{cases}$$К характеристикам экспоненциального распределения относятся математическое ожидание $$M[X]$$ и дисперсия $$D[X]$$:
$$M[X]=\frac{1}{\lambda},$$ $$D[X]=\frac{1}{\lambda^2}.$$Замечание. Во встроенных функциях MATLAB параметром экспоненциального распределения является математическое ожидание случайной величины.
Возможная программная реализация точечной оценки параметра экспоненциального распределения:
clear,clc,close all
%%% Проверка на закрытие диалоговых окон
try
global h11
close(h11);
end
try
global n11
close(n11);
end
try
global v11
close(v11)
end
%% ВВОД ТЕОРЕТИЧЕСКОГО ПАРАМЕТРА РАСПРЕДЕЛЕНИЯ
options.Resize = 'on';
options.WindowStyle = 'modal'; %%'normal';
options.Interpreter = 'tex';
P1 = inputdlg({'\bfВвод параметра:......................................................'},...
sprintf('Теоретическая величина параметра'),1,{'1.23'},options);
%% ПРЕОБРАЗОВАНИЕ К СТРОКОВОЙ ПЕРЕМЕННОЙ
P2 = char(P1);
%% ПРЕОБРАЗОВАНИЕ К ЧИСЛУ С ДВОЙНОЙ ТОЧНОСТЬЮ
P0 = str2num(P2);
%% КОНТРОЛЬ ВВОДА ПАРАМЕТРА
if isempty(P0)
h11 = errordlg('Параметр должен быть действительным положительным числом!','Ошибка ввода');
return
end
%% КОНТРОЛЬ ВВОДА ПАРАМЕТРА
global h11
if P0 <= 0 | ~isreal(P0) | ~isfinite(P0)
h11 = errordlg('Параметр должен быть конечным действительным положительным числом!','Ошибка ввода');
return
end
% ВВОД ЧИСЛА ПРОГОНОВ ПРОГРАММЫ
n1 = inputdlg({'\bfВвод числа прогонов программы..........................'},...
'Число прогонов программы',1,{'10'}, options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛОВОЙ ПЕРЕМЕННОЙ
n = str2num(char(n1));
%% Контроль ввода цифр
if isempty(n)
global n11
n11 = errordlg('Число прогонов программы должно быть целым положительным числом!', 'Ошибка ввода');
return
end
if ~isreal(n) | ~isfinite(n)
global n11
n11 = errordlg('Число прогонов программы должно быть целым положительным числом!', 'Ошибка ввода');
return
end
%% Контроль целого положительного числа циклов
if n <= 0 | n ~= round(n)
global n11
n11 = errordlg('Число прогонов программы должно быть целым положительным числом!', 'Ошибка ввода');
return
end
% ВВОД ЧИСЛА ИЗМЕРЕНИЙ СЛУЧАЙНОЙ ВЕЛИЧИНЫ
v1 = inputdlg({'\bfВвод числа измерений случайной величины...................................'},...
'Число измерений случайной величины',1,{'1234'}, options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛОВОЙ ПЕРЕМЕННОЙ
v = str2num(char(v1));
if isempty(v)
global v11
v11 = errordlg('Число измерений должно быть положительным целым числом!','Ошибка ввода');
return
end
if ~isreal(v) | ~isfinite(v)
global v11
v11 = errordlg('Число измерений должно быть положительным целым числом!','Ошибка ввода');
return
end
% КОНТРОЛЬ ЦЕЛОГО ЧИСЛА ИЗМЕРЕНИЙ
% СЛУЧАЙНОЙ ВЕЛИЧИНЫ
if v <= 0 | v ~= round(v)
global v11
v11 = errordlg('Число измерений должно быть положительным целым числом!','Ошибка ввода');
return
end
syms m
k = 0;
%% ЦИКЛ ЗАДАННОГО ЧИСЛА ПРОГОНОВ ПРОГРАММЫ
for I = 1:n
k=k+1;
%% ФОРМИРОВАНИЕ ЧИСЛА ИЗМЕРЕНИЙ СЛУЧАЙНОЙ ВЕЛИЧИНЫ
t = exprnd(1/P0,v,1);
%% ФОРМИРОВАНИЕ ФУНКЦИИ МАКСИМАЛЬНОГО
%% ПРАВДОПОДОБИЯ
L = m^(length(t))*exp(-m*sum(t));
%% ЛОГАРИФМИЧЕСКАЯ ФУНКЦИЯ МАКСИМАЛЬНОГО
%% ПРАВДОПОДОБИЯ
Lg = log(L);
%% ДИФФЕРЕНЦИРОВАНИЕ
dLg = diff(Lg,m);
%% ПРЕОБРАЗОВАНИЕ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ К СТРОКОВОЙ
dLg = char(dLg);
%% РЕШЕНИЕ УРАВНЕНИЯ ОТНОСИТЕЛЬНО ОЦЕНИВАЕМОГО
%% ПАРАМЕТРА
as1(k) = double(solve(dLg));
%% УСРЕДНЕНИЕ ОЦЕНИВАЕМОГО ПАРАМЕТРА
as(k) = mean(as1);
end
%% ОКОНЧАНИЕ ЦИКЛА ЗАДАННОГО ЧИСЛА ПРОГОНОВ ПРОГРАММЫ
mcp = mean(as);
%% ВЫВОД РЕЗУЛЬТАТОВ В КОМАНДНОЕ ОКНО
fprintf('\n\t%s%g\n \t%s%g\n','Теоретический параметр: ',P0,...
'Оценка параметра: ', mcp)
fprintf('\tОтносительная погрешность: %g%s\n',abs(P0-mcp)/P0*100,'%')
%% ГРАФИЧЕСКИЕ ПОСТРОЕНИЯ
figure(1)
%% set(gcf,'position',[a(3)/90,a(3)/20,a(3)/2.1,a(4)/2])
plot(1:n,as1,'r:','linew',2),grid off,hold on,
plot(1:n,as,'linew',2),
title(sprintf('%s%g','\bfТеоретический параметр\fontsize{12} \lambda\fontsize{10} = ',P0))
xlabel('\bf Количество циклов'),
ylabel('\bf Эмпирический параметр\fontsize{14} \lambda'),
legend('\bf Измеряемая величина\fontsize{12} \lambda',...
'\bf Средняя величина\fontsize{12} \lambda'),
set(gcf,'color','w')
%% ПОСТРОЕНИЕ ТЕОРЕТИЧЕСКОЙ И ЭМПИРИЧЕСКОЙ
%% ФУНКЦИИ ПЛОТНОСТИ
t = 0 : 0.1 : 4;
y1 = P0*exp(-P0*t); %exppdf(t,1/P0); % встроенная функция
y2 = mcp*exp(-mcp*t); %exppdf(t,1/mcp);
figure(2)
plot(t, y1, 'r', 'linew',2),
hold on
plot(t, y2, 'bo', 'linew',2)
grid off
legend('\bf Теоретическая функция плотности (PDF)',...
'\bf Эмпирическая функция плотности'),
text(t(end)/3,2/3*max(max([y1,y2])),['\bf',...
sprintf('Теоретический параметр: %g\n Эмпирический параметр: %g',P0,mcp)])
xlabel('\bf Случайная величина'),
ylabel('\bf Функция плотности'),
set(gcf,'color','w')
Задание 1
№ 1: $$\lambda = 0.011$$ ; № 2: $$\lambda = 0.22$$ ; № 3: $$\lambda = 3.3$$ ; № 4: $$\lambda = 4.4$$ ; № 5: $$\lambda = 55.5$$ ;
№ 6: $$\lambda = 1.66$$ ; № 7: $$\lambda = 2.77$$ ; № 8: $$\lambda = 0.88$$ ; № 9: $$\lambda = 0.99$$ ; № 10: $$\lambda = 1.11$$.
№ 1: n = 200; № 2: n = 300; № 3: n = 400; № 4: n = 500; № 5: n = 600; № 6: n = 700; № 7: n = 800; № 8: n = 900; № 9: n = 1000; № 10: n = 2000;
Число прогонов программы выберите по равномерному закону из следующих интервалов (в соответствии с номером компьютера):
№ 1: (10-19); № 2: (20-29); № 3: (30-39); № 4: (40-49); № 5 (50-59); № 6: (60-69); № 7: (70-79); № 8: (80-89); № 9: (90-99); № 10: (100-110).
Поставим задачу оценки параметра
где $$k=0,1,2,...,n$$, $$C_n^k=\frac{n!}{k!(n-k)!}$$ —
Биномиальный закон распределения (7.10) представляет собой закон распределения числа $$X=k$$ наступлений события $$A$$ (удачного испытания) в $$n$$ независимых испытаниях, в каждом из которых оно может произойти с одной и той же вероятностью $$p$$.
Таким образом, параметром $$\theta$$
Математическое ожидание:
$$M[X]=np,$$дисперсия:
$$D[X]=np(1-p).$$Величину $$(1-p)$$ — неуспех испытания — часто обозначают через $$q$$.
Ряд распределения биномиального закона приводится в таблице 7.1.
| Распределение вероятностей биномиального закона | |||||||
| $$x_{i}$$ | $$0$$ | $$1$$ | $$2$$ | … | $$k$$ | … | $$n$$ |
| $$p_i$$ | $$q^n$$ | $$C_n^1pq^{n-1}$$ | $$C_n^2p^2q^{n-2}$$ | $$C_n^kp^kq^{n-k}$$ | ... | $$p^n$$ | |
Возможная программная реализация оценки параметра
clear,clc,close all
try
global n11
close(n11);
end
try
global k11
close(k11);
end
try
global Nk
close(Nk)
end
try
global r1
close(r1);
end
% CВОЙСТВА ОКНА inputdlg
options.Resize = 'on';
options.WindowStyle = 'normal';
options.Interpreter = 'tex';
% ВВОД ЧИСЛА ИСПЫТАНИЙ
N1 = inputdlg({'\bfВведите число испытаний:.......'},'Число испытаний N',1,{'13'},options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛУ С ДВОЙНОЙ ТОЧНОСТЬЮ
N = str2num(char(N1));
if isempty(N)
global n11
n11 = errordlg('Число испытаний должно быть целым положительным числом','Ошибка ввода N');
return
end
if ~isreal(N) | ~isfinite(N)
global n11
n11 = errordlg('Число испытаний должно быть целым положительным числом','Ошибка ввода N');
return
end
% КОНТРОЛЬ ВВОДА ПАРАМЕТРА N
if prod(size(N))~=1| N < 0 | N ~= round(N)| ~isreal(N)
n11 = errordlg('Число испытаний должно быть целым положительным числом','Ошибка ввода N');
return
end
% ВВОД ЧИСЛА УСПЕШНЫХ ИСПЫТАНИЙ
k1 = inputdlg({'\bfВведите число успешных испытаний:.......'},...
'Число успешных испытаний k',1,{'9'}, options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛУ С ДВОЙНОЙ ТОЧНОСТЬЮ
k = str2num(char(k1));
if isempty(k)
global n11
n11 = errordlg('Число успешных испытаний должно быть целым положительным числом','Ошибка ввода N');
return
end
if ~isreal(k) | ~isfinite(k)
global n11
n11 = errordlg('Число успешных испытаний должно быть целым положительным числом','Ошибка ввода N');
return
end
% КОНТРОЛЬ ВВОДА ПАРАМЕТРА k
if prod(size(k)) ~= 1 | k < 0 | k ~= round(k)
global k11
k11 = errordlg('\bfЧисло успешных испытаний k должно быть положительным целым числом и
меньше общего числа испытаний N','Ошибка ввода числа k');
return
end
% КОНТРОЛЬ ВЕЛИЧИНЫ ЗНАЧЕНИЙ N и k
nums = (N-k+1) : N;
dens = 1 : k;
nums = nums./dens;
c = round(prod(nums));
if c > 1e+015
global Nk
Nk = errordlg('\bfПроизведение N*k велико......','Ошибка');
return
end
syms p
% ФОРМИРОВАНИЕ ФУНКЦИИ
% МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ
% см. help nchoosek
L = nchoosek(N,k)*p^k*(1-p)^(N-k);%m^(length(t))*exp(-m*sum(t));
% ЛОГАРИФМИЧЕСКАЯ ФУНКЦИЯ МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ
Lg = log(L);
% ДИФФЕРЕНЦИРОВАНИЕ
dLg = diff(Lg,p);
% ПРЕОБРАЗОВАНИЕ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ
% К СТРОКОВОЙ
dLg = char(dLg);
% РЕШЕНИЕ УРАВНЕНИЯ ПРАВДОПОДОБИЯ
ap1 = double(solve(dLg));
% ВЫВОД РЕЗУЛЬТАТОВ В КОМАНДНОЕ ОКНО
fprintf('\n\t БИНОМИАЛЬНОЕ РАСПРЕДЕЛЕНИЕ:\n')
fprintf('\t Число испытаний N = %d\n',N)
fprintf('\t Число успешных испытаний k = %d\n',k)
fprintf('\t Оценка параметра биномиального распределения: p = %g\n',ap1)
% РЯД РАСПРЕДЕЛЕНИЯ БИНОМИАЛЬНОГО ЗАКОНА
m = 0;
for J = 0:N
m = m+1;
P(m) = (factorial(N)/(factorial(J)*factorial(N-J)))*ap1^J*(1-ap1)^(N-J);
end
options.Resize = 'on';
options.WindowStyle = 'normal';
options.Interpreter = 'tex';
global r1
CreateStruct.WindowStyle = 'replace';
CreateStruct.Interpreter = 'tex';
r1 = msgbox('\bfРезультаты смотрите в командном окне...........','Help', CreateStruct);
fprintf('\t Максимальное значение вероятности успеха в N испытаниях Pmax = %g\n', max(P))
Pmax = find(P == max(P));
% УСЛОВИЕ РАСПОЛОЖЕНИЯ НАДПИСИ
if Pmax - 1 < N/2
% ДИАГРАММА РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТЕЙ
stem(0:N,P,'filled','r'),
hold on
set(gca,'ygrid','on')
title('\bf Эмпирическое биномиальное распределение')
set(gcf,'color','w'),
ylim([0 1.1*max(P)])
promt = sprintf('p = %g',ap1);
text(mean(0:N)+0.5*mean(0:N),0.95*max(P),['\bf',promt])
elseif Pmax - 1 >= N/2
stem(0:N,P,'filled','r'),
set(gca,'ygrid','on')
title('\bfЭмпирическое биномиальное распределение')
promt = sprintf('p = %g',ap1);
text(N/6,0.95*max(P),['\bf\fontsize{12}',promt])
end
xlabel('\bf Случайная величина')
ylabel('\bf Вероятность')
ylim([0 1.1*max(P)])
set(gcf,'color','w')
Задание 2
№ 1: N = 10, k = 7; № 2: N = 22, k = 12; № 3: N = 23, k = 13; № 4: N = 24, k = 14; № 5: N = 35, k = 25; № 6: N = 36, k = 16; № 7: N = 37, k = 17; № 8: N = 38, k = 28; № 9: N = 29, k = 19; № 10: N = 40, k = 12.
№ 1: N1 = 10, k1 = 7, N2 = 11, k2 = 6; № 2: N1 = 12, k1 = 2, N2 = 13, k2 = 12; № 3: N1 = 13, k = 3, N2 = 3, k2 = 2; № 4: N1 = 14, k1 = 4, N2 = 10, k2 = 8; № 5: N1 = 15, k1 = 5, N2 = 5, k2 = 3; № 6: N1 = 16, k1 = 6, N2 = 16, k2 = 12; № 7: N1 = 17, k1 = 7, N2 = 27, k2 = 17; № 8: N1 = 28, k1 = 18, N2 = 18, k2 = 8; № 9: N1 = 29, k1 = 9, N2 = 19, k2 = 9; № 10: N1 = 30, k1 = 10, N2 = 20, k2 = 11.
Отрицательное
где:
$$n=0,1,2,...;\mbox{ }m=1,2,...;$$
$$C_{n+m-1}^{m-1}=\frac{(n+m-1)!}{(m-1)!n!}$$ —
Распределение (7.13) определяет вероятность того, что потребуется провести $$n$$
Математическое ожидание:
$$M[X]=\frac{m(1-p)}{p},$$дисперсия:
$$D[X]=\frac{m(1-p)}{p^2}.$$В качестве параметра $$\theta$$ отрицательного
Ряд распределения отрицательного
| Распределение вероятностей отрицательного |
|||||||
| $$m=3$$ | |||||||
| $$x_i$$ | 0 | 1 | 2 | ... | $$k$$ | ... | 13 |
| $$p_i$$ | $$p^3$$ | $$3p^3(1-p)$$ | $$6p^3(1-p)^2$$ | ... | $$C_{k+3-1}^{3-1}p^3(1-p)^k$$ | ... | $$105p^3(1-p)^{13}$$ |
Возможная программная реализация оценки параметра отрицательного
clear,clc,close all
% CВОЙСТВА ОКНА inputdlg
options.Resize = 'on';
options.WindowStyle = 'normal';
options.Interpreter = 'tex';
% ВВОД ЧИСЛА ИСПЫТАНИЙ
N1 = inputdlg({'\bfВвод числа испытаний:.............................................'},...
'Число испытаний Бернулли',1,{'23'},options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛУ С ДВОЙНОЙ ТОЧНОСТЬЮ
N = str2num(char(N1));
% ВВОД ЧИСЛА УСПЕШНЫХ ИСПЫТАНИЙ
options.Resize = 'on';
options.WindowStyle = 'normal';
options.Interpreter = 'tex';
m1 = inputdlg({'\bfВвод числа успешных испытаний:................................'},...
'Число успешных испытаний',1,{'12'},options);
% ПРЕОБРАЗОВАНИЕ К ЧИСЛУ С ДВОЙНОЙ ТОЧНОСТЬЮ
m = str2num(char(m1));
% КОНТРОЛЬ ВЕЛИЧИНЫ ЗНАЧЕНИЙ N и k
N0 = N + m - 1;
nums = (N0 - m +1):N0;
dens = 1:m ;
nums = nums./dens;
c = round(prod(nums));
if c > 1e+015
Nm = errordlg('Произведение N*m велико.','Ошибка');
pause(1)
break
end
%--------------------------------------------------
%%% Определение символьной переменной
syms p
% ФОРМИРОВАНИЕ ФУНКЦИИ
% МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ ПРИ N = 0
% см. help nchoosek
L0 = nchoosek(0+m-1,0)*p^m*(1-p)^0;
dL0 = diff(L0);
dL0char = char(dL0);
% РЕШЕНИЕ УРАВНЕНИЯ ПРАВДОПОДОБИЯ ПРИ N=0
x10 = solve(dL0char);
x20 = double(x10);
u = find(x20);
if length(u) == length(x20)
x0 = 0;
elseif length(u) < length(x20)
x20(u);
u1 = find(x20 > 0);
x20(u1);
x0 = mean(x20);
end
if N > 0
% ФОРМИРОВАНИЕ ФУНКЦИИ
% МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ ПРИ N>0
k = 0;
for I = 1:N
k = k + 1;
L = nchoosek(I + m-1,m-1)*p^m*(1-p)^I;
% ЛОГАРИФМИЧЕСКАЯ ФУНКЦИЯ
% МАКСИМАЛЬНОГО ПРАВДОПОДОБИЯ
Lg = log(L);
% ДИФФЕРЕНЦИРОВАНИЕ
dLg = diff(Lg,p);
% ПРЕОБРАЗОВАНИЕ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ
% К СТРОКОВОЙ
dLg = char(dLg);
% РЕШЕНИЕ УРАВНЕНИЯ ПРАВДОПОДОБИЯ
ap1 = solve(dLg);
ap(k) = double(ap1);
end
app = mean([ap,x0]);
% ВЫВОД РЕЗУЛЬТАТОВ В КОМАНДНОЕ ОКНО
fprintf('\n\t ОТРИЦАТЕЛЬНОЕ БИНОМИАЛЬНОЕ РАСПРЕДЕЛЕНИЕ:\n\t %s%d\n\t %s%d\n',
'Число испытаний Бернулли: N = ', N,'Число успешных испытаний: m = ',m)
fprintf('\n\t Оценка параметра: p = %g\n', app)
% РЯД РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТЕЙ
% ОТРИЦАТЕЛЬНОГО БИНОМИАЛЬНОГО ЗАКОНА
k = 0;
for J = 0:N
k = k+1;
P(k) = (factorial(J+m-1)/(factorial(J)*factorial(m-1)))*app^m*(1-app)^J;
end
fprintf('\t Максимальное значение вероятности при N = %d испытаниях: Pmax = %g\n', N, max(P))
n = find(P == max(P));
fprintf('\t Номер испытания с максимальной вероятностью: n = %d\n', n-1)
r1 = helpdlg('Результаты смотрите в командном окне','Help');
% ДИАГРАММА РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТЕЙ
if n < N/2
h2 = figure(2);
stem(0:N,P,'filled','r'),hold on
set(gca,'ygrid','on')
text(mean(0:N)+0.5*mean(0:N),0.95*max(P),sprintf('%sp = %g','\bf',app))
elseif n >= N/2
h2 = figure(2);
stem(0:N,P,'filled','r'),
set(gca,'ygrid','on')
text(N/20,0.95*max(P),sprintf('%sp = %g','\bf',app))
end
end
title('\bf Эмпирическое отрицательное биномиальное распределение')
xlabel('\bf Случайная величина')
ylabel('\bf Вероятность')
ylim([0 1.1*max(P)]),
Задание 3
№ 1: N = 11, m = 3; № 2: N = 12, m = 4; № 3: N = 13, m = 5; № 4: N = 14, m = 6; № 5: N = 15, m = 16; № 6: N = 26, m = 6; № 7: N = 17, m = 17; № 8: N = 18, m = 8; № 9: N = 19, m = 9; № 10: N = 20, m = 10.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.