Skip to Content

PLANCK

Overview

The PLANCK function computes values related to the Planck discrete exponential distribution, which describes the probability of a non-negative integer outcome with exponential decay. This function can return the probability mass function (PMF), cumulative distribution function (CDF), survival function (SF), inverse CDF (quantile/ICDF), inverse SF (ISF), mean, variance, standard deviation, or median for a given value.

For more details, see the scipy.stats.planck documentation.

This example function is provided as-is without any representation of accuracy.

Usage

To use the function in Excel:

=PLANCK(k, lambda, [mode], [loc])
  • k (float or 2D list, required): Value(s) at which to evaluate the distribution. For PMF, CDF, SF, ICDF, and ISF, this is the event count. For statistics modes, this is ignored and can be set to 0.
  • lambda (float, required): Shape parameter (>0).
  • mode (str, optional, default=“pmf”): Output type. One of "pmf", "cdf", "sf", "icdf", "isf", "mean", "var", "std", or "median".
  • loc (float, optional, default=0): Location parameter (shifts the distribution).

The function returns a scalar or 2D list of floats (for array input), or an error message (string) if the input is invalid. The output depends on the selected mode:

  • pmf: Probability mass function at k.
  • cdf: Cumulative distribution function at k.
  • sf: Survival function (1 - CDF) at k.
  • icdf: Inverse CDF (quantile) for probability k.
  • isf: Inverse survival function for probability k.
  • mean: Mean of the distribution.
  • var: Variance of the distribution.
  • std: Standard deviation of the distribution.
  • median: Median of the distribution.

Examples

Example 1: PMF at k=2, lambda=0.5

Inputs:

klambdamodeloc
20.5pmf0

Excel formula:

=PLANCK(2, 0.5, "pmf", 0)

Expected output:

Result
0.1455

Example 2: CDF at k=2, lambda=0.5

Inputs:

klambdamodeloc
20.5cdf0

Excel formula:

=PLANCK(2, 0.5, "cdf", 0)

Expected output:

Result
0.7769

Example 3: Survival Function at k=2, lambda=0.5

Inputs:

klambdamodeloc
20.5sf0

Excel formula:

=PLANCK(2, 0.5, "sf", 0)

Expected output:

Result
0.2231

Example 4: Inverse CDF (ICDF) for probability k=0.5, lambda=0.5

Inputs:

klambdamodeloc
0.50.5icdf0

Excel formula:

=PLANCK(0.5, 0.5, "icdf", 0)

Expected output:

Result
1

Example 5: Mean, Variance, Std, Median

Inputs:

klambdamodeloc
00.5mean0
00.5var0
00.5std0
00.5median0

Excel formulas:

=PLANCK(0, 0.5, "mean", 0) =PLANCK(0, 0.5, "var", 0) =PLANCK(0, 0.5, "std", 0) =PLANCK(0, 0.5, "median", 0)

Expected outputs:

Result
1.5415
3.9177
1.9793
1

Python Code

from scipy.stats import planck as scipy_planck def planck(k, lambda_, mode="pmf", loc=0): """ Compute Planck distribution values: PMF, CDF, SF, ICDF, ISF, mean, variance, std, or median. Args: k: Value(s) at which to evaluate (float or 2D list). lambda_: Shape parameter (float, >0). mode: Output type: 'pmf', 'cdf', 'sf', 'icdf', 'isf', 'mean', 'var', 'std', or 'median'. loc: Location parameter (float, default 0). Returns: Scalar or 2D list of floats, or error message (str) if invalid. """ # Validate lambda_ try: lam_val = float(lambda_) if lam_val <= 0: return "Invalid input: lambda must be > 0." except Exception: return "Invalid input: lambda must be a number." # Validate loc try: loc_val = float(loc) except Exception: return "Invalid input: loc must be a number." # Validate mode valid_modes = ["pmf", "cdf", "sf", "icdf", "isf", "mean", "var", "std", "median"] if not isinstance(mode, str) or mode not in valid_modes: return f"Invalid input: mode must be one of {valid_modes}." # Helper to process k (scalar or 2D list) def process_k(val): try: return float(val) except Exception: return None # Handle statistics if mode == "mean": return scipy_planck.mean(lam_val, loc=loc_val) if mode == "var": return scipy_planck.var(lam_val, loc=loc_val) if mode == "std": return scipy_planck.std(lam_val, loc=loc_val) if mode == "median": return scipy_planck.median(lam_val, loc=loc_val) # PMF, CDF, SF, ICDF, ISF def compute(val): kval = process_k(val) if kval is None: return "Invalid input: k must be a number." if mode == "pmf": return float(scipy_planck.pmf(kval, lam_val, loc=loc_val)) elif mode == "cdf": return float(scipy_planck.cdf(kval, lam_val, loc=loc_val)) elif mode == "sf": return float(scipy_planck.sf(kval, lam_val, loc=loc_val)) elif mode == "icdf": return float(scipy_planck.ppf(kval, lam_val, loc=loc_val)) elif mode == "isf": return float(scipy_planck.isf(kval, lam_val, loc=loc_val)) # 2D list or scalar if isinstance(k, list): # 2D list if not all(isinstance(row, list) for row in k): return "Invalid input: k must be a scalar or 2D list." result = [] for row in k: result_row = [] for val in row: out = compute(val) if isinstance(out, str): return out result_row.append(out) result.append(result_row) return result else: return compute(k)

Live Demo

Example Workbook

Link to Workbook

Last updated on