# evidently.calculations.stattests

Available statistical tests.\
For detailed information about statistical tests see module documentation.

## Submodules

## anderson\_darling\_stattest module <a href="#module-evidently.calculations.stattests.anderson_darling_stattest" id="module-evidently.calculations.stattests.anderson_darling_stattest"></a>

Anderson-Darling test of two samples.

Name: “anderson”

Import:

```python
>>> from evidently.calculations.stattests import anderson_darling_test
```

Properties:

* only for numerical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import anderson_darling_test
>>> options = DataDriftOptions(all_features_stattest=anderson_darling_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="anderson")
```

## chisquare\_stattest module <a href="#module-evidently.calculations.stattests.chisquare_stattest" id="module-evidently.calculations.stattests.chisquare_stattest"></a>

Chisquare test of two samples.

Name: “chisquare”

Import:

```python
>>> from evidently.calculations.stattests import chi_stat_test
```

Properties:

* only for categorical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import chi_stat_test
>>> options = DataDriftOptions(all_features_stattest=chi_stat_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="chisquare")
```

## cramer\_von\_mises\_stattest module <a href="#module-evidently.calculations.stattests.cramer_von_mises_stattest" id="module-evidently.calculations.stattests.cramer_von_mises_stattest"></a>

Cramer-Von-mises test of two samples.

Name: “cramer\_von\_mises”

Import:

```python
>>> from evidently.calculations.stattests import cramer_von_mises
```

Properties:

* only for numerical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import cramer_von_mises
>>> options = DataDriftOptions(all_features_stattest=cramer_von_mises)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="cramer_von_mises")
```

### class CramerVonMisesResult(statistic, pvalue)

Bases: `object`

## energy\_distance module <a href="#module-evidently.calculations.stattests.energy_distance" id="module-evidently.calculations.stattests.energy_distance"></a>

Energy-distance test of two samples.

Name: “ed”

Import:

```python
>>> from evidently.calculations.stattests import energy_dist_test
```

Properties:

* only for numerical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import energy_dist_test
>>> options = DataDriftOptions(all_features_stattest=energy_dist_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="ed")
```

## epps\_singleton\_stattest module <a href="#module-evidently.calculations.stattests.epps_singleton_stattest" id="module-evidently.calculations.stattests.epps_singleton_stattest"></a>

Epps-Singleton test of two samples.

Name: “es”

Import:

```python
>>> from evidently.calculations.stattests import epps_singleton_test
```

Properties:

* only for numerical features
* returns p-value
* default threshold 0.05

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import epps_singleton_test
>>> options = DataDriftOptions(all_features_stattest=epps_singleton_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="es")
```

## fisher\_exact\_stattest module <a href="#module-evidently.calculations.stattests.fisher_exact_stattest" id="module-evidently.calculations.stattests.fisher_exact_stattest"></a>

Fisher’s exact test of two samples.

Name: “fisher\_exact”

Import:

```python
>>> from evidently.calculations.stattests import fisher_exact_test
```

Properties:

* only for categorical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import fisher_exact_test
>>> options = DataDriftOptions(all_features_stattest=fisher_exact_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="fisher_exact")
```

## g\_stattest module <a href="#module-evidently.calculations.stattests.g_stattest" id="module-evidently.calculations.stattests.g_stattest"></a>

G-test of two samples.

Name: “g\_test”

Import:

```python
>>> from evidently.calculations.stattests import g_test
```

Properties:

* only for categorical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import g_test
>>> options = DataDriftOptions(all_features_stattest=g_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="g_test")
```

## hellinger\_distance module <a href="#module-evidently.calculations.stattests.hellinger_distance" id="module-evidently.calculations.stattests.hellinger_distance"></a>

Hellinger distance of two samples.

Name: “hellinger”

Import:

```python
>>> from evidently.calculations.stattests import hellinger_stat_test
```

Properties:

* only for categorical and numerical features
* returns distance

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import hellinger_stat_test
>>> options = DataDriftOptions(all_features_stattest=hellinger_stat_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="hellinger")
```

