code: def test_no_conditioning(self, joint_distribution):
      ModelSpec = collections.namedtuple("ModelSpec", "a,b,c")
      model = joint_distribution(
          ModelSpec(
              a=tfd.Normal(1.0, 1.0),
              b=tfd.Normal(3.0, 2.0),
              c=lambda a, b: tfd.Normal(a + b, 5.0),
          )
      )
  
      approx = rethinking.quap(model)
      self.assertAllCloseNested(
          approx.mean(), ModelSpec(a=1.0, b=3.0, c=4.0)
      )
  
      self.assertAllCloseNested(
          approx.stddev(),
          ModelSpec(a=1.0, b=2.0, c=30**0.5),
          atol=1e-04,
      )
  
file_path: probability/tensorflow_probability/examples/statistical_rethinking/rethinking/quap_test.py
imports: import collections
  from absl.testing import parameterized
  import tensorflow.compat.v2
  import tensorflow_probability
  from tensorflow_probability.examples.statistical_rethinking import rethinking
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 1 for calling the QuapTestJDNamedTuple obj's underlying member method code with example usage: obj.test_no_conditioning(joint_distribution) without return types