mlecov

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

Описание

пример

acov = mlecov(params,data,'pdf',pdf) возвращает приближение к асимптотической ковариационной матрице максимальных оценок правдоподобия параметров для распределения, заданного пользовательской функцией плотности вероятностей pdf.

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

acov = mlecov(params,data,'pdf',pdf,'cdf',cdf) возвращает acov для распределения, заданного пользовательской функцией плотности вероятностей pdf и кумулятивную функцию распределения cdf.

пример

acov = mlecov(params,data,'logpdf',logpdf) возвращает acov для распределения, заданного пользовательской функцией плотности вероятностей журнала logpdf.

пример

acov = mlecov(params,data,'logpdf',logpdf,'logsf',logsf) возвращает acov для распределения, заданного пользовательской функцией журнала плотности вероятностей logpdf и пользовательскую функцию выживания журнала logsf.

пример

acov = mlecov(params,data,'nloglf',nloglf) возвращает acov для распределения, заданного пользовательской функцией отрицательной логарифмической правдоподобности nloglf.

пример

acov = mlecov(___,Name,Value) задает опции, использующие аргументы пары "имя-значение" в дополнение к любому из входных параметров в предыдущих синтаксисах. Например, можно задать цензурные данные и частоту наблюдений.

Примеры

свернуть все

Загрузите выборочные данные.

load carbig

Векторная Weight показывает веса 406 автомобилей.

В MATLAB® Редактор, создайте функцию, которая возвращает функцию плотности вероятностей (pdf) логнормального распределения. Сохраните файл в текущей рабочей папке следующим lognormpdf.m.

function newpdf = lognormpdf(data,mu,sigma)
newpdf = exp((-(log(data)-mu).^2)/(2*sigma^2))./(data*sigma*sqrt(2*pi));

Оцените параметры, mu и sigma, пользовательского распределения.

phat = mle(Weight,'pdf',@lognormpdf,'start',[4.5 0.3])
phat =

    7.9600    0.2804

Вычислите приблизительную ковариационную матрицу оценок параметров.

acov = mlecov(phat,Weight,'pdf',@lognormpdf)
acov =

   1.0e-03 *

    0.1937   -0.0000
   -0.0000    0.0968

Оцените стандартные ошибки оценок.

se = sqrt(diag(acov))
se =

    0.0139
    0.0098

Стандартная ошибка оценок mu и sigma составляет 0,0139 и 0,0098 соответственно.

В РЕДАКТОРА MATLAB создайте функцию, которая возвращает функцию логарифмической плотности вероятностей бета- распределения. Сохраните файл в текущей рабочей папке следующим betalogpdf.m.

function logpdf = betalogpdf(x,a,b)
logpdf = (a-1)*log(x)+(b-1)*log(1-x)-betaln(a,b);

Сгенерируйте выборочные данные из бета- распределения с параметрами 1.23 и 3.45 и оцените параметры с помощью моделируемых данных.

rng('default')
x = betarnd(1.23,3.45,25,1);
phat = mle(x,'dist','beta')
phat =

    1.1213    2.7182

Вычислите приблизительную ковариационную матрицу оценок параметров.

acov = mlecov(phat,x,'logpdf',@betalogpdf)
acov =

    0.0810    0.1646
    0.1646    0.6074

Загрузите выборочные данные.

load('readmissiontimes.mat');

Выборочные данные включают ReadmissionTime, который имеет время реадмиссии для 100 пациентов. Область вектора-столбца Censored имеет цензурную информацию для каждого пациента, где 1 указывает на цензурное наблюдение, а 0 указывает на то, что наблюдается точное время реадмиссии. Это моделируемые данные.

Задайте пользовательскую функцию плотности журнала вероятностей и выживания.

custlogpdf = @(data,lambda,k) log(k)-k*log(lambda)...
             +(k-1)*log(data)-(data/lambda).^k;
custlogsf = @(data,lambda,k) -(data/lambda).^k;

Оцените параметры, lambda и k, пользовательского распределения для цензурированных выборочных данных.

phat = mle(ReadmissionTime,'logpdf',custlogpdf,...
'logsf',custlogsf,'start',[1,0.75],'Censoring',Censored)
phat = 1×2

    9.2090    1.4223

Параметры шкалы и формы пользовательского распределения 9,2090 и 1.4223, соответственно.

Вычислите приблизительную ковариационную матрицу оценок параметров.

acov = mlecov(phat,ReadmissionTime,...
'logpdf',custlogpdf,'logsf',custlogsf,'Censoring',Censored)
acov = 2×2

    0.5653    0.0102
    0.0102    0.0163

Загрузите выборочные данные.

load('readmissiontimes.mat')

Выборочные данные включают ReadmissionTime, который имеет время реадмиссии для 100 пациентов. Это моделируемые данные.

Задайте отрицательную функцию журнала правдоподобия.

custnloglf = @(lambda,data,cens,freq) -length(data)*log(lambda) ...
    + sum(lambda*data,'omitnan');

Оцените параметры заданного распределения.

phat = mle(ReadmissionTime,'nloglf',custnloglf,'start',0.05)
phat = 0.1462

Вычислите отклонение оценки параметра.

acov = mlecov(phat,ReadmissionTime,'nloglf',custnloglf)
acov = 2.1374e-04

Вычислите стандартную ошибку.

sqrt(acov)
ans = 0.0146

Входные параметры

свернуть все

Оценки параметра, заданные как скалярное значение или вектор скалярных значений. Эти оценки параметров должны быть максимальными оценками правдоподобия. Для примера можно задать оценки параметров, возвращенные mle.

Типы данных: single | double

Выборочные данные mle используется для оценки параметров распределения, заданных как вектор.

Типы данных: single | double