## jensenshannon module <a href="#module-evidently.calculations.stattests.jensenshannon" id="module-evidently.calculations.stattests.jensenshannon"></a>

Jensen-Shannon distance of two samples.

Name: “jensenshannon”

Import:

```python
>>> from evidently.calculations.stattests import jensenshannon_stat_test
```

Properties:

* only for categorical and numerical features
* returns distance

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import jensenshannon_stat_test
>>> options = DataDriftOptions(all_features_stattest=jensenshannon_stat_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="jensenshannon")
```

## kl\_div module <a href="#module-evidently.calculations.stattests.kl_div" id="module-evidently.calculations.stattests.kl_div"></a>

Kullback-Leibler divergence of two samples.

Name: “kl\_div”

Import:

```python
>>> from evidently.calculations.stattests import kl_div_stat_test
```

Properties:

* only for categorical and numerical features
* returns divergence

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import kl_div_stat_test
>>> options = DataDriftOptions(all_features_stattest=kl_div_stat_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="kl_div")
```

## ks\_stattest module <a href="#module-evidently.calculations.stattests.ks_stattest" id="module-evidently.calculations.stattests.ks_stattest"></a>

Kolmogorov-Smirnov test of two samples.

Name: “ks”

Import:

```python
>>> from evidently.calculations.stattests import ks_stat_test
```

Properties:

* only for numerical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import ks_stat_test
>>> options = DataDriftOptions(all_features_stattest=ks_stat_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="ks")
```

## mann\_whitney\_urank\_stattest module <a href="#module-evidently.calculations.stattests.mann_whitney_urank_stattest" id="module-evidently.calculations.stattests.mann_whitney_urank_stattest"></a>

Mann-Whitney U-rank test of two samples.

Name: “mannw”

Import:

```python
>>> from evidently.calculations.stattests import mann_whitney_u_stat_test
```

Properties:

* only for numerical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import mann_whitney_u_stat_test
>>> options = DataDriftOptions(all_features_stattest=mann_whitney_u_stat_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="mannw")
```

## psi module <a href="#module-evidently.calculations.stattests.psi" id="module-evidently.calculations.stattests.psi"></a>

PSI of two samples.

Name: “psi”

Import:

```python
>>> from evidently.calculations.stattests import psi_stat_test
```

Properties:

* only for categorical and numerical features
* returns PSI value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import psi_stat_test
>>> options = DataDriftOptions(all_features_stattest=psi_stat_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="psi")
```

## registry module <a href="#module-evidently.calculations.stattests.registry" id="module-evidently.calculations.stattests.registry"></a>

### class StatTest(name: str, display\_name: str, func: Callable\[\[pandas.core.series.Series, pandas.core.series.Series, str, float], Tuple\[float, bool]], allowed\_feature\_types: List\[str], default\_threshold: float = 0.05)

Bases: `object`

#### Attributes:

&#x20;    **allowed\_feature\_types : List\[str]**

&#x20;    **default\_threshold : float = 0.05**

&#x20;    **display\_name : str**

&#x20;    **func : Callable\[\[Series, Series, str, float], Tuple\[float, bool]]**

&#x20;    **name : str**

### exception StatTestInvalidFeatureTypeError(stattest\_name: str, feature\_type: str)

Bases: `ValueError`

### exception StatTestNotFoundError(stattest\_name: str)

Bases: `ValueError`

### class StatTestResult(drift\_score: float, drifted: bool, actual\_threshold: float)

Bases: `object`

#### Attributes:

&#x20;    **actual\_threshold : float**

&#x20;    **drift\_score : float**

&#x20;    **drifted : bool**

### get\_stattest(reference\_data: Series, current\_data: Series, feature\_type: str, stattest\_func: Optional\[Union\[str, Callable\[\[Series, Series, str, float], Tuple\[float, bool]], StatTest]])

### register\_stattest(stat\_test: StatTest)

## t\_test module <a href="#module-evidently.calculations.stattests.t_test" id="module-evidently.calculations.stattests.t_test"></a>

T test of two samples.

Name: “t\_test”

Import:

```python
>>> from evidently.calculations.stattests import t_test
```

Properties:

* only for numerical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import t_test
>>> options = DataDriftOptions(all_features_stattest=t_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="t_test")
```

