Моделирование систем

Метод максимального правдоподобия точечной оценки неизвестных параметров вероятностных распределений

Разбить на страницы
Показывать лекцию целиком

Теоретическая часть

Метод максимального или наибольшего правдоподобия предложен Р. Фишером [6, 13]. С помощью этого метода производится точечная оценка неизвестных параметров априорно известного закона распределения случайной величины.

Рассмотрим сначала суть метода при оценке параметров дискретного распределения случайной величины [6].

Обозначим вероятность того, что в результате испытания величина $$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$$, которую называют логарифмической функцией правдоподобия. Функции $$L$$ и $$lnL$$ достигают максимума при одном и том же значении своего аргумента, поэтому вместо отыскания максимума функции $$L$$ ищут максимум функции $$lnL$$. Записывая необходимое условие экстремума функции правдоподобия в случае скалярного параметра, получаем уравнения правдоподобия

$$\frac{\partial L(\vec x_n;\theta)}{\partial \theta}=0,$$

или

$$\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) принято называть уравнениями правдоподобия [13]. Во многих случаях решение системы (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$$ распределения непрерывной случайной величины ищут так же, как в случае дискретной величины.

Замечание. Если плотность распределения непрерывной случайной величины $$Х$$ определяется двумя неизвестными параметрами $$\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$$ можно искать через необходимое условие экстремума:

  • найти производную $$\frac{d\ln L}{d \theta}$$ ;
  • приравнять производную нулю и найти критическую точку — корень полученного уравнения (его называют уравнением правдоподобия);
  • найти вторую производную $$\frac{d^2\ln L}{d \theta^2}$$ ; если вторая производная при $$\theta=\theta^{*}$$ отрицательна, то $$\theta^{*}$$ – точка максимума [6].
  • Найденную точку максимума $$\theta^{*}$$ принимают в качестве оценки максимального правдоподобия параметра $$\theta$$.

    Метод максимального правдоподобия имеет ряд достоинств: его оценки, вообще говоря, состоятельны (но они могут быть смещенными), распределены асимптотически нормально (при больших значениях $$n$$ приближенно нормально) и имеют наименьшую дисперсию по сравнению с другими асимптотически нормальными оценками; если для оцениваемого параметра $$\theta$$ существует эффективная оценка $$\theta^{*}$$, то уравнение правдоподобия имеет единственное решение $$\theta^{*}$$ ; этот метод наиболее полно использует данные выборки об оцениваемом параметре, поэтому он особенно полезен в случае малых выборок. Недостаток метода состоит в том, что он часто требует сложных вычислений.

    Практическая часть

    1. Оценка параметра экспоненциального распределения

    Рассматривается пример поиска методом максимального правдоподобия оценки параметра $$\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

  • Видоизмените программу так, чтобы параметры задачи вводились в одном диалоговом окне $$inputdlg$$.
  • В соответствии с номером компьютера задайте следующие значения параметра:

    № 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).
  • Проверьте, доставляет ли максимум функции правдоподобия найденная оценка параметра экспоненциального распределения?
  • Напишите программу по оценке параметров нормального закона по методу максимального правдоподобия.
  • 2. Оценка параметра биномиального распределения

    Поставим задачу оценки параметра биномиального распределения методом максимального правдоподобия.

    Биномиальное распределение описывает схему Бернулли испытания случайной дискретной величины в соответствии со следующей формулой (формула Бернулли):

    $$P_n(X=k)=C_n^kp^k(1-p)^{n-k},$$

    где $$k=0,1,2,...,n$$, $$C_n^k=\frac{n!}{k!(n-k)!}$$ — биномиальные коэффициенты.

    Биномиальный закон распределения (7.10) представляет собой закон распределения числа $$X=k$$ наступлений события $$A$$ (удачного испытания) в $$n$$ независимых испытаниях, в каждом из которых оно может произойти с одной и той же вероятностью $$p$$.

    Таким образом, параметром $$\theta$$ биномиального распределения выступает вероятность $$p$$ наступления события $$A$$.

    Характеристики биномиального распределения

    Математическое ожидание:

    $$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

  • В соответствии с номером компьютера задайте следующие значения числа испытаний $$N$$ и число успешных испытаний $$k$$:
    № 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.
  • Напишите программу оценки по методу максимального правдоподобия параметра биномиального распределения, если в $$N1$$ независимых испытаниях событие $$A$$ появилось $$k1$$ раз и в $$N2$$ независимых испытаниях событие $$A$$ появилось $$k2$$ раз. Число испытаний и число успешных событий принимайте в зависимости от номера компьютера:
    № 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.
  • 3. Оценка параметра отрицательного биномиального распределения

    Отрицательное биномиальное распределение носит еще название распределения Паскаля [18] и относится к дискретным распределениям. Распределение вероятностей определяется формулой

    $$P\{X=n\}=C_{n+m-1}^{m-1}p^m(1-p)^n,$$

    где:

    $$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$$ успешных исходов.

    Характеристики отрицательного биномиального распределения

    Математическое ожидание:

    $$M[X]=\frac{m(1-p)}{p},$$

    дисперсия:

    $$D[X]=\frac{m(1-p)}{p^2}.$$

    В качестве параметра $$\theta$$ отрицательного биномиального распределения выступает вероятность успеха $$p$$.

    Ряд распределения отрицательного биномиального распределения приводится в таблице 7.2 для случая 13 испытаний и 3 успешных испытаний.

    Распределение вероятностей отрицательного биномиального распределения
    $$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.
  • Постройте график изменения максимальной вероятности отрицательного биномиального распределения в зависимости от числа успешных испытаний ( $$m$$ ) при заданном числе испытаний ( $$N$$ ) в соответствии с номером компьютера (см. п. 1). Диапазон изменения числа успешных испытаний принимайте от 1 до 10.
  • Проверьте диаграмму распределения вероятностей отрицательного биномиального распределения с помощью функции $$disttool$$ с выбором $$Negative Binomal$$ для заданного числа испытаний и произведенной оценки параметра.
  • Постройте график распределения вероятностей отрицательного биномиального распределения на основе функции $$nbinpdf$$.
  • Контрольные вопросы

  • Что называется точечной оценкой параметров?
  • В каких случаях применяется отрицательное биноминальное распределение?
  • Что называется логарифмической функцией правдоподобия?
  • Что называется уравнением правдоподобия?
  • Что называется состоятельной оценкой параметра вероятностного распределения?
  • В каких случаях оценка параметра вероятностного распределения будет несмещенной?
  • Страницы:

    Теоретическая часть

    Метод максимального или наибольшего правдоподобия предложен Р. Фишером [6, 13]. С помощью этого метода производится точечная оценка неизвестных параметров априорно известного закона распределения случайной величины.

    Рассмотрим сначала суть метода при оценке параметров дискретного распределения случайной величины [6].

    Обозначим вероятность того, что в результате испытания величина $$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$$, которую называют логарифмической функцией правдоподобия. Функции $$L$$ и $$lnL$$ достигают максимума при одном и том же значении своего аргумента, поэтому вместо отыскания максимума функции $$L$$ ищут максимум функции $$lnL$$. Записывая необходимое условие экстремума функции правдоподобия в случае скалярного параметра, получаем уравнения правдоподобия

    $$\frac{\partial L(\vec x_n;\theta)}{\partial \theta}=0,$$

    или

    $$\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) принято называть уравнениями правдоподобия [13]. Во многих случаях решение системы (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$$ распределения непрерывной случайной величины ищут так же, как в случае дискретной величины.

    Замечание. Если плотность распределения непрерывной случайной величины $$Х$$ определяется двумя неизвестными параметрами $$\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$$ можно искать через необходимое условие экстремума:

  • найти производную $$\frac{d\ln L}{d \theta}$$ ;
  • приравнять производную нулю и найти критическую точку — корень полученного уравнения (его называют уравнением правдоподобия);
  • найти вторую производную $$\frac{d^2\ln L}{d \theta^2}$$ ; если вторая производная при $$\theta=\theta^{*}$$ отрицательна, то $$\theta^{*}$$ – точка максимума [6].
  • Найденную точку максимума $$\theta^{*}$$ принимают в качестве оценки максимального правдоподобия параметра $$\theta$$.

    Метод максимального правдоподобия имеет ряд достоинств: его оценки, вообще говоря, состоятельны (но они могут быть смещенными), распределены асимптотически нормально (при больших значениях $$n$$ приближенно нормально) и имеют наименьшую дисперсию по сравнению с другими асимптотически нормальными оценками; если для оцениваемого параметра $$\theta$$ существует эффективная оценка $$\theta^{*}$$, то уравнение правдоподобия имеет единственное решение $$\theta^{*}$$ ; этот метод наиболее полно использует данные выборки об оцениваемом параметре, поэтому он особенно полезен в случае малых выборок. Недостаток метода состоит в том, что он часто требует сложных вычислений.

    Практическая часть

    1. Оценка параметра экспоненциального распределения

    Рассматривается пример поиска методом максимального правдоподобия оценки параметра $$\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

  • Видоизмените программу так, чтобы параметры задачи вводились в одном диалоговом окне $$inputdlg$$.
  • В соответствии с номером компьютера задайте следующие значения параметра:

    № 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).
  • Проверьте, доставляет ли максимум функции правдоподобия найденная оценка параметра экспоненциального распределения?
  • Напишите программу по оценке параметров нормального закона по методу максимального правдоподобия.
  • 2. Оценка параметра биномиального распределения

    Поставим задачу оценки параметра биномиального распределения методом максимального правдоподобия.

    Биномиальное распределение описывает схему Бернулли испытания случайной дискретной величины в соответствии со следующей формулой (формула Бернулли):

    $$P_n(X=k)=C_n^kp^k(1-p)^{n-k},$$

    где $$k=0,1,2,...,n$$, $$C_n^k=\frac{n!}{k!(n-k)!}$$ — биномиальные коэффициенты.

    Биномиальный закон распределения (7.10) представляет собой закон распределения числа $$X=k$$ наступлений события $$A$$ (удачного испытания) в $$n$$ независимых испытаниях, в каждом из которых оно может произойти с одной и той же вероятностью $$p$$.

    Таким образом, параметром $$\theta$$ биномиального распределения выступает вероятность $$p$$ наступления события $$A$$.

    Характеристики биномиального распределения

    Математическое ожидание:

    $$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

  • В соответствии с номером компьютера задайте следующие значения числа испытаний $$N$$ и число успешных испытаний $$k$$:
    № 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.
  • Напишите программу оценки по методу максимального правдоподобия параметра биномиального распределения, если в $$N1$$ независимых испытаниях событие $$A$$ появилось $$k1$$ раз и в $$N2$$ независимых испытаниях событие $$A$$ появилось $$k2$$ раз. Число испытаний и число успешных событий принимайте в зависимости от номера компьютера:
    № 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.
  • 3. Оценка параметра отрицательного биномиального распределения

    Отрицательное биномиальное распределение носит еще название распределения Паскаля [18] и относится к дискретным распределениям. Распределение вероятностей определяется формулой

    $$P\{X=n\}=C_{n+m-1}^{m-1}p^m(1-p)^n,$$

    где:

    $$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$$ успешных исходов.

    Характеристики отрицательного биномиального распределения

    Математическое ожидание:

    $$M[X]=\frac{m(1-p)}{p},$$

    дисперсия:

    $$D[X]=\frac{m(1-p)}{p^2}.$$

    В качестве параметра $$\theta$$ отрицательного биномиального распределения выступает вероятность успеха $$p$$.

    Ряд распределения отрицательного биномиального распределения приводится в таблице 7.2 для случая 13 испытаний и 3 успешных испытаний.

    Распределение вероятностей отрицательного биномиального распределения
    $$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.
  • Постройте график изменения максимальной вероятности отрицательного биномиального распределения в зависимости от числа успешных испытаний ( $$m$$ ) при заданном числе испытаний ( $$N$$ ) в соответствии с номером компьютера (см. п. 1). Диапазон изменения числа успешных испытаний принимайте от 1 до 10.
  • Проверьте диаграмму распределения вероятностей отрицательного биномиального распределения с помощью функции $$disttool$$ с выбором $$Negative Binomal$$ для заданного числа испытаний и произведенной оценки параметра.
  • Постройте график распределения вероятностей отрицательного биномиального распределения на основе функции $$nbinpdf$$.
  • Контрольные вопросы

  • Что называется точечной оценкой параметров?
  • В каких случаях применяется отрицательное биноминальное распределение?
  • Что называется логарифмической функцией правдоподобия?
  • Что называется уравнением правдоподобия?
  • Что называется состоятельной оценкой параметра вероятностного распределения?
  • В каких случаях оценка параметра вероятностного распределения будет несмещенной?
  • Вернуться к учебному плану