# neurostatx.statistics.utils

*module*

[View source](https://github.com/gagnonanthony/NeuroStatX/blob/main/neurostatx/statistics/utils.py#L1-L1)

## neurostatx.statistics.utils.KNNimputation

*function*

```python
def KNNimputation(ref_df, df, n_neighbors=5, weights='distance', metric='nan_euclidean', keep_all_features=True)
```

Impute missing values in ``df`` from a complete reference table.

Fits sklearn ``KNNImputer`` on ``ref_df`` and applies it to ``df``. Both
tables must share the same columns, and ``ref_df`` should contain no
missing values.

**Parameters**

- `ref_df` (`pd.DataFrame`) — Complete reference dataset used to learn neighbor relationships.
- `df` (`pd.DataFrame`) — Dataset to impute.
- `n_neighbors` (`int`) (default: `5`) — Number of neighbors. Defaults to 5.
- `weights` (`str`) (default: `'distance'`) — Neighbor weighting, ``"uniform"`` or ``"distance"``. Defaults to ``"distance"``.
- `metric` (`str`) (default: `'nan_euclidean'`) — Distance metric. Defaults to ``"nan_euclidean"``.
- `keep_all_features` (`bool`) (default: `True`) — If True, columns that are entirely missing are still imputed. Defaults to True.

**Returns**

- `out` (`pd.DataFrame`) — Imputed dataset.

**Examples**

```pycon
>>> import pandas as pd
>>> import numpy as np
>>> from neurostatx.statistics.utils import KNNimputation
>>> ref = pd.DataFrame({"a": [1.0, 2.0, 3.0], "b": [2.0, 4.0, 6.0]})
>>> df = pd.DataFrame({"a": [1.5, np.nan], "b": [3.0, 5.0]})
>>> KNNimputation(ref, df, n_neighbors=2).isna().sum().sum()
0
```

[View source](https://github.com/gagnonanthony/NeuroStatX/blob/main/neurostatx/statistics/utils.py#L5-L60)

## neurostatx.statistics.utils.apply_various_models

*function*

```python
def apply_various_models(df, mod)
```

Apply a fitted factor or sklearn transformer to ``df``.

Supports semopy models, sklearn transformers, and factor_analyzer
models.

**Parameters**

- `df` (`pd.DataFrame`) — Data to transform.
- `mod` (`object`) — Fitted model exposing ``predict_factors`` or ``transform``.

**Returns**

- `y` (`pd.DataFrame`) — Transformed factor or component scores.

**Examples**

```pycon
>>> import pandas as pd
>>> from sklearn.decomposition import PCA
>>> from neurostatx.statistics.utils import apply_various_models
>>> df = pd.DataFrame({"a": [1.0, 2.0, 3.0], "b": [2.0, 4.0, 6.0]})
>>> pca = PCA(n_components=1).fit(df)
>>> apply_various_models(df, pca).shape
(3, 1)
```

[View source](https://github.com/gagnonanthony/NeuroStatX/blob/main/neurostatx/statistics/utils.py#L63-L105)
