
    'YHh;                     Z   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(  r`dZg dZg dZej4                  j7                  d        eeeed      Zeej;                         z  Z ee      Zd\  e_        e_          e!e      e_        ejE                  g d      Z# e$dee        e$e#jJ                         ddl&m'Z'  e$ e'ed              eee#jJ                  dd       \  Z(Z) e
jT                         Z+ejY                  e#jJ                  dd e      e#jJ                  d   dz  z  Z- e$ eee-              eee-      Z. e$e.j_                         e.j`                          e$ eee-              e$ eee-             yy)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  j                         }t        j                  |       |z  }|dt        j                  t        j                  |z        z   |z  z  }t        j
                  |      rG|j                  dk(  r8|dt        j                  t        j                  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         Z/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/miscmodels/try_mlecov.pymvn_loglike_sumr      s     q6D3JEa4**,C66#;,
CAbffRUU5[!!5((C	vve}qr"&&u-...J    c                 l   t        j                  |      }t        j                  t        j                   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     zz% H&&u-.Kq6DFF1bffXq)*
*C4"&&RUU###C;C3JCJr   c           
         t         j                  j                  |      }t         j                  j                  |      j                  }t        j
                  ||       }t        j                  t         j                  j                  |            }t        |       }ddl	m
} t        d       t        t        j                  |j                  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   :   s    yy}}U#H99%%h/11La(J&&u-.Kq6D	-	"&&
+
,
0
0
23FF:<<,
,C4"&&RUU###C;C3JCQr{{</H(I!JJJJr   c                    t         j                  j                  |      }t         j                  j                  |      j                  }t        j
                  ||       }t        j                  t         j                  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     yy}}U#H99%%h/11L a(J &&u-.KFRVVF^b"&&\1J*K&KK']F23VVAbeeG_- .E Lr   c                 >    t        |       }|j                  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} |j                  |      |j                  |      fS )Nr   r   )r   r_narnmanumpy.polynomial
polynomial
Polynomial)selfparamsarr9   polys        r   getpolyrI   {   sg    	sVITXX&&&	'B	sFDHH9:&&	'B#??2 333r   c                   "    e Zd ZdZd Zd Zd Zy)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   su     UUA3	***+UUA3yz**+ R$/ %4.!r   c                     | j                  |d d | j                        }||d   dz  z  }t        | j                  |      }|S )Nr   )rN   r   r&   endog)rE   rF   siglogliks       r   loglikezMLEGLS.loglike   sE    vcr{DII6F2JM!TZZ-r   c                 |    | j                   |i |}t        j                  dg|j                  | j                  | j                  | j
                  z    f   }t        |      \  }}|sU|j                  j                         }|dd  || j                  | j                  | j
                  z    | j                  |      }|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    dhh%%UUA3

488TXXdhh->??@.r2}::??,L8=ab	L488DHH#45(((5C
r   N)__name__
__module____qualname____doc__rN   rT   r_    r   r   rK   rK      s     &	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 )  *K8@*
43# 3n zD	B	BIINN7R4*AMA
)CCGSW1vCH
''8'
9C	%R	#**2	+a
 S#**Sb/2NFF8==?D OOCJJsOT2SZZ^Q5FFE	+a
 
1e
$C	#'')SYY	
1e
$%	/!U
#$O r   