For
realizations,
, from a Weibull distribution a value
is observed such that
There are two situations:
(a) |
exactly specified observations, when |
(b) |
right-censored observations, known by a lower bound, when . |
The probability density function of the Weibull distribution, and hence the contribution of an exactly specified observation to the likelihood, is given by:
while the survival function of the Weibull distribution, and hence the contribution of a right-censored observation to the likelihood, is given by:
If
of the
observations are exactly specified and indicated by
and the remaining
are right-censored, then the likelihood function,
is given by
To avoid possible numerical instability a different parameterisation
is used, with
. The kernel log-likelihood function,
, is then:
If the derivatives
,
,
,
and
are denoted by
,
,
,
and
, respectively, then the maximum likelihood estimates,
and
, are the solution to the equations:
and
Estimates of the asymptotic standard errors of
and
are given by:
An estimate of the correlation coefficient of
and
is given by:
Note: if an estimate of the original argument
is required, then
The equations
(1) and
(2) are solved by the Newton–Raphson iterative method with adjustments made to ensure that
.
Given that the Weibull distribution is a suitable model for the data and that the initial values are reasonable the convergence to the required accuracy, indicated by
tol, should be achieved.
In a study,
patients receiving an analgesic to relieve headache pain had the following recorded relief times (in hours):
(See
Gross and Clark (1975).) This data is read in and a Weibull distribution fitted assuming no censoring; the parameter estimates and their standard errors are printed.
function g07be_example
fprintf('g07be example results\n\n');
x = [1.1; 1.4; 1.3; 1.7; 1.9;
1.8; 1.6; 2.2; 1.7; 2.7;
4.1; 1.8; 1.5; 1.2; 1.4;
3.0; 1.7; 2.3; 1.6; 2];
cens = 'No censor';
ic = [int64(0)];
gamma = 0;
tol = 0;
maxit = int64(0);
[beta, gamma, sebeta, segam, corr, dev, nit, ifail] = ...
g07be( ...
cens, x, ic, gamma, tol, maxit);
fprintf(' Beta = %10.4f Standard error = %10.4f\n', beta, sebeta);
fprintf(' Gamma = %10.4f Standard error = %10.4f\n', gamma, segam);