## tvd\_stattest module <a href="#module-evidently.calculations.stattests.tvd_stattest" id="module-evidently.calculations.stattests.tvd_stattest"></a>

Total variation distance of two samples.

Name: “TVD”

Import:

```python
>>> from evidently.calculations.stattests import tvd_test
```

Properties:

* only for numerical features
* returns distance

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import tvd_test
>>> options = DataDriftOptions(all_features_stattest=tvd_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="TVD")
```

## utils module <a href="#module-evidently.calculations.stattests.utils" id="module-evidently.calculations.stattests.utils"></a>

### generate\_fisher2x2\_contingency\_table(reference\_data: Series, current\_data: Series)

Generate 2x2 contingency matrix for fisher exact test\
:param reference\_data: reference data\
:param current\_data: current data

* **Raises**

  `ValueError` – if reference\_data and current\_data are not of equal length
* **Returns**

  contingency\_matrix for binary data
* **Return type**

  contingency\_matrix

### get\_binned\_data(reference\_data: Series, current\_data: Series, feature\_type: str, n: int, feel\_zeroes: bool = True)

Split variable into n buckets based on reference quantiles\
:param reference\_data: reference data\
:param current\_data: current data\
:param feature\_type: feature type\
:param n: number of quantiles

* **Returns**

  % of records in each bucket for reference\
  current\_percents: % of records in each bucket for current
* **Return type**

  reference\_percents

### get\_unique\_not\_nan\_values\_list\_from\_series(current\_data: Series, reference\_data: Series)

Get unique values from current and reference series, drop NaNs

### permutation\_test(reference\_data, current\_data, observed, test\_statistic\_func, iterations=100)

Perform a two-sided permutation test\
:param reference\_data: reference data\
:param current\_data: current data\
:param observed: observed value\
:param test\_statistic\_func: the test statistic function\
:param iterations: number of times to permute

* **Returns**

  two-sided p\_value
* **Return type**

  p\_value

## wasserstein\_distance\_norm module <a href="#module-evidently.calculations.stattests.wasserstein_distance_norm" id="module-evidently.calculations.stattests.wasserstein_distance_norm"></a>

Wasserstein distance of two samples.

Name: “wasserstein”

Import:

```python
>>> from evidently.calculations.stattests import wasserstein_stat_test
```

Properties:

* only for numerical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import wasserstein_stat_test
>>> options = DataDriftOptions(all_features_stattest=wasserstein_stat_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="wasserstein")
```

## z\_stattest module <a href="#module-evidently.calculations.stattests.z_stattest" id="module-evidently.calculations.stattests.z_stattest"></a>

Mann-Whitney U-rank test of two samples.

Name: “mannw”

Import:

```python
>>> from evidently.calculations.stattests import mann_whitney_u_stat_test
```

Properties:

* only for numerical features
* returns p-value

### Example

Using by object:

```python
>>> from evidently.options import DataDriftOptions
>>> from evidently.calculations.stattests import mann_whitney_u_stat_test
>>> options = DataDriftOptions(all_features_stattest=mann_whitney_u_stat_test)
```

Using by name:

```python
>>> from evidently.options import DataDriftOptions
>>> options = DataDriftOptions(all_features_stattest="mannw")
```

### proportions\_diff\_z\_stat\_ind(ref: DataFrame, curr: DataFrame)

### proportions\_diff\_z\_test(z\_stat, alternative='two-sided')


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-old.evidentlyai.com/reference/api-reference/evidently.calculations/evidently.calculations.stattests.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
