Author: David Saah & Tomasz Kozubowski
Date: 2025-05-23

# Using the ExtendedLaplace Package

#### David Saah & Tomasz Kozubowski

#### 2025-05-23

## Introduction

The `ExtendedLaplace` package provides tools for working with the Extended Laplace (EL) distribution, a generalization of the classical Laplace distribution. This distribution is characterized by four parameters: location \(\mu\), scale \(\sigma > 0\), and a uniform noise range \(\delta > 0\).

The EL distribution arises as the sum \(Y = X + U\) where \(X \sim \text{Laplace}(\mu, \sigma)\) and \(U \sim \text{Uniform}(-\delta, \delta)\).

## Installation

To install the development version of this package from GitHub:

    # install.packages("devtools")
    devtools::install_github("saahdavid/ExtendedLaplace")

## Functions

The package provides the following main functions:

- `dEL(y, mu, sigma, delta)`: Probability density function
- `pEL(y, mu, sigma, delta)`: Cumulative distribution function
- `qEL(u, mu, sigma, delta)`: Quantile function (inverse CDF)
- `rEL(n, mu, sigma, delta)`: Random number generation
- `qqplotEL(samples, mu, sigma, delta)`: Quantile-Quantile Plot

## Examples

### Density

    library(ExtendedLaplace)
    curve(dEL(x, mu = 0, sigma = 1, delta = 1), from = -5, to = 5, ylab = "Density", xlab = 'y')

### Distribution Function

    curve(pEL(x, mu = 0, sigma = 1, delta = 1), from = -5, to = 5, ylab = "CDF", xlab = 'y')

### Quantiles

    qEL(c(0.025, 0.5, 0.975), mu = 0, sigma = 1, delta = 1)
    # [1] -3.157172  0.000000  3.157172

### Simulation

    samples <- rEL(10000, mu = 0, sigma = 1, delta = 1)
    hist(samples, probability = TRUE, breaks = 40, main = "Simulated EL Data", xlab = 'y')
    curve(dEL(x, mu = 0, sigma = 1, delta = 1), add = TRUE, col = "navy", lwd = 2)

### QQ-Plot

    qqplotEL(samples, mu = 0, sigma = 1, delta = 1)

## Theoretical Notes

The Extended Laplace distribution has the following form:

### PDF

\[ \begin{aligned} g(y) = \frac{1}{4\delta} \begin{cases} e^{\frac{y- \mu + \delta}{\sigma}} - e^{\frac{y- \mu - \delta}{\sigma}}, & y < \mu - \delta \\ 2 - e^{-\frac{y - \mu + \delta}{\sigma}} - e^{\frac{y - \mu - \delta}{\sigma}}, & \mu - \delta \leq y < \mu + \delta \\ e^{-\frac{y - \mu - \delta}{\sigma}} - e^{-\frac{y - \mu + \delta}{\sigma}}, & y \geq \mu + \delta \end{cases} \end{aligned} \]

### CDF

\[ \begin{aligned} G(y) = \frac{1}{4\delta} \begin{cases} \sigma e^{\frac{y- \mu + \delta}{\sigma}} - \sigma e^{\frac{y- \mu - \delta}{\sigma}} , & y < \mu - \delta \\ 2(y - \mu + \delta) + \sigma e^{-\frac{y - \mu + \delta}{\sigma}} - \sigma e^{\frac{y - \mu - \delta}{\sigma}} , & \mu-\delta \leq y < \mu+\delta\\ 4\delta + \sigma e^{-\frac{y- \mu + \delta}{\sigma}} - \sigma e^{-\frac{y- \mu - \delta}{\sigma}} , & y \geq \mu + \delta \, . \end{cases} \end{aligned} \]

### The quantile function

For \(\sigma>0\) and \(0<u<1\), we have \(Q(u)=\mu+\sigma z\), where

\[ \begin{aligned} z = \begin{cases} \log [4\tau u] - \log [e^\tau - e^{-\tau}] & \mbox{for } 0<u\leq (1-e^{-2\tau})/(4\tau) \\ z^\ast & \mbox{for } (1-e^{-2\tau})/(4\tau) \leq u \leq 1 - (1-e^{-2\tau})/(4\tau)\\ - \log [4\tau (1-u)] + \log [e^{\tau} - e^{-\tau}] & \mbox{for } 1 - (1-e^{-2\tau})/(4\tau) \leq u <1, \end{cases} \end{aligned} \]

where \(\tau=\delta/\sigma\) and \(z^\ast\) is a unique solution of the equation: \[ \begin{aligned} u = \frac{1}{4\tau} [ 2(z+\tau) - e^{-\tau}(e^z - e^{-z})], \quad -\tau\leq z \leq \tau. \end{aligned} \]

## Session Info

    sessionInfo()
    # R version 4.4.3 (2025-02-28)
    # Platform: x86_64-apple-darwin20
    # Running under: macOS Sequoia 15.5
    #
    # Matrix products: default
    # BLAS:   /Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libRblas.0.dylib
    # LAPACK: /Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.0
    #
    # locale:
    # [1] C/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
    #
    # time zone: America/Los_Angeles
    # tzcode source: internal
    #
    # attached base packages:
    # [1] stats     graphics  grDevices utils     datasets  methods   base
    #
    # other attached packages:
    # [1] ExtendedLaplace_0.1.6
    #
    # loaded via a namespace (and not attached):
    #  [1] digest_0.6.37     R6_2.6.1          fastmap_1.2.0     xfun_0.51
    #  [5] splines_4.4.3     cachem_1.1.0      knitr_1.50        htmltools_0.5.8.1
    #  [9] rmarkdown_2.29    stats4_4.4.3      lifecycle_1.0.4   cli_3.6.4
    # [13] sass_0.4.9        jquerylib_0.1.4   VGAM_1.1-13       compiler_4.4.3
    # [17] rstudioapi_0.17.1 tools_4.4.3       evaluate_1.0.3    bslib_0.9.0
    # [21] yaml_2.3.10       rlang_1.1.5       jsonlite_1.9.1

# References

Saah, D. K., & Kozubowski, T. J. (2025).
A new class of extended Laplace distributions with applications to modeling contaminated Laplace data.
Journal of Computational and Applied Mathematics.
https://doi.org/10.1016/j.cam.2025.116588