Shortcuts

Tschuprow’s T

Module Interface

class torchmetrics.TschuprowsT(num_classes, bias_correction=True, nan_strategy='replace', nan_replace_value=0.0, **kwargs)[source]

Compute Tschuprow’s T statistic measuring the association between two categorical (nominal) data series.

T = \sqrt{\frac{\chi^2 / n}{\sqrt{(r - 1) * (k - 1)}}}

where

\chi^2 = \sum_{i,j} \ frac{\left(n_{ij} - \frac{n_{i.} n_{.j}}{n}\right)^2}{\frac{n_{i.} n_{.j}}{n}}

where n_{ij} denotes the number of times the values (A_i, B_j) are observed with A_i, B_j represent frequencies of values in preds and target, respectively.

Tschuprow’s T is a symmetric coefficient, i.e. T(preds, target) = T(target, preds).

The output values lies in [0, 1] with 1 meaning the perfect association.

Parameters
  • num_classes (int) – Integer specifing the number of classes

  • bias_correction (bool) – Indication of whether to use bias correction.

  • nan_strategy (Literal[‘replace’, ‘drop’]) – Indication of whether to replace or drop NaN values

  • nan_replace_value (Union[int, float, None]) – Value to replace NaN``s when ``nan_strategy = 'replace'

  • kwargs (Any) – Additional keyword arguments, see Advanced metric settings for more info.

Returns

Tschuprow’s T statistic

Raises
  • ValueError – If nan_strategy is not one of ‘replace’ and ‘drop’

  • ValueError – If nan_strategy is equal to ‘replace’ and nan_replace_value is not an int or float

Example

>>> from torchmetrics import TschuprowsT
>>> _ = torch.manual_seed(42)
>>> preds = torch.randint(0, 4, (100,))
>>> target = torch.round(preds + torch.randn(100)).clamp(0, 4)
>>> tschuprows_t = TschuprowsT(num_classes=5)
>>> tschuprows_t(preds, target)
tensor(0.4930)

Initializes internal Module state, shared by both nn.Module and ScriptModule.

compute()[source]

Computer Tschuprow’s T statistic.

Return type

Tensor

update(preds, target)[source]

Update state with predictions and targets.

Parameters
  • preds (Tensor) –

    1D or 2D tensor of categorical (nominal) data:

    • 1D shape: (batch_size,)

    • 2D shape: (batch_size, num_classes)

  • target (Tensor) –

    1D or 2D tensor of categorical (nominal) data:

    • 1D shape: (batch_size,)

    • 2D shape: (batch_size, num_classes)

Return type

None

Functional Interface

torchmetrics.functional.tschuprows_t(preds, target, bias_correction=True, nan_strategy='replace', nan_replace_value=0.0)[source]

Compute Tschuprow’s T statistic measuring the association between two categorical (nominal) data series.

T = \sqrt{\frac{\chi^2 / n}{\sqrt{(r - 1) * (k - 1)}}}

where

\chi^2 = \sum_{i,j} \ frac{\left(n_{ij} - \frac{n_{i.} n_{.j}}{n}\right)^2}{\frac{n_{i.} n_{.j}}{n}}

where n_{ij} denotes the number of times the values (A_i, B_j) are observed with A_i, B_j represent frequencies of values in preds and target, respectively.

Tschuprow’s T is a symmetric coefficient, i.e. T(preds, target) = T(target, preds).

The output values lies in [0, 1] with 1 meaning the perfect association.

Parameters
  • preds (Tensor) –

    1D or 2D tensor of categorical (nominal) data:

    • 1D shape: (batch_size,)

    • 2D shape: (batch_size, num_classes)

  • target (Tensor) –

    1D or 2D tensor of categorical (nominal) data:

    • 1D shape: (batch_size,)

    • 2D shape: (batch_size, num_classes)

  • bias_correction (bool) – Indication of whether to use bias correction.

  • nan_strategy (Literal[‘replace’, ‘drop’]) – Indication of whether to replace or drop NaN values

  • nan_replace_value (Union[int, float, None]) – Value to replace NaN``s when ``nan_strategy = 'replace'

Return type

Tensor

Returns

Tschuprow’s T statistic

Example

>>> from torchmetrics.functional import tschuprows_t
>>> _ = torch.manual_seed(42)
>>> preds = torch.randint(0, 4, (100,))
>>> target = torch.round(preds + torch.randn(100)).clamp(0, 4)
>>> tschuprows_t(preds, target)
tensor(0.4930)

tschuprows_t_matrix

torchmetrics.functional.nominal.tschuprows_t_matrix(matrix, bias_correction=True, nan_strategy='replace', nan_replace_value=0.0)[source]

Compute Tschuprow’s T statistic between a set of multiple variables.

This can serve as a convenient tool to compute Tschuprow’s T statistic for analyses of correlation between categorical variables in your dataset.

Parameters
  • matrix (Tensor) –

    A tensor of categorical (nominal) data, where:

    • rows represent a number of data points

    • columns represent a number of categorical (nominal) features

  • bias_correction (bool) – Indication of whether to use bias correction.

  • nan_strategy (Literal[‘replace’, ‘drop’]) – Indication of whether to replace or drop NaN values

  • nan_replace_value (Union[int, float, None]) – Value to replace NaN``s when ``nan_strategy = 'replace'

Return type

Tensor

Returns

Tschuprow’s T statistic for a dataset of categorical variables

Example

>>> from torchmetrics.functional.nominal import tschuprows_t_matrix
>>> _ = torch.manual_seed(42)
>>> matrix = torch.randint(0, 4, (200, 5))
>>> tschuprows_t_matrix(matrix)
tensor([[1.0000, 0.0637, 0.0000, 0.0542, 0.1337],
        [0.0637, 1.0000, 0.0000, 0.0000, 0.0000],
        [0.0000, 0.0000, 1.0000, 0.0000, 0.0649],
        [0.0542, 0.0000, 0.0000, 1.0000, 0.1100],
        [0.1337, 0.0000, 0.0649, 0.1100, 1.0000]])