Metadata-Version: 2.4
Name: advanced_distributions
Version: 0.2.0
Summary: Advanced Probability Distributions for AI and Statistics
Author: Sandeep Kumar
Author-email: skp7361@gmail.com
Keywords: statistics,probability,distribution,machine learning,AI,heavy-tail,copula,quantile
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.22.0
Requires-Dist: scipy>=1.9.0
Requires-Dist: matplotlib>=3.5.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: keywords
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Advanced Distributions

Advanced probability distributions for:

- AI Research
- Machine Learning
- Heavy-tail Modeling
- Diffusion Models
- Statistical Research
- Copula Theory
- Quantum Probability
- Information Theory

## Install

```bash
pip install advanced_distributions



# =============================================================
# EXAMPLE USAGE: slash distribution
# =============================================================

if __name__ == "__main__":

    dist = SlashDistribution(
        mu=0,
        sigma=1
    )

    print("Mean:", dist.mean())

    print(
        "Variance:",
        dist.var()
    )

    print(
        "Standard Deviation:",
        dist.std()
    )

    print(
        "Skewness:",
        dist.skewness()
    )

    print(
        "Kurtosis:",
        dist.kurtosis()
    )

    print(
        "Entropy:",
        dist.entropy()
    )

    print(
        "Median:",
        dist.median()
    )

    print(
        "Mode:",
        dist.mode()
    )

    print(
        "Moment(2):",
        dist.moment(2)
    )

    print(
        "\nPDF at x=1:",
        dist.pdf(1)
    )

    print(
        "CDF at x=1:",
        dist.cdf(
            np.array([1])
        )[0]
    )

    print(
        "Hazard at x=1:",
        dist.hazard(1)
    )

    print(
        "MGF at t=0.01:",
        dist.mgf(0.01)
    )

    print(
        "Characteristic Function at t=1:",
        dist.characteristic_function(1)
    )

    # Generate samples
    samples = dist.rvs(
        size=5000
    )

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted = (
        SlashDistribution.fit(
            samples
        )
    )

    print("\nFitted Parameters:")
    print("mu    =", fitted.mu)
    print("sigma =", fitted.sigma)

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()
    dist.plot_histogram()

    # =============================================================
# EXAMPLE USAGE: Fractal distribution
# =============================================================

if __name__ == "__main__":

    dist = FractalDistribution(
        D=1.3,
        lambda_=0.8
    )

    print("Mean:", dist.mean())
    print("Variance:", dist.var())
    print("Standard Deviation:", dist.std())
    print("Skewness:", dist.skewness())
    print("Kurtosis:", dist.kurtosis())
    print("Entropy:", dist.entropy())
    print("Median:", dist.median())
    print("Mode:", dist.mode())

    print("\n3rd Moment:", dist.moment(3))

    print("\nPDF at x=2:", dist.pdf(2))
    print("CDF at x=2:", dist.cdf(np.array([2]))[0])
    print("Hazard at x=2:", dist.hazard(np.array([2]))[0])

    # Generate Samples
    samples = dist.rvs(size=5000)

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted_params = FractalDistribution.fit(samples)

    print("\nFitted Parameters:")
    print("D =", fitted_params[0])
    print("lambda =", fitted_params[1])

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()


    # =============================================================
# EXAMPLE USAGE: Fractional distribution
# =============================================================

if __name__ == "__main__":

    dist = FractionalDistribution(
        alpha=1.7,
        beta=2.0,
        gamma=0.9
    )

    print("Mean:", dist.mean())
    print("Variance:", dist.var())
    print("Standard Deviation:", dist.std())
    print("Skewness:", dist.skewness())
    print("Kurtosis:", dist.kurtosis())
    print("Entropy:", dist.entropy())

    print("Median:", dist.median())
    print("Mode:", dist.mode())

    print("3rd Moment:", dist.moment(3))

    print("\nPDF at x=2:", dist.pdf(2))
    print("CDF at x=2:", dist.cdf(np.array([2]))[0])

    print("Hazard at x=2:", dist.hazard(np.array([2]))[0])

    print("MGF at t=0.1:", dist.mgf(0.1))

    print(
        "Characteristic Function at t=1:",
        dist.characteristic_function(1)
    )

    # Generate samples
    samples = dist.rvs(size=5000)

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted_params = FractionalDistribution.fit(samples)

    print("\nFitted Parameters:")
    print("alpha =", fitted_params[0])
    print("beta  =", fitted_params[1])
    print("gamma =", fitted_params[2])

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()
    dist.plot_histogram()


    # =============================================================
# EXAMPLE USAGE: GeneralizedParetoDistribution
# =============================================================

if __name__ == "__main__":

    dist = GeneralizedParetoDistribution(
        xi=0.3,
        sigma=2.0,
        mu=0.0
    )

    print("Mean:", dist.mean())
    print("Variance:", dist.var())
    print("Standard Deviation:", dist.std())
    print("Skewness:", dist.skewness())
    print("Kurtosis:", dist.kurtosis())

    print("Entropy:", dist.entropy())

    print("Median:", dist.median())
    print("Mode:", dist.mode())

    print("3rd Moment:", dist.moment(3))

    print("\nPDF at x=2:", dist.pdf(2))
    print("CDF at x=2:", dist.cdf(2))

    print("Hazard at x=2:", dist.hazard(2))

    print("MGF at t=0.1:", dist.mgf(0.1))

    print(
        "Characteristic Function at t=1:",
        dist.characteristic_function(1)
    )

    # Generate random samples
    samples = dist.rvs(size=5000)

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted = GeneralizedParetoDistribution.fit(samples)

    print("\nFitted Parameters:")
    print("xi =", fitted.xi)
    print("sigma =", fitted.sigma)
    print("mu =", fitted.mu)

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()
    dist.plot_histogram()



# =============================================================
# EXAMPLE USAGE: HyperbolicSecantDistribution
# =============================================================

if __name__ == "__main__":

    dist = HyperbolicSecantDistribution(
        mu=0,
        sigma=1
    )

    print("Mean:", dist.mean())
    print("Variance:", dist.var())
    print("Standard Deviation:", dist.std())
    print("Skewness:", dist.skewness())
    print("Kurtosis:", dist.kurtosis())

    print("Entropy:", dist.entropy())

    print("Median:", dist.median())
    print("Mode:", dist.mode())

    print("3rd Moment:", dist.moment(3))

    print("\nPDF at x=1:", dist.pdf(1))
    print("CDF at x=1:", dist.cdf(1))

    print("Hazard at x=1:", dist.hazard(1))

    print("MGF at t=0.2:", dist.mgf(0.2))

    print(
        "Characteristic Function at t=1:",
        dist.characteristic_function(1)
    )

    # Generate samples
    samples = dist.rvs(size=5000)

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted = HyperbolicSecantDistribution.fit(samples)

    print("\nFitted Parameters:")
    print("mu =", fitted.mu)
    print("sigma =", fitted.sigma)

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()
    dist.plot_histogram()



# # =============================================================
# EXAMPLE USAGE: LevyStableDistribution
# =============================================================

if __name__ == "__main__":

    dist = LevyStableDistribution(
        alpha=1.7,
        beta=0.2,
        loc=0,
        scale=1
    )

    print("Mean:", dist.mean())
    print("Variance:", dist.var())
    print("Standard Deviation:", dist.std())

    print("Skewness:", dist.skewness())
    print("Kurtosis:", dist.kurtosis())

    print("Entropy:", dist.entropy())

    print("Median:", dist.median())
    print("Mode:", dist.mode())

    print("Moment(0.5):", dist.moment(0.5))

    print("\nPDF at x=1:", dist.pdf(1))
    print("CDF at x=1:", dist.cdf(1))

    print("Hazard at x=1:", dist.hazard(1))

    print(
        "Characteristic Function at t=1:",
        dist.characteristic_function(1)
    )

    # Generate random samples
    samples = dist.rvs(size=5000)

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted = LevyStableDistribution.fit(samples)

    print("\nFitted Parameters:")
    print("alpha =", fitted.alpha)
    print("beta  =", fitted.beta)
    print("loc   =", fitted.loc)
    print("scale =", fitted.scale)

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()
    dist.plot_histogram()


    # =============================================================
# EXAMPLE USAGE:NeuralSplineDistribution
# =============================================================

if __name__ == "__main__":

    dist = NeuralSplineDistribution()

    print("Mean:", dist.mean())
    print("Variance:", dist.var())
    print("Standard Deviation:", dist.std())

    print("Skewness:", dist.skewness())
    print("Kurtosis:", dist.kurtosis())

    print("Entropy:", dist.entropy())

    print("Median:", dist.median())
    print("Mode:", dist.mode())

    print("Moment(3):", dist.moment(3))

    print("\nPDF at x=1:", dist.pdf(1))
    print("CDF at x=1:", dist.cdf(np.array([1]))[0])

    print("Hazard at x=1:",
          dist.hazard(np.array([1]))[0])

    print("MGF at t=0.1:",
          dist.mgf(0.1))

    print(
        "Characteristic Function at t=1:",
        dist.characteristic_function(1)
    )

    # Generate samples
    samples = dist.rvs(size=5000)

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted = NeuralSplineDistribution.fit(samples)

    print("\nFitted Knot Positions:")
    print("knots_x =", fitted.knots_x)
    print("knots_y =", fitted.knots_y)

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()
    dist.plot_histogram()


# =============================================================
# EXAMPLE USAGE: QuantileDistribution
# =============================================================

if __name__ == "__main__":

    dist = QuantileDistribution(
        mu=0,
        sigma=1,
        alpha=1.5,
        beta=2.0
    )

    print("Mean:", dist.mean())
    print("Variance:", dist.var())
    print("Standard Deviation:", dist.std())

    print("Skewness:", dist.skewness())
    print("Kurtosis:", dist.kurtosis())

    print("Entropy:", dist.entropy())

    print("Median:", dist.median())
    print("Mode:", dist.mode())

    print("Moment(3):", dist.moment(3))

    print("\nPDF at x=1:",
          dist.pdf(np.array([1]))[0])

    print("CDF at x=1:",
          dist.cdf(np.array([1]))[0])

    print("Hazard at x=1:",
          dist.hazard(np.array([1]))[0])

    print("MGF at t=0.1:",
          dist.mgf(0.1))

    print(
        "Characteristic Function at t=1:",
        dist.characteristic_function(1)
    )

    # Generate random samples
    samples = dist.rvs(size=5000)

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted = QuantileDistribution.fit(samples)

    print("\nFitted Parameters:")
    print("mu     =", fitted.mu)
    print("sigma  =", fitted.sigma)
    print("alpha  =", fitted.alpha)
    print("beta   =", fitted.beta)

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()
    dist.plot_histogram()


# =============================================================
# EXAMPLE USAGE: QuantumProbabilityDistribution
# =============================================================

if __name__ == "__main__":

    dist = QuantumProbabilityDistribution(
        sigma=1.0,
        k=2.0,
        mu=0.0
    )

    print("Mean:", dist.mean())
    print("Variance:", dist.var())
    print("Standard Deviation:", dist.std())

    print("Skewness:", dist.skewness())
    print("Kurtosis:", dist.kurtosis())

    print("Entropy:", dist.entropy())

    print("Median:", dist.median())
    print("Mode:", dist.mode())

    print("Moment(4):", dist.moment(4))

    print(
        "Energy Expectation:",
        dist.energy_expectation()
    )

    print("\nPDF at x=1:",
          dist.pdf(1))

    print("CDF at x=1:",
          dist.cdf(np.array([1]))[0])

    print("Hazard at x=1:",
          dist.hazard(np.array([1]))[0])

    print("MGF at t=0.1:",
          dist.mgf(0.1))

    print(
        "Characteristic Function at t=1:",
        dist.characteristic_function(1)
    )

    # Generate random samples
    samples = dist.rvs(size=5000)

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted = QuantumProbabilityDistribution.fit(
        samples
    )

    print("\nFitted Parameters:")
    print("mu    =", fitted.mu)
    print("sigma =", fitted.sigma)
    print("k     =", fitted.k)

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()
    dist.plot_wave_function()
    dist.plot_histogram()


    
# =============================================================
# EXAMPLE USAGE: csinhDistribution
# =============================================================

if __name__ == "__main__":

    dist = SinhArcsinhDistribution(
        epsilon=1.0,
        delta=0.8,
        mu=0,
        sigma=1
    )

    print("Mean:", dist.mean())
    print("Variance:", dist.var())
    print("Standard Deviation:", dist.std())

    print("Skewness:", dist.skewness())
    print("Kurtosis:", dist.kurtosis())

    print("Entropy:", dist.entropy())

    print("Median:", dist.median())
    print("Mode:", dist.mode())

    print("Moment(4):", dist.moment(4))

    print("\nPDF at x=1:",
          dist.pdf(1))

    print("CDF at x=1:",
          dist.cdf(1))

    print("Hazard at x=1:",
          dist.hazard(1))

    print("MGF at t=0.1:",
          dist.mgf(0.1))

    print(
        "Characteristic Function at t=1:",
        dist.characteristic_function(1)
    )

    # Generate random samples
    samples = dist.rvs(size=5000)

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted = SinhArcsinhDistribution.fit(
        samples
    )

    print("\nFitted Parameters:")
    print("epsilon =", fitted.epsilon)
    print("delta   =", fitted.delta)
    print("mu      =", fitted.mu)
    print("sigma   =", fitted.sigma)

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()
    dist.plot_histogram()


    # =============================================================
# EXAMPLE USAGE: SkewedStudentTDistribution
# =============================================================

if __name__ == "__main__":

    dist = SkewedStudentTDistribution(
        nu=8,
        lam=0.3,
        mu=0,
        sigma=1
    )

    print("Mean:", dist.mean())
    print("Variance:", dist.var())

    print(
        "Standard Deviation:",
        dist.std()
    )

    print(
        "Skewness:",
        dist.skewness()
    )

    print(
        "Kurtosis:",
        dist.kurtosis()
    )

    print(
        "Entropy:",
        dist.entropy()
    )

    print(
        "Median:",
        dist.median()
    )

    print(
        "Mode:",
        dist.mode()
    )

    print(
        "Moment(4):",
        dist.moment(4)
    )

    print(
        "\nPDF at x=1:",
        dist.pdf(1)
    )

    print(
        "CDF at x=1:",
        dist.cdf(
            np.array([1])
        )[0]
    )

    print(
        "Hazard at x=1:",
        dist.hazard(1)
    )

    print(
        "MGF at t=0.1:",
        dist.mgf(0.1)
    )

    print(
        "Characteristic Function at t=1:",
        dist.characteristic_function(1)
    )

    # Generate random samples
    samples = dist.rvs(
        size=5000
    )

    print("\nRandom Samples:")
    print(samples[:10])

    # Fit distribution
    fitted = (
        SkewedStudentTDistribution.fit(
            samples
        )
    )

    print("\nFitted Parameters:")
    print("nu    =", fitted.nu)
    print("lam   =", fitted.lam)
    print("mu    =", fitted.mu)
    print("sigma =", fitted.sigma)

    # Plotting
    dist.plot_pdf()
    dist.plot_cdf()
    dist.plot_histogram()
