class_docstr: An implementation of ProcessCovariance using the Gaussian kernel.
  
  This class represents a parametric covariance model for a Gaussian
  process as described in the work of Paciorek et al. cited below.
  
  Following Paciorek et al [1]_, the covariance between observations with
  index `i` and `j` is given by:
  
  .. math::
  
    s[i] \cdot s[j] \cdot h(|time[i] - time[j]| / \sqrt{(u[i] + u[j]) /
    2}) \cdot \frac{u[i]^{1/4}u[j]^{1/4}}{\sqrt{(u[i] + u[j])/2}}
  
  The ProcessMLE class allows linear models with this covariance
  structure to be fit using maximum likelihood (ML). The mean and
  covariance parameters of the model are fit jointly.
  
  The mean, scaling, and smoothing parameters can be linked to
  covariates.  The mean parameters are linked linearly, and the
  scaling and smoothing parameters use an log link function to
  preserve positivity.
  
  The reference of Paciorek et al. below provides more details.
  Note that here we only implement the 1-dimensional version of
  their approach.
  
  References
  ----------
  .. [1] Paciorek, C. J. and Schervish, M. J. (2006). Spatial modeling using
      a new class of nonstationary covariance functions. Environmetrics,
      17:483–506.
      https://papers.nips.cc/paper/2350-nonstationary-covariance-functions-for-gaussian-process-regression.pdf
code: def get_cov(self, time, sc, sm):
      da = np.subtract.outer(time, time)
      ds = np.add.outer(sm, sm) / 2
  
      qmat = da * da / ds
      cm = np.exp(-qmat / 2) / np.sqrt(ds)
      cm *= np.outer(sm, sm) ** 0.25
      cm *= np.outer(sc, sc)
  
      return cm
  
imports: import numpy
  import pandas
  import patsy
  import statsmodels.base.model
  from statsmodels.regression.linear_model import OLS
  import collections
  from scipy.optimize import minimize
  from statsmodels.iolib import summary2
  from statsmodels.tools.numdiff import approx_fprime
  import warnings
label_desc: Use image node_id 1 for calling the GaussianCovariance obj's underlying member method code with example usage: obj.get_cov(time, sc, sm) and returns: cm