class_docstr: Seemingly Unrelated Regression
  
  Parameters
  ----------
  sys : list
      [endog1, exog1, endog2, exog2,...] It will be of length 2 x M,
      where M is the number of equations endog = exog.
  sigma : array_like
      M x M array where sigma[i,j] is the covariance between equation i and j
  dfk : None, 'dfk1', or 'dfk2'
      Default is None.  Correction for the degrees of freedom
      should be specified for small samples.  See the notes for more
      information.
  
  Attributes
  ----------
  cholsigmainv : ndarray
      The transpose of the Cholesky decomposition of `pinv_wexog`
  df_model : ndarray
      Model degrees of freedom of each equation. p_{m} - 1 where p is
      the number of regressors for each equation m and one is subtracted
      for the constant.
  df_resid : ndarray
      Residual degrees of freedom of each equation. Number of observations
      less the number of parameters.
  endog : ndarray
      The LHS variables for each equation in the system.
      It is a M x nobs array where M is the number of equations.
  exog : ndarray
      The RHS variable for each equation in the system.
      It is a nobs x sum(p_{m}) array.  Which is just each
      RHS array stacked next to each other in columns.
  history : dict
      Contains the history of fitting the model. Probably not of interest
      if the model is fit with `igls` = False.
  iterations : int
      The number of iterations until convergence if the model is fit
      iteratively.
  nobs : float
      The number of observations of the equations.
  normalized_cov_params : ndarray
      sum(p_{m}) x sum(p_{m}) array
      :math:`\left[X^{T}\left(\Sigma^{-1}\otimes\boldsymbol{I}\right)X\right]^{-1}`
  pinv_wexog : ndarray
      The pseudo-inverse of the `wexog`
  sigma : ndarray
      M x M covariance matrix of the cross-equation disturbances. See notes.
  sp_exog : CSR sparse matrix
      Contains a block diagonal sparse matrix of the design so that
      exog1 ... exogM are on the diagonal.
  wendog : ndarray
      M * nobs x 1 array of the endogenous variables whitened by
      `cholsigmainv` and stacked into a single column.
  wexog : ndarray
      M*nobs x sum(p_{m}) array of the whitened exogenous variables.
  
  Notes
  -----
  All individual equations are assumed to be well-behaved, homoskedastic
  iid errors.  This is basically an extension of GLS, using sparse matrices.
  
  .. math:: \Sigma=\left[\begin{array}{cccc}
            \sigma_{11} & \sigma_{12} & \cdots & \sigma_{1M}\\
            \sigma_{21} & \sigma_{22} & \cdots & \sigma_{2M}\\
            \vdots & \vdots & \ddots & \vdots\\
            \sigma_{M1} & \sigma_{M2} & \cdots & \sigma_{MM}\end{array}\right]
  
  References
  ----------
  Zellner (1962), Greene (2003)
