Estimates the parameters of the Modified Weibull Distribution (MWD) using classical estimation methods.

fitMWD(
  data,
  est.method,
  opt.method,
  starts,
  lower = NULL,
  upper = NULL,
  verbose = FALSE,
  ...
)

Arguments

data

Numeric vector of observations.

est.method

Character string specifying the estimation method. Options include "MLE", "LSE", "WLSE", and "MPS".

opt.method

Character string specifying the optimization method used in optim, such as "Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN", or "Brent".

starts

Numeric vector of initial values for the parameters

lower

Numeric vector of lower bounds for parameters in constrained optimization. Ignored if NULL.

upper

Numeric vector of upper bounds for parameters in constrained optimization.

verbose

Logical. If TRUE, prints optimization progress.

...

Additional arguments passed to optim.

Value

A list containing:

estimates

Named numeric vector of estimated parameters \((a, b, \lambda)\).

measures

Numeric vector of model selection criteria (log-likelihood, AIC, BIC).

initials

Initial values used in the optimization.

opt.fit

Full output from optim.

Details

Fit the Modified Weibull Distribution (MWD)

The Modified Weibull Distribution (Lai et al., 2003) has cumulative distribution function (CDF) and probability density function (PDF):

$$ F(x) = 1 - \exp\left(-a x^b \exp(\lambda x)\right), $$ $$ f(x) = a (b + \lambda x) x^{b - 1} \exp(\lambda x) \exp\left(-a x^b \exp(\lambda x)\right), $$

where \(x > 0\), \(a > 0\) is a scale parameter, \(b \ge 0\) is a shape parameter, and \(\lambda \ge 0\) is a flexibility parameter controlling the growth rate of the hazard function.

The parameters are estimated using the following methods:

  • Maximum Likelihood Estimation (MLE): Maximizes the log-likelihood under the MWD model.

  • Least Squares Estimation (LSE): Minimizes squared differences between empirical and theoretical CDFs. The empirical CDF uses Benard's approximation: \(F(x_{(i)}) = (i - 0.3)/(n + 0.4)\), for \(i = 1, \dots, n\).

  • Weighted Least Squares Estimation (WLSE): A modification of LSE that assigns weights to the squared differences. Uses weights \(w_i = \frac{(n+1)^2(n+2)}{i(n-i+1)}\), for \(i = 1, \dots, n\).

  • Maximum Product of Spacings (MPS): Maximizes the product of spacings of the fitted CDF.

Further details are provided in Kizilaslan (2026).

References

Kizilaslan, F. (2026). Reliability estimation in dependent stress–strength model with Clayton copula and modified Weibull margins. arXiv preprint. Available at arXiv:2604.12130.

Lai, C. D., Xie, M., and Murthy, D. N. P. (2003). A modified Weibull distribution. IEEE Transactions on Reliability, 52(1), 33–37.

Examples

# generate data from MWD(a, b, lambda)
n <- 100
a <- 0.75; b <- 1.25; lambda <- 0.60
set.seed(123)
dat <- rMweibull(n, a, b, lambda)
init <- runif(3)

# Fit MWD to dat.
fit.mle <- fitMWD(data = dat, est.method = "mle", opt.method = "L-BFGS-B", starts = init,
                  lower = c(1e-05,1e-05,1e-05), upper = c(Inf,Inf,Inf), hessian = FALSE )
fit.mle$estimates
#>         a         b    lambda 
#> 0.7231634 1.2600843 0.6559157 

fit.lse <- fitMWD(data = dat, est.method = "lse", opt.method = "L-BFGS-B", starts = init,
                  lower = c(1e-05,1e-05,1e-05), upper = c(Inf,Inf,Inf), hessian = FALSE )
fit.lse$estimates
#>         a         b    lambda 
#> 0.9299033 1.4069386 0.4020883 

fit.wlse <- fitMWD(data = dat, est.method = "wlse", opt.method = "L-BFGS-B", starts = init,
                   lower = c(1e-05,1e-05,1e-05), upper = c(Inf,Inf,Inf), hessian = FALSE )
fit.wlse$estimates
#>         a         b    lambda 
#> 0.9220048 1.4228131 0.4207337 

fit.mps <- fitMWD(data = dat, est.method = "mps", opt.method = "L-BFGS-B", starts = init,
                  lower = c(1e-05,1e-05,1e-05), upper = c(Inf,Inf,Inf), hessian = FALSE )
fit.mps$estimates
#>        a        b   lambda 
#> 0.714056 1.189107 0.646072