This program uses simple search and uniroot( ) to find the upper and lower (Wilks) confidence
limits based on the -2 log likelihood ratio, which the required input fun
is supposed to supply.
This function is faster than findUL( )
.
Basically, starting from MLE
, we search on both
directions, by step
away
from MLE
, until we find values that have -2LLR = level.
(the value of -2LLR at MLE is supposed to be zero.)
At curruent implimentation, only handles one dimesional parameter, i.e. only confidence intervals, not confidence regions.
For examples of using this function to find confidence interval, see the pdf vignettes file.
findUL2(step=0.01, initStep=0, fun, MLE, level=3.84146, tol=.Machine$double.eps^0.5, ...)
A list with the following components:
the lower limit of the confidence interval.
the upper limit of the confidence interval.
the final step size when search lower limit. An indication of the precision.
Ditto. An indication of the precision of the upper limit.
The -2LLR value of the final Low
value. Should be approximately equal to level. If larger than level, than the confidence interval limit Low
is wrong.
Ditto. Should be approximately equa to level.
a positive number. The starting step size of the search. Reasonable value should be about 1/5 of the SD of MLE.
a nonnegative number. The first step size of the search. Sometimes, you may want to put a larger innitStep to speed the search.
a function that returns a list. One of the item in the list should be "-2LLR", which is the -2 log (empirical) likelihood ratio.
The first input of fun
must be the parameter for which we are seeking the confidence interval. (The MLE or NPMLE of this parameter should be supplied as in the input MLE). The rest of the input to fun
are typically the data.
If the first input of fun
is set to MLE, then the returned -2LLR should be 0.
The MLE of the parameter. No need to be exact, as long as it is inside the confidence interval.
an optional positive number, controls the confidence level. Default to 3.84 = chisq(0.95, df=1). Change to 2.70=chisq(0.90, df=1) to get a 90% confidence interval.
tolerance to pass to uniroot( ). Default to .Machine$double.eps^0.5
additional arguments, if any, to pass to fun
.
Mai Zhou
Basically we repeatedly testing the value of the parameter, until we find those which the -2 log likelihood value is equal to 3.84 (or other level, if set differently).
If there is no value exactly equal to 3.84, we stop at the value which result a -2 log likelihood just below 3.84. (as in the discrete case, like quantiles.)
Zhou, M. (2016). Empirical Likelihood Method in Survival Analysis. CRC Press.
Zhou, M. (2002). Computing censored empirical likelihood ratio by EM algorithm. JCGS
## example with tied observations. Kaplan-Meier mean=4.0659.
## For more examples see vignettes.
x <- c(1, 1.5, 2, 3, 4, 5, 6, 5, 4, 1, 2, 4.5)
d <- c(1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1)
myfun6 <- function(theta, x, d) {
el.cen.EM2(x, d, fun=function(t){t}, mu=theta)
}
findUL2(step=0.2, fun=myfun6, MLE=4.0659, x=x, d=d)
Run the code above in your browser using DataLab