Author: Shikhar Tyagi, Sumit Kumar, Arvind Pandey, Bhupendra Singh, Vrijesh Tripathi
Date: 2026-08-04

# Generalized Process Capability Indices for Interval-Censored Data

#### Shikhar Tyagi, Sumit Kumar, Arvind Pandey, Bhupendra Singh, Vrijesh Tripathi

#### 2026-08-04

    library(gpciIntCensor)

## Introduction

The `gpciIntCensor` package provides a unified, comprehensive framework for evaluating Generalized Process Capability Indices (GPCIs) under interval-censored data using Maximum Likelihood Estimation (MLE) via `MleCensoR` and bootstrap confidence intervals.

Supported capability indices include: * \(C_{py}\) (Maiti et al., 2010) * \(S_{pmk}\) (Dey & Saha, 2019) * \(C_{pTk}\) (Saha et al., 2019) * \(C_{pc}\) (Saha et al., 2022) * \(C_{Npmc}\) (Alotaibi et al., 2022) * \(C_{Npmkc}\) (Saha et al., 2024) * \(C_{Npk}\) (Saha et al., 2018) * Vännman’s \(C_p(u,v)\) family and quantile analogs.

## Workflow Example

### 1. Define Distribution and Generate Interval-Censored Data

    # Define normal distribution
    dist_norm <- dist_normal(mean = 10, sd = 1.5)

    # Simulate interval-censored data
    set.seed(123)
    true_vals <- rnorm(30, mean = 10, sd = 1.5)
    data_left <- true_vals - 0.25
    data_right <- true_vals + 0.25

### 2. Fit Parameters via MLE for Interval-Censored Data

    dist_fitted <- fit_distribution_censor(data_left, data_right, dist_norm)
    print(dist_fitted$params)
    #> $mean
    #> [1] 9.929349
    #>
    #> $sd
    #> [1] 1.439576

### 3. Compute Capability Indices

    fit_cap <- capability_censor(
      data_left = data_left,
      data_right = data_right,
      distribution = dist_norm,
      USL = 14,
      LSL = 6,
      target = 10,
      indices = c("Cpy", "Cp", "Cpk", "Cpm", "Cpmk", "Spmk", "CpTk", "CNpmc"),
      mode = "moments"
    )

    print(fit_cap)
    #> --- Process Capability Analysis for Interval-Censored Data ---
    #> Distribution:  normal
    #> Parameters:    mean = 9.9293, sd = 1.4396
    #> Spec Limits:  LSL = 6 , USL = 14 , Target = 10
    #> Mode:          moments
    #> Expected Nonconforming (p_hat):  0.5516 %
    #>
    #> Point Estimates of Capability Indices:
    #>    Cpy     Cp    Cpk    Cpm   Cpmk   Spmk   CpTk  CNpmc
    #> 0.9972 0.9262 0.9098 0.9251 0.9087 0.9240 0.9607 0.7601

### 4. Bootstrap Confidence Intervals (90%, 95%, 99%)

    ci_res <- boot_ci_censor(
      fit = fit_cap,
      B = 100,
      alpha = c(0.10, 0.05, 0.01),
      method = "percentile",
      type = "nonparametric"
    )
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints

    print(ci_res)
    #> --- Bootstrap Confidence Intervals (Interval-Censored Data) ---
    #> Bootstrap Type:    nonparametric
    #> CI Method:         percentile
    #> Replicates (B):    100
    #>
    #>    index estimate     method          type alpha conf_level  lower  upper
    #> 1    Cpy   0.9972 percentile nonparametric  0.10        90% 0.9807 1.0019
    #> 2    Cpy   0.9972 percentile nonparametric  0.05        95% 0.9776 1.0024
    #> 3    Cpy   0.9972 percentile nonparametric  0.01        99% 0.9738 1.0026
    #> 4     Cp   0.9262 percentile nonparametric  0.10        90% 0.7712 1.1300
    #> 5     Cp   0.9262 percentile nonparametric  0.05        95% 0.7664 1.2478
    #> 6     Cp   0.9262 percentile nonparametric  0.01        99% 0.7424 1.2855
    #> 7    Cpk   0.9098 percentile nonparametric  0.10        90% 0.6999 1.0734
    #> 8    Cpk   0.9098 percentile nonparametric  0.05        95% 0.6859 1.1631
    #> 9    Cpk   0.9098 percentile nonparametric  0.01        99% 0.6528 1.2616
    #> 10   Cpm   0.9251 percentile nonparametric  0.10        90% 0.7636 1.1135
    #> 11   Cpm   0.9251 percentile nonparametric  0.05        95% 0.7470 1.2032
    #> 12   Cpm   0.9251 percentile nonparametric  0.01        99% 0.7280 1.2822
    #> 13  Cpmk   0.9087 percentile nonparametric  0.10        90% 0.6665 1.0714
    #> 14  Cpmk   0.9087 percentile nonparametric  0.05        95% 0.6536 1.1306
    #> 15  Cpmk   0.9087 percentile nonparametric  0.01        99% 0.6120 1.2583
    #> 16  Spmk   0.9240 percentile nonparametric  0.10        90% 0.7305 1.0930
    #> 17  Spmk   0.9240 percentile nonparametric  0.05        95% 0.7164 1.1633
    #> 18  Spmk   0.9240 percentile nonparametric  0.01        99% 0.6842 1.2789
    #> 19  CpTk   0.9607 percentile nonparametric  0.10        90% 0.6724 0.9728
    #> 20  CpTk   0.9607 percentile nonparametric  0.05        95% 0.6397 0.9873
    #> 21  CpTk   0.9607 percentile nonparametric  0.01        99% 0.6060 0.9991
    #> 22 CNpmc   0.7601 percentile nonparametric  0.10        90% 0.6627 0.8547
    #> 23 CNpmc   0.7601 percentile nonparametric  0.05        95% 0.6516 0.8932
    #> 24 CNpmc   0.7601 percentile nonparametric  0.01        99% 0.6389 0.9242
    #>     width
    #> 1  0.0212
    #> 2  0.0248
    #> 3  0.0288
    #> 4  0.3589
    #> 5  0.4814
    #> 6  0.5431
    #> 7  0.3736
    #> 8  0.4772
    #> 9  0.6088
    #> 10 0.3499
    #> 11 0.4562
    #> 12 0.5542
    #> 13 0.4049
    #> 14 0.4770
    #> 15 0.6464
    #> 16 0.3625
    #> 17 0.4470
    #> 18 0.5947
    #> 19 0.3004
    #> 20 0.3476
    #> 21 0.3931
    #> 22 0.1920
    #> 23 0.2416
    #> 24 0.2853

