pcntoolkit.math_functions.shash =============================== .. py:module:: pcntoolkit.math_functions.shash .. autoapi-nested-parse:: Sinh-Arcsinh (SHASH) Distribution Implementation Module. This module implements the Sinh-Arcsinh (SHASH) distribution and its variants as described in Jones and Pewsey (2009) [1]_. The SHASH distribution is a flexible distribution family that can model skewness and kurtosis through separate parameters. The module provides: 1. Basic SHASH transformations (S, S_inv, C) 2. SHASH distribution (base implementation) 3. SHASHo distribution (location-scale variant) 4. SHASHo2 distribution (alternative parameterization) 5. SHASHb distribution (standardized variant) .. rubric:: References .. [1] Jones, M. C., & Pewsey, A. (2009). Sinh-arcsinh distributions. Biometrika, 96(4), 761-780. https://doi.org/10.1093/biomet/asp053 .. rubric:: Notes The implementation uses PyMC and PyTensor for probabilistic programming capabilities. All distributions support random sampling and log-probability calculations. Attributes ---------- .. autoapisummary:: pcntoolkit.math_functions.shash.CONST1 pcntoolkit.math_functions.shash.CONST2 pcntoolkit.math_functions.shash.KV_GRADIENT_DP pcntoolkit.math_functions.shash.kv pcntoolkit.math_functions.shash.shash pcntoolkit.math_functions.shash.shashb pcntoolkit.math_functions.shash.shasho pcntoolkit.math_functions.shash.shasho2 Classes ------- .. autoapisummary:: pcntoolkit.math_functions.shash.Kv pcntoolkit.math_functions.shash.SHASH pcntoolkit.math_functions.shash.SHASHb pcntoolkit.math_functions.shash.SHASHbRV pcntoolkit.math_functions.shash.SHASHo pcntoolkit.math_functions.shash.SHASHo2 pcntoolkit.math_functions.shash.SHASHo2RV pcntoolkit.math_functions.shash.SHASHoRV pcntoolkit.math_functions.shash.SHASHrv Functions --------- .. autoapisummary:: pcntoolkit.math_functions.shash.K pcntoolkit.math_functions.shash.P pcntoolkit.math_functions.shash.S pcntoolkit.math_functions.shash.S_inv pcntoolkit.math_functions.shash.m pcntoolkit.math_functions.shash.m1m2 Module Contents --------------- .. py:class:: Kv Bases: :py:obj:`pytensor.scalar.basic.BinaryScalarOp` .. py:method:: grad(inputs: Sequence[pytensor.graph.basic.Variable[Any, Any]], output_gradients: Sequence[pytensor.graph.basic.Variable[Any, Any]]) -> List[pytensor.graph.basic.Variable] .. py:method:: impl(p: Union[float, int], x: Union[float, int]) -> float .. py:method:: st_impl(p: Union[float, int], x: Union[float, int]) -> float :staticmethod: .. py:attribute:: nfunc_spec :value: ('scipy.special.kv', 2, 1) .. py:class:: SHASH Bases: :py:obj:`pymc.distributions.Continuous` .. py:method:: P(q: float) -> float :staticmethod: .. py:method:: dist(epsilon: pytensor.tensor.TensorLike, delta: pytensor.tensor.TensorLike, **kwargs: Any) -> Any :classmethod: .. py:method:: logp(epsilon: float, delta: float) -> float .. py:method:: m1(epsilon: float, delta: float) -> float :staticmethod: .. py:method:: m1m2(epsilon: float, delta: float) -> Tuple[float, float] :staticmethod: .. py:method:: m2(epsilon: float, delta: float) -> float :staticmethod: .. py:attribute:: my_K .. py:attribute:: rv_op .. py:class:: SHASHb Bases: :py:obj:`pymc.distributions.Continuous` .. py:method:: dist(mu: pytensor.tensor.TensorLike, sigma: pytensor.tensor.TensorLike, epsilon: pytensor.tensor.TensorLike, delta: pytensor.tensor.TensorLike, **kwargs: Any) -> Any :classmethod: .. py:method:: logp(mu: float, sigma: float, epsilon: float, delta: float) -> float .. py:attribute:: rv_op .. py:class:: SHASHbRV Bases: :py:obj:`pytensor.tensor.random.op.RandomVariable` .. py:method:: rng_fn(rng: numpy.random.Generator, mu: float, sigma: float, epsilon: float, delta: float, size: Optional[Union[int, Tuple[int, Ellipsis]]] = None) -> numpy.typing.NDArray[numpy.float64] :classmethod: .. py:attribute:: dtype :value: 'floatX' .. py:attribute:: name :value: 'shashb' .. py:attribute:: signature :value: '(),(),(),()->()' .. py:class:: SHASHo Bases: :py:obj:`pymc.distributions.Continuous` .. py:method:: dist(mu: pytensor.tensor.TensorLike, sigma: pytensor.tensor.TensorLike, epsilon: pytensor.tensor.TensorLike, delta: pytensor.tensor.TensorLike, **kwargs: Any) -> Any :classmethod: .. py:method:: logp(mu: float, sigma: float, epsilon: float, delta: float) -> float .. py:attribute:: rv_op .. py:class:: SHASHo2 Bases: :py:obj:`pymc.distributions.Continuous` .. py:method:: dist(mu: pytensor.tensor.TensorLike, sigma: pytensor.tensor.TensorLike, epsilon: pytensor.tensor.TensorLike, delta: pytensor.tensor.TensorLike, **kwargs: Any) -> Any :classmethod: .. py:method:: logp(mu: float, sigma: float, epsilon: float, delta: float) -> float .. py:attribute:: rv_op .. py:class:: SHASHo2RV Bases: :py:obj:`pytensor.tensor.random.op.RandomVariable` .. py:method:: rng_fn(rng: numpy.random.Generator, mu: pytensor.tensor.TensorLike, sigma: pytensor.tensor.TensorLike, epsilon: pytensor.tensor.TensorLike, delta: pytensor.tensor.TensorLike, size: Optional[Union[int, Tuple[int, Ellipsis]]] = None) -> numpy.typing.NDArray[numpy.float64] :classmethod: .. py:attribute:: dtype :value: 'floatX' .. py:attribute:: name :value: 'shasho2' .. py:attribute:: signature :value: '(),(),(),()->()' .. py:class:: SHASHoRV Bases: :py:obj:`pytensor.tensor.random.op.RandomVariable` .. py:method:: rng_fn(rng: numpy.random.Generator, mu: pytensor.tensor.TensorLike, sigma: pytensor.tensor.TensorLike, epsilon: pytensor.tensor.TensorLike, delta: pytensor.tensor.TensorLike, size: Optional[Union[int, Tuple[int, Ellipsis]]] = None) -> numpy.typing.NDArray[numpy.float64] :classmethod: .. py:attribute:: dtype :value: 'floatX' .. py:attribute:: name :value: 'shasho' .. py:attribute:: signature :value: '(),(),(),()->()' .. py:class:: SHASHrv Bases: :py:obj:`pytensor.tensor.random.op.RandomVariable` .. py:method:: rng_fn(rng: numpy.random.Generator, epsilon: float, delta: float, size: Optional[Union[int, Tuple[int, Ellipsis]]] = None) -> numpy.typing.NDArray[numpy.float64] :classmethod: .. py:attribute:: dtype :value: 'floatX' .. py:attribute:: name :value: 'shash' .. py:attribute:: signature :value: '(),()->()' .. py:function:: K(p, x, chunks=None) .. py:function:: P(q: numpy.typing.NDArray[numpy.float64]) -> numpy.typing.NDArray[numpy.float64] The P function as given in Jones et al. .. py:function:: S(x: numpy.typing.NDArray[numpy.float64], e: numpy.typing.NDArray[numpy.float64], d: numpy.typing.NDArray[numpy.float64]) -> numpy.typing.NDArray[numpy.float64] Sinh arcsinh transformation. .. py:function:: S_inv(x: numpy.typing.NDArray[numpy.float64], e: numpy.typing.NDArray[numpy.float64], d: numpy.typing.NDArray[numpy.float64]) -> numpy.typing.NDArray[numpy.float64] Inverse sinh arcsinh transformation. .. py:function:: m(epsilon: numpy.typing.NDArray[numpy.float64], delta: numpy.typing.NDArray[numpy.float64], r: int) -> numpy.typing.NDArray[numpy.float64] The r'th uncentered moment as given in Jones et al. .. py:function:: m1m2(epsilon: float, delta: float) -> Tuple[float, float] .. py:data:: CONST1 .. py:data:: CONST2 .. py:data:: KV_GRADIENT_DP :value: 1e-08 .. py:data:: kv .. py:data:: shash .. py:data:: shashb .. py:data:: shasho .. py:data:: shasho2