Пользовательская функция распределения вероятностей, заданная как указатель на функцию, созданный с помощью @.

Эта пользовательская функция принимает вектор data и один или несколько индивидуальных параметров распределения в качестве входных параметров и возвраты вектор значений плотности вероятностей.

Для примера, если имя пользовательской функции плотности вероятностей newpdf, затем можно задать указатель на функцию в mlecov следующим образом.

Пример: @newpdf

Типы данных: function_handle

Пользовательская кумулятивная функция распределения, заданная как указатель на функцию, созданный с помощью @.

Эта пользовательская функция принимает вектор data и один или несколько индивидуальных параметров распределения в качестве входных параметров и возвраты вектор совокупных значений вероятностей.

Вы должны определить cdf с pdf если данные подвергнуты цензуре, и вы используете 'Censoring' аргумент пары "имя-значение". Если 'Censoring' отсутствует, вы не должны указывать cdf при использовании pdf.

Например, если имя пользовательской кумулятивной функции распределения newcdf, затем можно задать указатель на функцию в mlecov следующим образом.

Пример: @newcdf

Типы данных: function_handle

Пользовательская функция плотности вероятностей журнала, заданная как указатель на функцию, созданный с помощью @.

Эта пользовательская функция принимает вектор data и один или несколько индивидуальных параметров распределения как вход параметров и возвратов вектор журнала значений вероятностей.

Для примера, если имя пользовательской функции журнала плотности вероятностей customlogpdf, затем можно задать указатель на функцию в mlecov следующим образом.

Пример: @customlogpdf

Типы данных: function_handle

Пользовательская функция выживания журнала, заданная как указатель на функцию, созданный с помощью @.

Эта пользовательская функция принимает вектор data и один или несколько индивидуальных параметров распределения как вход параметров и возвратов вектор журнала значений вероятности выживания.

Вы должны определить logsf с logpdf если данные подвергнуты цензуре, и вы используете 'Censoring' аргумент пары "имя-значение". Если 'Censoring' отсутствует, вы не должны указывать logsf при использовании logpdf.

Например, если имя пользовательской функции выживания журнала logsurvival, затем можно задать указатель на функцию в mlecov следующим образом.

Пример: @logsurvival

Типы данных: function_handle

Пользовательская отрицательная функция логарифмической правдоподобности, заданная как указатель на функцию, созданный с помощью @.

Эта пользовательская функция принимает следующие входные параметры.

paramsВектор значений параметров распределения
dataВектор данных
censЛогический вектор цензурных значений
freqВектор целочисленных частот данных

nloglf должен принять все четыре аргумента, даже если вы не используете 'Censoring' или 'Frequency' Аргументы пары "имя-значение". Можно писать 'nloglf' игнорировать cens и freq аргументы в этом случае.

nloglf возвращает скалярное отрицательное значение логарифмической правдоподобности и, опционально, отрицательный вектор логарифмической градиентности (см. 'GradObj' поле в 'Options').

Если имя пользовательской функции правдоподобия отрицательного журнала negloglik, затем можно задать указатель на функцию в mlecov следующим образом.

Пример: @negloglik

Типы данных: function_handle

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Censoring',cens,'Options',opt задает, что mlecov считывает информацию цензурных данных из вектора cens и выполняет согласно новой структуре опций opt.

Индикатор цензуры, заданный как разделенная разделенными запятой парами, состоящая из 'Censoring' и логический массив того же размера, что и data. Используйте 1 для наблюдений, которые подвергаются правильной цензуре, и 0 для наблюдений, которые полностью наблюдаются. По умолчанию все наблюдения полностью наблюдаются.

Для данных с цензурой необходимо использовать cdf с pdf, или logsf с logpdf, или nloglf должен быть определен для учета цензуры.

Например, если информация о цензурных данных находится в двоичном массиве, называемом Censored, затем можно задать цензурные данные следующим образом.

Пример: 'Censoring',Censored

Типы данных: logical

Частота наблюдений, заданная как разделенная разделенными запятой парами, состоящая из 'Frequency' и массив, содержащий неотрицательные целочисленные счетчики, которые имеют тот же размер data. По умолчанию это одно наблюдение за элементом data.

Например, если частоты наблюдения сохранены в массиве с именем Freq, можно задать частоты следующим образом.

Пример: 'Frequency',Freq

Типы данных: single | double

Числовые опции для конечного различия Гессианского вычисления, заданные как разделенная разделенными запятой парами, состоящая из 'Options' и структуру, возвращаемую statset.

Можно задать опции под новым именем и использовать их в аргументе пары "имя-значение". Применимое statset параметры следующие.

ПараметрЗначение
'GradObj'

По умолчанию это 'off'.

'on' или 'off', что указывает, обеспечивается ли функция nloglf входной параметр может вернуть вектор градиента отрицательной логарифмической правдоподобности как второй выход.

'DerivStep'

По умолчанию это eps^(1/4).

Относительный размер шага, используемый в конечном различии для гессианских вычислений. Это может быть скаляр, или такой же размер, как params. Меньшее значение, чем значение по умолчанию, может быть подходящим, если 'GradObj' является 'on'.

Пример: 'Options',statset('mlecov')

Типы данных: struct

Выходные аргументы

свернуть все

Приближение к асимптотической ковариационной матрице, возвращенная как p -by - p матрица, где p - количество параметров в params.

Подробнее о

свернуть все

Функция выживания

Функция выживания является вероятностью выживания как функция времени. Это также называется функцией выжившего. Это дает вероятность того, что время выживания индивидуума превышает определенное значение. Поскольку совокупная функция распределения F (t) является вероятностью того, что время выживания меньше или равно заданному точке времени, функция выживания для непрерывного распределения, S (t), является дополнением совокупной функции распределения: S (t) = 1 - F (t).

Представлено до R2006a