code: def __init__(self, nobs=200, x=None, distr_x=None, distr_noise=None):
      if x is None:
          if distr_x is None:
              x = np.random.normal(loc=0, scale=self.s_x, size=nobs)
          else:
              x = distr_x.rvs(size=nobs)
          x.sort()
  
      self.x = x
  
      if distr_noise is None:
          noise = np.random.normal(loc=0, scale=self.s_noise, size=nobs)
      else:
          noise = distr_noise.rvs(size=nobs)
  
      if hasattr(self, "het_scale"):
          noise *= self.het_scale(self.x)
  
      # self.func = fg1
      self.y_true = y_true = self.func(x)
      self.y = y_true + noise
  
imports: import numpy
label_desc: Use image node_id 1 to create a new _UnivariateFunction object  with example: obj = _UnivariateFunction(nobs, x, distr_x, distr_noise)