3
$\begingroup$

I'm trying to calculate a confidence interval on an estimate of the cumulative distribution of a two-parameter Weibull distribution. (Actually 1-cdf, the survival probability.) I want to do this using the likelihood ratio bounds method.

The only reference I've found for how to do this, is this page on reliawiki.org.

According to that page, this is done by finding the solutions to this equation:

LRB method

Where $\hat{\beta}$ and $\hat{\eta}$ are the estimated parameters of the Weibull distribution, $R$ is the reliability for which to find the confidence bounds, and $L$ is the likelihood function:

enter image description here Likelihood function

Here $x_i$ is the i-th time-to-failure datapoint.

I've been able to write code to solve this numerically, and get the same results as the ones shown in the reliawiki article. However, some things indicate that something about these results are wrong. Here, the likelihood ratio confidence limits are plotted in light blue and purple:

enter image description here

The blue line is the estimated reliability whose confidence bounds I'm trying to find. Also plotted is the maximum likelihood confidence interval on the same estimate. As you can see, the likelihood ratio method give bounds that are much wider.

Another problem is that the likelihood function is a product of small numbers, so for larger datasets, the likelihood becomes exactly 0 because of underflow.

Two questions:

1) Am I right in assuming that the likelihood ratio based confidence interval is too wide?

2) How can I avoid the underflow issue when computing the likelihood functions?

$\endgroup$
9
  • 3
    $\begingroup$ As for your question 2), that is easy. You have to work with the LOG-likelihood (LL): the logarithm of the likelihood. For a large dataset, the LL now becomes the sum of a lot of negative numbers. No more underflow! $\endgroup$ Feb 21, 2016 at 9:54
  • 1
    $\begingroup$ How do you compute the "maximum likelihood confidence interval"? Anyway, if you want to know if your confidence interval is a good one, just run a simulation and check if you get 95% coverage. $\endgroup$ Feb 21, 2016 at 18:50
  • 2
    $\begingroup$ @StijnDeVuyst Thank you! I had actually done some work in this direction, but had messed something up along the way.. Your comment pushed me to look into it further and now I got that to work. That seems to have solved the underflow issues. $\endgroup$
    – larspars
    Feb 22, 2016 at 10:03
  • 1
    $\begingroup$ @FlorianHartig The MLE confidence interval was found by inverting the Fisher information matrix, as described under the heading "Fisher Matrix Confidence Bounds" on the Reliawiki page I linked to. I'll try running a simulation, thanks for the tip. $\endgroup$
    – larspars
    Feb 22, 2016 at 10:06
  • $\begingroup$ @FlorianHartig How would you do that simulation? I first thought I could can generate N samples from the pdf, and then create an empirical cdf from that, and compare that to my graph. But that doesn't seem right, as that would get a tighter fit by just increasing N. $\endgroup$
    – larspars
    Feb 23, 2016 at 12:02

1 Answer 1

1
$\begingroup$

If you want to know if your confidence interval is well-defined, you can simply run a simulation and check if you get 95% coverage. To do this, choose a parameter set and repeat:

  1. sample data with these parameters
  2. apply your method to calculate CI
  3. check if your CI covers the true value -> in your case the analytical cdf. You may want to check this for different values of the cdf.

After repeating, e.g. 1000x, you can calculate how often your true value is outside the CI, to see if you have nominal coverage.

You should repeat this for different "true" parameter values. Let me add that good nominal coverage != 95% probability for predictions, see here.

Note: this is a copy of my suggestion from the comments, which seemed to have helped. Note also that the question about underflow issue was answered by @StijnDeVuyst.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.