mlecov
Asymptotic covariance of maximum likelihood estimators
Syntax
Description
returns an approximation to the asymptotic covariance matrix of the maximum
likelihood estimators of the parameters for a distribution specified by the
custom probability density function acov = mlecov(params,data,'pdf',pdf)pdf. The output
acov is a p-by-p
matrix, where p is the number of parameters in
params.
mlecov computes a finite difference approximation to the
Hessian of the loglikelihood at the maximum likelihood estimates
params, given the observed data, and
returns the negative inverse of that Hessian.
specifies options using one or more name-value arguments in addition to any of
the input argument combinations in previous syntaxes. For example, you can
specify the censored data and frequency of observations.acov = mlecov(___,Name,Value)
Examples
Load the sample data.
load carbigThe vector Weight contains the weights of 406 cars.
Define a custom function that returns the pdf of a lognormal distribution. Save the file in your current folder as lognormpdf.m.
function newpdf = lognormpdf(data,mu,sigma)
newpdf = exp((-(log(data)-mu).^2)/(2*sigma^2))./(data*sigma*sqrt(2*pi));
Estimate the parameters mu and sigma of the custom distribution.
[phat,pci] = mle(Weight,'pdf',@lognormpdf,'Start',[4.5 0.3])
phat = 1×2
7.9600 0.2804
pci = 2×2
7.9327 0.2611
7.9872 0.2997
Compute the approximate covariance matrix of the parameter estimates.
acov = mlecov(phat,Weight,'pdf',@lognormpdf)acov = 2×2
10-3 ×
0.1937 -0.0000
-0.0000 0.0968
Estimate the standard errors of the estimates.
se = sqrt(diag(acov))'
se = 1×2
0.0139 0.0098
The standard error of the estimates of mu and sigma are 0.0139 and 0.0098, respectively.
Recalculate the confidence intervals pci from the standard error se by using the Wald method (normal approximation).
alpha = 0.05; probs = [alpha/2; 1-alpha/2]; pci2 = norminv(repmat(probs,1,numel(phat)),[phat; phat],[se; se])
pci2 = 2×2
7.9327 0.2611
7.9872 0.2997
Define a custom function that returns the log pdf of a beta distribution. Save the file in your current folder as betalogpdf.m.
function logpdf = betalogpdf(x,a,b)
logpdf = (a-1)*log(x)+(b-1)*log(1-x)-betaln(a,b);
Generate sample data from a beta distribution with parameters 1.23 and 3.45, and estimate the parameters using the simulated data.
rng('default') % For reproducibility x = betarnd(1.23,3.45,25,1); phat = mle(x,'Distribution','beta')
phat = 1×2
1.1213 2.7182
Compute the approximate covariance matrix of the parameter estimates.
acov = mlecov(phat,x,'logpdf',@betalogpdf)acov = 2×2
0.0810 0.1646
0.1646 0.6074
Load the sample data.
load('readmissiontimes.mat')The data includes ReadmissionTime, which has readmission times for 100 patients. This data is simulated.
Define a custom negative loglikelihood function for a Poisson distribution with the parameter lambda, where 1/lambda is the mean of the distribution. You must define the function to accept a logical vector of censorship information and an integer vector of data frequencies, even if you do not use these values in the custom function.
custnloglf = @(lambda,data,cens,freq) ... - length(data)*log(lambda) + sum(lambda*data,'omitnan');
Estimate the parameter of the custom distribution and specify its initial parameter value (Start name-value argument).
phat = mle(ReadmissionTime,'nloglf',custnloglf,'Start',0.05)
phat = 0.1462
Compute the variance of the parameter estimate.
acov = mlecov(phat,ReadmissionTime,'nloglf',custnloglf)acov = 2.1374e-04
Compute the standard error.
sqrt(acov)
ans = 0.0146
Load the sample data.
load('readmissiontimes.mat');The data includes ReadmissionTime, which has readmission times for 100 patients. The column vector Censored contains the censorship information for each patient, where 1 indicates a right-censored observation, and 0 indicates that the exact readmission time is observed. This data is simulated.
Define a custom log probability density function (pdf) and log survival function for a Weibull distribution with the scale parameter lambda and the shape parameter k. When the data contains censored observations, you must pass both the log pdf and log survival function to mle and mlecov.
custlogpdf = @(data,lambda,k) ...
log(k) - k*log(lambda) + (k-1)*log(data) - (data/lambda).^k;
custlogsf = @(data,lambda,k) - (data/lambda).^k;Estimate the parameters of the custom distribution for the censored sample data. Specify the initial parameter values (Start name-value argument) for the custom distribution.
phat = mle(ReadmissionTime,'logpdf',custlogpdf,'logsf',custlogsf, ... 'Start',[1,0.75],'Censoring',Censored)
phat = 1×2
9.2090 1.4223
The scale and shape parameters of the custom distribution are 9.2090 and 1.4223, respectively.
Compute the approximate covariance matrix of the parameter estimates.
acov = mlecov(phat,ReadmissionTime, ... 'logpdf',custlogpdf,'logsf',custlogsf,'Censoring',Censored)
acov = 2×2
0.5653 0.0102
0.0102 0.0163
Input Arguments
Parameter estimates, specified as a vector. These parameter estimates must be maximum
likelihood estimates. For example, you can specify parameter estimates
returned by mle.
Data Types: single | double
Sample data and censorship information used to estimate the distribution
parameters params, specified as a vector of sample data
or a two-column matrix of sample data and censorship information.
You can specify the censorship information for the sample data by using
either the data argument or the
Censoring name-value argument.
mlecov ignores the
Censoring argument value if
data is a two-column matrix.
Specify data as a vector or a two-column matrix
depending on the censorship types of the observations in
data.
Fully observed data — Specify
dataas a vector of sample data.Data that contains fully observed, left-censored, or right-censored observations — Specify
dataas a vector of sample data, and specify theCensoringname-value argument as a vector that contains the censorship information for each observation. TheCensoringvector can contain 0, –1, and 1, which refer to fully observed, left-censored, and right-censored observations, respectively.Data that includes interval-censored observations — Specify
dataas a two-column matrix of sample data and censorship information. Each row ofdataspecifies the range of possible survival or failure times for each observation, and can have one of these values:[t,t]— Fully observed att[–Inf,t]— Left-censored att[t,Inf]— Right-censored att[t1,t2]— Interval-censored between[t1,t2], wheret1<t2
mlecov ignores NaN values in
data. Additionally, any NaN
values in the censoring vector (Censoring) or frequency
vector (Frequency) cause
mlecov to ignore the corresponding rows in
data.
Data Types: single | double
Custom probability distribution function (pdf), specified as a function handle or a cell array containing a function handle and additional arguments to the function.
The custom function accepts a vector containing sample data, one or more individual distribution parameters, and any additional arguments passed by a cell array as input parameters. The function returns a vector of probability density values.
Example: @newpdf
Data Types: function_handle | cell
Custom log probability density function, specified as a function handle or a cell array containing a function handle and additional arguments to the function.
The custom function accepts a vector containing sample data, one or more individual distribution parameters, and any additional arguments passed by a cell array as input parameters. The function returns a vector of log probability values.
Example: @customlogpdf
Data Types: function_handle | cell
Custom negative loglikelihood function, specified as a function handle or a cell array containing a function handle and additional arguments to the function.
The custom function accepts the following input arguments, in the order listed in the table.
| Input Argument of Custom Function | Description |
|---|---|
params | Vector of distribution parameter values
params. |
data | Sample data. The data value is a
vector of sample data or a two-column matrix of sample data
and censorship information. |
cens | Logical vector of censorship information.
nloglf must accept
cens even if you do not use the
Censoring name-value argument. In
this case, you can write nloglf to ignore
cens. |
freq | Integer vector of data frequencies.
nloglf must accept
freq even if you do not use the
Frequency name-value argument. In
this case, you can write nloglf to ignore
freq. |
trunc | Two-element numeric vector of truncation bounds.
nloglf must accept
trunc if you use the
TruncationBounds name-value
argument. |
nloglf can optionally accept the additional arguments
passed by a cell array as input parameters.
nloglf returns a scalar negative loglikelihood value
and, optionally, a negative loglikelihood gradient vector (see the
GradObj field in the Options
name-value argument).
Example: @negloglik
Data Types: function_handle | cell
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN, where Name is
the argument name and Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name in quotes.
Example: 'Censoring',cens,'Options',opt instructs mlecov
to read the censored data information from the vector cens and
perform according to the new options structure
opt.
Custom cumulative distribution function (cdf), specified as a function handle or a cell array containing a function handle and additional arguments to the function.
The custom function accepts a vector containing sample data, one or more individual distribution parameters, and any additional arguments passed by a cell array as input parameters. The function returns a vector of cdf values.
For censored or truncated observations, you must define both
cdf and pdf. For fully
observed and untruncated observations, mlecov
does not use cdf. You can specify the censorship
information by using either data or
Censoring and specify the truncation bounds by
using TruncationBounds.
Example: 'cdf',@newcdf
Data Types: function_handle | cell
Custom log survival function, specified as a function handle or a cell array containing a function handle and additional arguments to the function.
The custom function accepts a vector containing sample data, one or more individual distribution parameters, and any additional arguments passed by a cell array as input parameters. The function returns a vector of log survival probability values.
For censored or truncated observations, you must define both
logsf and logpdf. For
fully observed and untruncated observations,
mlecov does not use
logsf. You can specify the censorship
information by using either data or
Censoring and specify the truncation bounds by
using TruncationBounds.
Example: 'logsf',@logsurvival
Data Types: function_handle | cell
Indicator of censored data, specified as a vector consisting of 0, –1,
and 1, which indicate fully observed, left-censored, and right-censored
observations, respectively. Each element of the
Censoring value indicates the censorship status
of the corresponding observation in data. The
Censoring value must have the same size as
data. The default is a vector of 0s, indicating
all observations are fully observed.
You cannot specify interval-censored observations using this argument.
If the sample data includes interval-censored observations, specify
data using a two-column matrix.
mlecov ignores the
Censoring value if data is
a two-column matrix.
For censored data, you must define the custom distribution by using
pdf and cdf,
logpdf and logsf, or
nloglf.
mlecov ignores any NaN
values in the censoring vector. Additionally, any NaN
values in data or the frequency vector
(Frequency) cause
mlecov to ignore the corresponding values
in the censoring vector.
Example: 'Censoring',censored, where
censored is a vector that contains censorship
information.
Data Types: logical | single | double
Frequency of observations, specified as a vector of nonnegative
integer counts that has the same number of rows as
data. The jth element of the
Frequency value gives the number of times the
jth row of data was
observed. The default is a vector of 1s, indicating one observation per
row of data.
mlecov ignores any NaN
values in this frequency vector. Additionally, any
NaN values in data or the
censoring vector (Censoring) cause
mlecov to ignore the corresponding values
in the frequency vector.
Example: 'Frequency',freq, where
freq is a vector that contains the observation
frequencies.
Data Types: single | double
Numerical options for the finite difference Hessian calculation,
specified as a structure returned by statset.
The mlecov function interprets the following
statset options.
| Field Name | Description |
|---|---|
GradObj | Flag indicating whether the function provided
by the |
DerivStep | Relative step size used in the finite
difference for Hessian calculations, specified as a
vector of the same size as
The
default value is |
Example: 'Options',statset('GradObj','on')
Data Types: struct
More About
mlecov supports left-censored, right-censored, and interval-censored observations.
Left-censored observation at time
t— The event occurred before timet, and the exact event time is unknown.Right-censored observation at time
t— The event occurred after timet, and the exact event time is unknown.Interval-censored observation within the interval
[t1,t2]— The event occurred after timet1and before timet2, and the exact event time is unknown.
Double-censored data includes both left-censored and right-censored observations.
The survival function is the probability of survival as a function of time. It is also called the survivor function.
The survival function gives the probability that the survival time of an individual exceeds a certain value. Because the cumulative distribution function F(t) is the probability that the survival time is less than or equal to a given point t in time, the survival function for a continuous distribution S(t) is the complement of the cumulative distribution function: S(t) = 1 – F(t).
Version History
Introduced before R2006a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)