Source code for lossmodels.frequency.base
from abc import ABC, abstractmethod
import numpy as np
from ..utils.random import RNGLike
[docs]
class FrequencyModel(ABC):
"""
Base class for all frequency distributions.
All frequency models must implement:
- sample
- mean
- variance
"""
[docs]
@abstractmethod
def sample(self, size: int = 1, rng: RNGLike = None) -> np.ndarray:
"""
Generate random samples of claim counts.
Parameters
----------
size : int
Number of samples
Returns
-------
np.ndarray
Array of claim counts
"""
pass
[docs]
@abstractmethod
def mean(self) -> float:
"""Expected number of claims"""
pass
[docs]
@abstractmethod
def variance(self) -> float:
"""Variance of number of claims"""
pass
[docs]
def std(self) -> float:
"""Standard deviation of claim count"""
return np.sqrt(self.variance())
def __repr__(self):
return f"{self.__class__.__name__}()"