A major revision. Most estimates agree with version 1.0.2 up to small numerical differences, but several inaccuracies were corrected (see "Numerical accuracy") and the API was cleaned.
Q with respect to theta
are now computed by central differences with a small step (they were forward
differences with a large, data-driven step), the integrals on the tails of the
grid of quantile orders are no longer ignored, and the Jacobian is the exact
derivative of the discretized estimating equations. The estimates now agree with
the exact (family) estimators within about 0.001 standard errors, and the
standard errors within 0.5% (in 1.0.2: about 1% of a standard error, and up to
5-10% in the standard errors).Qest() (user-defined Q, Qnorm,
Qgamma) and Qcoxph(): this gave wrong standard errors (e.g., 20% too small for
log(sigma) in a truncated normal model) and slowed down convergence. Fixed.Qgamma: the integral on the upper tail of the grid was ignored, which biased the
estimates by about 1.5% of their standard error. Fixed.Qpois: F(y | x) was computed exactly while the integrals were interpolated on the
approximated quantiles, so that the estimating equations were not smooth (the
algorithm stopped up to 0.1 standard errors away from the solution). The
estimating equations are now consistent with the approximated quantile function
and converge quadratically; the estimates agree with an exact continuous Poisson
quantile function within 0.001 standard errors.Qnorm with left-truncated data: the truncation times were not rescaled.Qunif with wtau: the last step of the integration grid was zero.Qlm() and
Qest() used random sub-samples).Qcoxph(), the partial likelihood
and the Breslow estimator are computed in the package (no internal functions of
'survival'), and the knot-moving step copied from 'segmented' was removed (it was
never applied to the default knots, and applied inconsistently to user knots).Qest() gains subset and na.action; the rows of data passed to Q are now
those used in the model (in 1.0.2, rows with missing values or zero weights were
passed to Q). Unknown arguments in ... are an error (they were ignored).Qest.control() and Qcoxph.control(): the arguments safeit and alpha0 were
removed (they give an error); new argument deriv.step.Qlm() returns an object of class c("Qlm", "Qest") (no longer "lm"), with new
items sigma and covar.full; summary.Qlm() uses normal (asymptotic) tests and
no longer reports least squares R-squared and F statistics; new predict.Qlm().
Qlm(y ~ 0) gives an informative error.Qcoxph() returns an object of class c("Qcoxph", "Qest") (no longer "coxph",
whose methods did not apply); gains subset and na.action. survfit(),
predict(), residuals() and basehaz.Qcoxph() were rewritten from the fitted
parametric model (they copied about 1000 lines of 'survival', including a call to
a C routine of 'survival'); survfit() returns a standard "survfit" object and
predict() gains type = "quantile". Martingale residuals account for left
truncation.predict.Qest() (quantiles and CDF), plot.Qest() (uniform
probability plot of the fitted CDF), nobs(), confint() for all models.summary(fit)
instead of summary.Qest(fit)).Qest(..., Q = Qnorm) no longer warns that Qlm() could be used.Qest() with a user-defined Q warns, and uses a numerical Jacobian for the
standard errors, if Q does not seem twice differentiable in theta.data-raw/make_reference_1.0.2.R) to compare with version 1.0.2.