The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
One-shot devices (e.g., electro-explosive devices, automotive airbags, fire extinguishers, and missiles) can be tested only once. Upon testing, the device is either destroyed or rendered unusable, yielding binary status data: whether the device was functional or failed at the inspection time.
To evaluate device reliability under operating conditions in a
reasonable timeframe, Accelerated Life Testing (ALT) is commonly used.
The OneShotEM package implements the
simple and efficient Expectation-Maximization (eM) algorithm proposed by
Zhu, Li, Li, and Balakrishnan (2026)
(Communications in Statistics - Simulation and Computation, doi:10.1080/03610918.2025.2515193).
Traditional EM algorithms for one-shot device data treat exact failure times as missing data. In contrast, the new eM-algorithm proposed by Zhu et al. (2026) treats the counts of failures occurring between successive inspection intervals as missing data. This structural shift provides: - Faster Convergence: Reduces iteration counts by 30% to 70%. - Guaranteed Convergence: Avoids numerical divergence because all interval probabilities remain bounded between 0 and 1. - Robust Estimation: Provides lower standard errors and consistent maximum likelihood estimation.
We illustrate the package using the electro-explosive device ALT dataset reported by Fan et al. (2009) and analyzed in Zhu et al. (2026).
data(electro_explosive)
print(electro_explosive)
#> temp it n r
#> 1 35 10 10 3
#> 2 35 20 10 3
#> 3 35 30 10 7
#> 4 45 10 10 1
#> 5 45 20 10 5
#> 6 45 30 10 7
#> 7 55 10 10 6
#> 8 55 20 10 7
#> 9 55 30 10 9The dataset contains testing results across 3 temperature levels (35°C, 45°C, 55°C) and 3 inspection times (10, 20, 30 hours), with 10 devices tested per condition (total \(N = 90\)).
We fit an exponential lifetime distribution where the scale parameter follows a log-linear model: \(\log(\beta_j) = \theta_0 + \theta_1 \cdot \text{temp}_j\).
fit_exp <- oneshot_em(
formula = cbind(r, n) ~ temp,
data = electro_explosive,
it = "it",
dist = "exponential"
)
summary(fit_exp)
#>
#> =================================================================
#> Summary of One-Shot Device EM Fit (NPM Algorithm)
#> =================================================================
#> Distribution: exponential
#> Convergence: Successful (12 iterations)
#> Observations: 90 tested devices
#>
#> Coefficients:
#> Estimate Std. Error z value Pr(>|z|)
#> (Intercept) 5.32030 0.91570 5.810 6.24e-09 ***
#> temp -0.04723 0.01948 -2.425 0.0153 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> 95% Confidence Intervals:
#> CI Lower CI Upper
#> (Intercept) 3.52556 7.11504
#> temp -0.08541 -0.00906
#>
#> Model Selection Criteria:
#> Log-likelihood: -53.61
#> AIC: 111.2
#> BIC: 116.2
#> AICc: 111.4
#> HQIC: 113.2
#>
#> =================================================================We fit a Weibull model with shape parameter \(a\) and scale parameter \(\beta_j = \exp(\theta_0 + \theta_1 \cdot \text{temp}_j)\).
fit_weibull <- oneshot_em(
formula = cbind(r, n) ~ temp,
data = electro_explosive,
it = "it",
dist = "weibull"
)
summary(fit_weibull)
#>
#> =================================================================
#> Summary of One-Shot Device EM Fit (NPM Algorithm)
#> =================================================================
#> Distribution: weibull
#> Convergence: Successful (55 iterations)
#> Observations: 90 tested devices
#>
#> Coefficients:
#> Estimate Std. Error z value Pr(>|z|)
#> log(shape) 0.19135 0.31223 0.613 0.5400
#> (Intercept) 4.94768 0.94109 5.257 1.46e-07 ***
#> temp -0.03968 0.01976 -2.008 0.0446 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> 95% Confidence Intervals:
#> CI Lower CI Upper
#> log(shape) -0.4206131 0.8033041
#> (Intercept) 3.1031859 6.7921823
#> temp -0.0784150 -0.0009519
#>
#> Model Selection Criteria:
#> Log-likelihood: -53.45
#> AIC: 112.9
#> BIC: 120.4
#> AICc: 113.2
#> HQIC: 115.9
#>
#> =================================================================We compare the convergence speed of the new eM-algorithm
(npm) against the traditional EM approach
(tm).
fit_npm <- oneshot_fit(cbind(r, n) ~ temp, data = electro_explosive, it = "it", dist = "weibull", method = "npm")
fit_tm <- oneshot_fit(cbind(r, n) ~ temp, data = electro_explosive, it = "it", dist = "weibull", method = "tm")
cat("New eM-Algorithm Iterations: ", fit_npm$iterations, "\n")
#> New eM-Algorithm Iterations: 55
cat("Traditional EM Iterations: ", fit_tm$iterations, "\n")
#> Traditional EM Iterations: 2As demonstrated in Zhu et al. (2026), the new eM-algorithm converges in significantly fewer iterations.
Fitted survival probabilities and model diagnostics can be visualized easily:
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.