### 5. Diagnostics: SE, MSE, and Coverage Probabilities

    diag_res <- compute_diagnostics_censor(
      fit = fit_cap,
      true_params = list(mean = 10, sd = 1.5),
      true_indices = c(Cpy = 1.0, Cp = 1.33),
      B = 50
    )
    #> Warning in stats::pnorm(x, mean, sd): NaNs produced
    #> Warning in stats::pnorm(x, mean, sd): NaNs produced
    #> Warning in stats::pnorm(x, mean, sd): NaNs produced
    #> Warning in stats::pnorm(x, mean, sd): NaNs produced
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints
    #> Warning in norm.inter(t, alpha): extreme order statistics used as endpoints

    print(diag_res)
    #> --- Diagnostics for Interval-Censored Data ---
    #> Bootstrap Replicates: 50
    #>
    #> Standard Errors for Parameters:
    #>     mean       sd
    #> 0.049890 0.030722
    #>
    #> Mean Squared Errors for Parameters:
    #>     mean       sd
    #> 0.004992 0.003651
    #>
    #> Standard Errors for Capability Indices:
    #>      Cpy       Cp      Cpk      Cpm     Cpmk     Spmk     CpTk    CNpmc
    #> 0.006762 0.151569 0.151158 0.148054 0.152630 0.148090 0.092541 0.074686
    #>
    #> Mean Squared Errors for Capability Indices:
    #>  Cpy.Cpy    Cp.Cp      Cpk      Cpm     Cpmk     Spmk     CpTk    CNpmc
    #> 0.000008 0.163056 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    #>
    #> Coverage Probabilities for Capability Indices:
    #>
    #> Alpha level: alpha_0.1
    #>   Cpy    Cp   Cpk   Cpm  Cpmk  Spmk  CpTk CNpmc
    #>     1     0     0     0     0     0     0     0
    #>
    #> Alpha level: alpha_0.05
    #>   Cpy    Cp   Cpk   Cpm  Cpmk  Spmk  CpTk CNpmc
    #>     1     0     0     0     0     0     0     0
    #>
    #> Alpha level: alpha_0.01
    #>   Cpy    Cp   Cpk   Cpm  Cpmk  Spmk  CpTk CNpmc
    #>     1     1     0     0     0     0     0     0
    #>
    #> Coverage Probabilities for Parameters:
    #>
    #> Alpha level: alpha_0.1
    #> mean   sd
    #>    1    0
    #>
    #> Alpha level: alpha_0.05
    #> mean   sd
    #>    1    0
    #>
    #> Alpha level: alpha_0.01
    #> mean   sd
    #>    1    1

### 6. Visualization

    plot(fit_cap)

## References

- Maiti, S. S., Saha, M., & Nanda, A. K. (2010). On Generalizing Process Capability Indices. Quality Technology & Quantitative Management, 7(3), 279-300.
- Saha, M., Dey, S., & Maiti, S. S. (2018). Parametric and non-parametric bootstrap confidence intervals of CNpk for exponential power distribution. Journal of Industrial and Production Engineering, 35(3), 160-169.
- Dey, S., & Saha, M. (2019). Assessing the process capability index Spmk using improved estimators. Life Cycle Reliability and Safety Engineering, 8(3), 253-264.
- Saha, M., Dey, S., & Maiti, S. S. (2019). Bootstrap confidence intervals of CpTk for two parameter logistic exponential distribution with applications. International Journal of System Assurance Engineering and Management, 10(4), 861-872.
- Alotaibi, R., Dey, S., & Saha, M. (2022). Estimation and Confidence Intervals of a New PCI CNpmc for Logistic-Exponential Process Distribution. Journal of Mathematics, 2022, 3135264.
- Saha, M., Dey, S., & Nadarajah, S. (2022). Parametric inference of the process capability index Cpc for exponentiated exponential distribution. Journal of Applied Statistics, 49(16), 4097-4121.
- Saha, M., Tripathi, H., & Dey, S. (2024). Classical Inference of a New PCI CNpmkc for Logistic-Exponential Process Distribution. International Journal of Reliability, Quality and Safety Engineering, 31(3), 2450013.