class_docstr_tok: ["Seemingly","Unrelated","Regression","Parameters","--","--","--","--","--","sys",":","list","[","endog1",",","exog1",",","endog2",",","exog2",",","...","]","It","will","be","of","length","2","x","M",",","where","M","is","the","number","of","equations","endog","=","exog",".","sigma",":","array_like","M","x","M","array","where","sigma","[","i",",","j","]","is","the","covariance","between","equation","i","and","j","dfk",":","None",",","'dfk1","'",",","or","'dfk2'","Default","is","None",".","Correction","for","the","degrees","of","freedom","should","be","specified","for","small","samples",".","See","the","notes","for","more","information",".","Attributes","--","--","--","--","--","cholsigmainv",":","ndarray","The","transpose","of","the","Cholesky","decomposition","of","`","pinv_wexog","`","df_model",":","ndarray","Model","degrees","of","freedom","of","each","equation",".","p_","{","m","}","-","1","where","p","is","the","number","of","regressors","for","each","equation","m","and","one","is","subtracted","for","the","constant",".","df_resid",":","ndarray","Residual","degrees","of","freedom","of","each","equation",".","Number","of","observations","less","the","number","of","parameters",".","endog",":","ndarray","The","LHS","variables","for","each","equation","in","the","system",".","It","is","a","M","x","nobs","array","where","M","is","the","number","of","equations",".","exog",":","ndarray","The","RHS","variable","for","each","equation","in","the","system",".","It","is","a","nobs","x","sum","(","p_","{","m","}",")","array",".","Which","is","just","each","RHS","array","stacked","next","to","each","other","in","columns",".","history",":","dict","Contains","the","history","of","fitting","the","model",".","Probably","not","of","interest","if","the","model","is","fit","with","`","igls","`","=","False",".","iterations",":","int","The","number","of","iterations","until","convergence","if","the","model","is","fit","iteratively",".","nobs",":","float","The","number","of","observations","of","the","equations",".","normalized_cov_params",":","ndarray","sum","(","p_","{","m","}",")","x","sum","(","p_","{","m","}",")","array",":","math",":","`","\\left","[","X^","{","T","}","\\left","(","\\Sigma^","{","-1","}","\\otimes\\boldsymbol","{","I","}","\\right",")","X\\right","]","^","{","-1","}","`","pinv_wexog",":","ndarray","The","pseudo-inverse","of","the","`","wexog","`","sigma",":","ndarray","M","x","M","covariance","matrix","of","the","cross-equation","disturbances",".","See","notes",".","sp_exog",":","CSR","sparse","matrix","Contains","a","block","diagonal","sparse","matrix","of","the","design","so","that","exog1","...","exogM","are","on","the","diagonal",".","wendog",":","ndarray","M","*","nobs","x","1","array","of","the","endogenous","variables","whitened","by","`","cholsigmainv","`","and","stacked","into","a","single","column",".","wexog",":","ndarray","M","*","nobs","x","sum","(","p_","{","m","}",")","array","of","the","whitened","exogenous","variables",".","Notes","--","--","-","All","individual","equations","are","assumed","to","be","well-behaved",",","homoskedastic","iid","errors",".","This","is","basically","an","extension","of","GLS",",","using","sparse","matrices",".","..","math",":",":","\\Sigma=\\left","[","\\begin","{","array","}","{","cccc","}","\\sigma_","{","11","}","&","\\sigma_","{","12","}","&","\\cdots","&","\\sigma_","{","1M","}","\\\\","\\sigma_","{","21","}","&","\\sigma_","{","22","}","&","\\cdots","&","\\sigma_","{","2M","}","\\\\","\\vdots","&","\\vdots","&","\\ddots","&","\\vdots\\\\","\\sigma_","{","M1","}","&","\\sigma_","{","M2","}","&","\\cdots","&","\\sigma_","{","MM","}","\\end","{","array","}","\\right","]","References","--","--","--","--","--","Zellner","(","1962",")",",","Greene","(","2003",")"]
docstr: SUR whiten method.
  
  Parameters
  ----------
  X : list of arrays
      Data to be whitened.
  
  Returns
  -------
  If X is the exogenous RHS of the system.
  ``np.dot(np.kron(cholsigmainv,np.eye(M)),np.diag(X))``
  
  If X is the endogenous LHS of the system.
docstr_tok: ["SUR","whiten","method",".","Parameters","--","--","--","--","--","X",":","list","of","arrays","Data","to","be","whitened",".","Returns","--","--","--","-","If","X","is","the","exogenous","RHS","of","the","system",".","``","np.dot","(","np.kron","(","cholsigmainv",",","np.eye","(","M",")",")",",","np.diag","(","X",")",")","``","If","X","is","the","endogenous","LHS","of","the","system","."]
code: def whiten(self, X):
      """
      SUR whiten method.
  
      Parameters
      ----------
      X : list of arrays
          Data to be whitened.
  
      Returns
      -------
      If X is the exogenous RHS of the system.
      ``np.dot(np.kron(cholsigmainv,np.eye(M)),np.diag(X))``
  
      If X is the endogenous LHS of the system.
      """
      nobs = self.nobs
      if X is self.endog:  # definitely not a robust check
          return np.dot(
              np.kron(self.cholsigmainv, np.eye(nobs)), X.reshape(-1, 1)
          )
      elif X is self.sp_exog:
          return (
              sparse.kron(self.cholsigmainv, sparse.eye(nobs, nobs)) * X
          ).toarray()
  
file_path: statsmodels/statsmodels/sandbox/sysreg.py
imports: from statsmodels.regression.linear_model import GLS
  import numpy
  from statsmodels.base.model import LikelihoodModelResults
  from scipy import sparse
label_desc: Use image node_id 5 for calling the SUR obj's underlying member method code with example usage: obj.whiten(X) and returns: np, unknown