
    M/Ph                        d Z ddlZddlmZmZ  G d de          Zedk    rddlm	Z
  ej        dd	          Z ej        ed
         ed
         dz  eg d                             e                              ej        d         d          f          Z e
j        ed          Z eed         eg d          Ze                                Z eej                   dS dS )z>Restricted least squares

from pandas
License: Simplified BSD
    N)GLSRegressionResultsc                        e Zd ZdZd fd	ZdZed             ZdZed             Z	dZ
ed             ZdZed             ZdZed	             ZdZed
             Zd Z xZS )RLSa  
    Restricted general least squares model that handles linear constraints

    Parameters
    ----------
    endog : array_like
        n length array containing the dependent variable
    exog : array_like
        n-by-p array of independent variables
    constr : array_like
        k-by-p array of linear constraints
    param : array_like or scalar
        p-by-1 array (or scalar) of constraint parameters
    sigma (None): scalar or array_like
        The weighting matrix of the covariance. No scaling by default (OLS).
        If sigma is a scalar, then it is converted into an n-by-n diagonal
        matrix with sigma as each diagonal element.
        If sigma is an n-length array, then it is assumed to be a diagonal
        matrix with the given sigma on the diagonal (WLS).

    Notes
    -----
    endog = exog * beta + epsilon
    weights' * constr * beta = param

    See Greene and Seaks, "The Restricted Least Squares Estimator:
    A Pedagogical Note", The Review of Economics and Statistics, 1991.
            Nc                 p   |j         \  }}t          j        |          }|j        dk    rd|j         d         }	}n
|j         \  }}	||	k    rt	          d          || _        || _        || _        t          j        |          r|dk    rt          j	        |f          |z  }|| _
        |d}t          j        |          rt          j	        |          |z  }t          j        |          }|j        dk    rEt          j        |          | _        t          j        t          j        |                    | _        nR|| _        t          j                            t          j                            | j                            j        | _        t)          t*          |                               ||           d S )N   r   z#Constraints and design do not aligng      ?)shapenpasarrayndim	Exceptionncoeffsnconstraint
constraintisscalaronesparamsqueezediagsigmasqrtcholsigmainvlinalgcholeskypinvTsuperr   __init__)selfendogexogconstrr   r   NQKP	__class__s             W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/sandbox/rls.pyr   zRLS.__init__(   su   z1F##;!fl1oqAA<DAq66ABBB ;u 	*!a%%GQDMME)E
=E;u 	'GAJJ&E
5!!:??DJ " 7 7DDJ "	 2 229>>$*3M3M N N PDc4!!%.....    c                    | j         | j        }| j        }t          j        ||z   ||z   f          }t          j        | j        j        | j                  |d|d|f<   t          j        | j	        ||f          }|j        |d||df<   |||dd|f<   t          j        ||f          ||d|df<   || _         | j         S )z8Whitened exogenous variables augmented with restrictionsN)
_rwexogr   r   r   zerosdotwexogr   reshaper   )r    r'   r&   designr#   s        r)   rwexogz
RLS.rwexogE   s     <A AXq1ua!en--FVDJL$*==F2A2rr6NZ!Q88F#XF2A2qrr6N#F122rr6NXq!f--F122qrr6N!DL|r*   c                 p    | j         )t          j                            | j                  | _         | j         S )zInverse of self.rwexog)_inv_rwexogr   r   invr2   )r    s    r)   
inv_rwexogzRLS.inv_rwexogU   s.     #!y}}T[99Dr*   c                     | j         b| j        }| j        }t          j        ||z   f          }t          j        | j        j        | j                  |d|<   | j	        ||d<   || _         | j         S )zBWhitened endogenous variable augmented with restriction parametersN)
_rwendogr   r   r   r-   r.   r/   r   wendogr   )r    r'   r&   responses       r)   rwendogzRLS.rwendog]   sm     = A AxQ))H6$*,<<HRaRL:HQRRL$DM}r*   c                 \    | j         | j        }| j        d|d|f         | _         | j         S )z'Parameter covariance under restrictionsN)_ncpr   r6   )r    r'   s     r)   rnorm_cov_paramszRLS.rnorm_cov_paramsj   s5     9ABQB/DIyr*   c                    | j         | j        }t          j        | j        | j                  }t          j        | j        |z
  dz            }t          j        |          }t          j        | j	        | j        j
                  }t          j        t          j        ||          |j
                  |z  |z  | _         | j         S )zu
        Heteroskedasticity-consistent parameter covariance
        Used to calculate White standard errors.
        N   )_wncpdf_residr   r.   r/   coeffsr   r9   sumr>   r   )r    dfpredepssigmaSqpinvXs         r)   wrnorm_cov_paramszRLS.wrnorm_cov_paramss   s     :B6$*dk22D'4;-!344CfSkkGF40$*,??Euc 2 2EG<<rAGKDJzr*   c                     | j         3t          j        | j        | j                  }|d| j                 | _         | j         S )zEstimated parametersN)_coeffsr   r.   r6   r;   r   )r    
betaLambdas     r)   rC   z
RLS.coeffs   s;     <>>J%mt|m4DL|r*   c                 B    | j         }t          | | j        |          }|S )N)normalized_cov_params)rJ   r   rC   )r    rncplfits      r)   fitzRLS.fit   s%    % t{$OOOr*   )r   N)__name__
__module____qualname____doc__r   r,   propertyr2   r4   r6   r8   r;   r=   r>   rA   rJ   rL   rC   rR   __classcell__)r(   s   @r)   r   r   
   s        :/ / / / / /8 G  X K    X  H	 	 X	 D  X E  X G  X      r*   r   __main__z./rlsdata.txtT)namesYr@   )NENCWS)prependG)r   r   r   r	   r	   r	   r	   )r#   )rV   numpyr   #statsmodels.regression.linear_modelr   r   r   rS   statsmodels.apiapism
genfromtxtdtacolumn_stackviewfloatr0   r
   r1   add_constantrls_modrR   rls_fitprintparams r*   r)   <module>rs      sX   
     F F F F F F F FD D D D D# D D DL Z      
"-t
4
4
4CR_c#hs3x{37J7J7J3K3P3PQV3W3W3_3_`c`ijk`lmo3p3pqrrFR_VT222Fc#c(6///:::GkkmmG	E'. r*   