class_docstr: Pairwise likelihood using probit function
  
  Given two items v and u with utilities f(v) and f(u), the probability that we
  prefer v over u with probability std_normal_cdf((f(v) - f(u))/sqrt(2)). Note
  that this formulation implicitly assume the noise term is fixed at 1.
docstr: Calculate the z score given estimated utility values and
  the comparison matrix D.
docstr_tok: ["Calculate","the","z","score","given","estimated","utility","values","and","the","comparison","matrix","D","."]
code: def _calc_z(self, utility: Tensor, D: Tensor) -> Tensor:
      """Calculate the z score given estimated utility values and
      the comparison matrix D.
      """
      scaled_util = (utility / math.sqrt(2)).unsqueeze(-1)
      z = D.to(scaled_util) @ scaled_util
      z = z.clamp(-self._zlim, self._zlim).squeeze(-1)
      return z
  
imports: from __future__ import annotations
  import math
  from abc import ABC, abstractmethod
  from typing import Any, Tuple
  import torch
  from botorch.utils.probability.utils import log_ndtr, log_phi, standard_normal_log_hazard
  from gpytorch.likelihoods import Likelihood
  from torch import Tensor
  from torch.distributions import Bernoulli
label_desc: Use image node_id 1 for calling the PairwiseProbitLikelihood obj's underlying member method code with example usage: obj._calc_z(utility, D) and returns: z