
    M/Ph;                        d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZmZ d Zd	 Zd
 Zd Zd Zd Z G d de          Zedk    rdZg dZg dZej                            d            eeeed          Zee                                z  Z ee          Zd\  e_        e_          e!e          e_        e"                    g d          Z# e$dee            e$e#j%                   ddl&m'Z'  e$ e'ed                      eee#j%        dd                   \  Z(Z) e
j*                    Z+e,                    e#j%        dd         e          e#j%        d         dz  z  Z- e$ eee-                      eee-          Z. e$e./                                e.j0                    e$ eee-                      e$ eee-                     dS dS )zMultivariate Normal Model with full covariance matrix

toeplitz structure is not exploited, need cholesky or inv for toeplitz

Author: josef-pktd
    N)linalg)toeplitz)GenericLikelihoodModel)sunspots)ArmaProcess
arma_acovfarma_generate_samplec                    t          |           }|dz  }| dz                                  }t          j        |           |z  }|dt          j        t          j        |z            z   |z  z  }t          j        |          rB|j        dk    r7|dt          j        t          j                            |                    z  z  }|S )zxloglike multivariate normal

    copied from GLS and adjusted names
    not sure why this differes from mvn_loglike
           @            ?)	lensumnplogpianyndimr   det)xsigmanobsnobs2SSRllfs         a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/miscmodels/try_mlecov.pymvn_loglike_sumr      s     q66D3JEa4**,,C6#;;,
CAbfRU5[!!!5((C	ve}} /qr"&u--....J    c                 b   t          j        |          }t          j        t          j                             |                    }t          |           }t          j        | t          j        ||                      }||t          j        dt          j        z            z  z  }||z  }|dz  }|S )loglike multivariate normal

    assumes x is 1d, (nobs,) and sigma is 2d (nobs, nobs)

    brute force from formula
    no checking of correct inputs
    use of inv and log-det should be replace with something more efficient
    r   r   )r   invr   r   r   r   dotr   )r   r   sigmainvlogdetsigmar   r   s         r   mvn_logliker&   %   s     z%  H&u--..Kq66DF1bfXq))**
*C4"&RU####C;C3JCJr   c           
         t           j                            |          }t           j                            |          j        }t          j        ||           }t          j        t           j                            |                    }t          |           }ddl	m
} t          d           t          t          j        |j                            |                                                               t          j        |j        |           }||t          j        dt           j        z            z  z  }||z  }|dz  }||dt          j        t          j        t          j        |                              z  fS )r!   r   )statszscipy.statsr   r   )r   r   r"   choleskyTr#   r   r   r   scipyr(   printnormpdfr   r   diagonal)	r   r   r$   cholsigmainv
x_whitenedr%   r   r(   r   s	            r   mvn_loglike_cholr2   :   s2    y}}U##H9%%h//1La((J&u--..Kq66D	-	"&
++
,
,
0
0
2
2333F:<,,
,C4"&RU####C;C3JCQr{</H/H(I(I!J!JJJJr   c                    t           j                            |          }t           j                            |          j        }t          j        ||           }t          j        t           j                            |                    }d}dt          j        |          dt          j        t          j        |                    z  z
  |dz  |z  z   t          j        dt           j	        z            z   z  }|S )r!         ?r   r   r   )
r   r   r"   r)   r*   r#   r   r   r/   r   )r   r   r$   r0   r1   r%   sigma2llikes           r   mvn_nloglike_obsr7   V   s     y}}U##H9%%h//1L a((J &u--..KFRVF^^b"&\1J1J*K*K&KK']F23VAbeG__- .E Lr   c                 N    t          |           }|                    d          S )N)maF)retnew)r   invertroots)r9   procs     r   invertiblerootsr=   v   s)    "D5)))r   c                     t           j        dg|d | j                  f         }t           j        dg|| j         d          f         }dd lm} |                    |          |                    |          fS )Nr   r   )r   r_narnmanumpy.polynomial
polynomial
Polynomial)selfparamsarr9   polys        r   getpolyrI   {   sx    	sVITXI&&&	'B	sFDH9::&&	'B######??2 3 333r   c                   $    e Zd ZdZd Zd Zd ZdS )MLEGLSa  ARMA model with exact loglikelhood for short time series

    Inverts (nobs, nobs) matrix, use only for nobs <= 200 or so.

    This class is a pattern for small sample GLS-like models. Intended use
    for loglikelihood of initial observations for ARMA.



    TODO:
    This might be missing the error variance. Does it assume error is
       distributed N(0,1)
    Maybe extend to mean handling, or assume it is already removed.
    c                     t           j        dg|d| j                  f         }t           j        dg|| j         d         f         }t	          |||          }|d|         }t          |          }|S )zget autocovariance matrix from ARMA regression parameter

        ar parameters are assumed to have rhs parameterization

        r   N)r   )r   r?   r@   rA   r   r   )rE   rF   r   rG   r9   autocovr   s          r   _params2covzMLEGLS._params2cov   s|     UA3		***+UA3yzz**+ R$/// %4%.!!r   c                     |                      |d d         | j                  }||d         dz  z  }t          | j        |          }|S )Nr   )rN   r   r&   endog)rE   rF   siglogliks       r   loglikezMLEGLS.loglike   sI    vcrc{DI66F2JM!TZ--r   c                 P    | j         |i |}t          j        dg|j        | j        | j        | j        z            f         }t          |          \  }}|sP|j                                        }|dd          || j        | j        | j        z   <   |                      |          }|S )Nr   start_params)fitr   r?   rF   r@   rA   r=   copy)rE   argskwdsresr9   mainvwasinvertiblerW   s           r   fit_invertiblezMLEGLS.fit_invertible   s    dh%%%UA3
48TXdh->#>??@.r22} 	6:??,,L8=abb	L48DH#445(((55C
r   N)__name__
__module____qualname____doc__rN   rT   r_    r   r   rK   rK      sK            &  	 	 	 	 	r   rK   __main__2   )r4   皙皙?)r4   rh   皙?iM r   )r   r   )rh   rg   ri   rh   r4   rV   DGP)yule_walkerrP   )1rc   numpyr   r+   r   scipy.linalgr   statsmodels.base.modelr   statsmodels.datasetsr   statsmodels.tsa.arima_processr   r   r	   r   r&   r2   r7   r=   rI   rK   r`   r   rG   r9   randomseedymeanmodr@   rA   r   rX   r\   r,   rF   statsmodels.regressionrk   arpolymapolyloaddatarN   r   llor   shaperd   r   r   <module>r}      s              ! ! ! ! ! ! 9 9 9 9 9 9 ) ) ) ) ) )              *K K K8  @* * *
4 4 43 3 3 3 3# 3 3 3n zD			B			BINN7R4**AMA
&))CCGSWs1vvCH
''888'
9
9C	E%R	E#*222222	E++a

 WS#*SbS/22NFF8=??D OOCJssOT22SZ^Q5FFE	E++a

   

1e
$
$C	E#''))SY	E

1e
$
$%%%	E//!U
#
#$$$$$O r   