
    !g~                        d Z ddlZddl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 e	j                   j#                         j$                  Z ej(                  dd	d
      e_         ej,                  eddg         j/                         j0                  dd dz  Zej4                  j7                  ej4                  j9                  e            Zej4                  j?                  ed      Z  ejB                  ej4                  j?                  e d      d       ejB                  ej4                  j?                  e d      d       ejB                  ej4                  j?                  e d      d       ejB                  ej4                  j?                  e d      d       ejB                  ej4                  j?                  e d      d       ejB                  ej4                  j?                  e d      d       ejB                  ej4                  j?                  e d      d       ejB                  ej4                  j?                  e d      d       ejB                  ej4                  j?                  e d      d       ejB                  ej4                  j?                  e d      d      d
Z" G d dejF                        Z$d  Z%y)!aK  
Tests for CFA simulation smoothing in a TVP-VAR model

See "results/cfa_tvpvar_test.m" for Matlab file that generates the results.

Based on "TVPVAR.m", found at http://joshuachan.org/code/code_TVPVAR.html.
See [1]_ for details on the TVP-VAR model and the CFA method.

References
----------
.. [1] Chan, Joshua CC, and Ivan Jeliazkov.
       "Efficient simulation and integrated likelihood estimation in
       state space models."
       International Journal of Mathematical Modelling and Numerical
       Optimisation 1, no. 1-2 (2009): 101-120.

Author: Chad Fulton
License: BSD-3
    N)assert_allclose)datasets)add_constant)lagmat)mlemodel1959Q12009Q3Q)freqrealconsrealgdp      i  resultszcfa_tvpvar_invP.csv)headerzcfa_tvpvar_posterior_mean.csvzcfa_tvpvar_state_variates.csvzcfa_tvpvar_beta.csvzcfa_tvpvar_v10.csvzcfa_tvpvar_S10.csvzcfa_tvpvar_Omega_11.csvzcfa_tvpvar_vi0.csvzcfa_tvpvar_Si0.csvzcfa_tvpvar_Omega_22.csv)
invPposterior_meanstate_variatesbetav10S10Omega_11vi0Si0Omega_22c                   4     e Zd Z fdZed        Zd Z xZS )TVPVARc                 v   t        |t        j                        st        j                  |      }|j                  d   }t	        |dddd      }|j
                  d d d |f   }t        |j
                  d d |d f         }||dz   z  }t        	| !  ||       | j                  j                  dt        j                  | j                        dz  	       t        j                  | j                  | j                  | j                   f      | d
<   t#        | j                        D ]=  }|| j                  dz   z  }|| j                  z   dz   }|j$                  | d
|||d d f<   ? t        j                  |      | d<   t        j                  |      | d<   t        j&                  d | j                  | j                  dz   z  dz   | _        t        j*                  | j                        | _        t        j&                  | j                   d  | _        dt        j0                  | j                        z   | _        y )Nr   bothinT)trimoriginal
use_pandas)k_statesknown   )stationary_covdesign
transition	selection   )	state_cov)
isinstancepd	DataFrameshaper   ilocr   super__init__ssm
initializenpeyer$   zerosk_endognobsrangeTs__obs_cov_slicetril_indices_obs_cov_tril_state_cov_slicediag_indices_state_cov_ix)
selfendogk	augmentedexogr$   istartend	__class__s
            m/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tests/test_cfa_tvpvar.pyr3   zTVPVAR.__init__@   s   %.LL'EKKN5!&4&*,	q"1"u%INN1ab512A;2GBFF4==4IA4MN4<<		"JKXt||$ 	5A)*E$,,&*C.2ffD1eCi*+	5  VVH-\FF8,[ ee$KT\\T\\A5E%F!%KL__T\\: "t}}no 6+boodmm.LL    c           	          g }t        | j                        D ]=  }| j                  |   }|d|z  gz  }|| j                  D cg c]
  }d| d|  c}z  }? |S c c}w )Nzintercept.%szL1.z->)r;   r9   endog_names)rD   state_namesrI   
endog_name
other_names        rM   rQ   zTVPVAR.state_names\   s    t||$ 	@A))!,JNZ788K.2.>.>@ * "*R
|< @ @K	@
 @s   Ac                 ,    || d<   || | j                   <   y )Nobs_cov)rC   )rD   rU   state_cov_diags      rM   update_directzTVPVAR.update_directf   s    !Y#1T rN   )__name__
__module____qualname__r3   propertyrQ   rW   __classcell__)rL   s   @rM   r   r   ?   s"    M8  2rN   r   c                  r   t        t        j                  dd        } | j                  d      }| j                  dz   }t        j                  | j                        }t        j                  | j                        dz  dz  }t        j                  | j                        dz  dz  }t        j                  t        j                        }t        j                  | j                        dz  }| j                  ||       | j                  j                         }t        d   j                  d d }	|j                  |	       t        d   j                  d d }
t!        |j"                  |
       t!        |j"                  |j$                         t
        j&                  j)                  t        d	   j                  d d
       }t!        |j*                  |       t        d   j                  d d }t!        |j,                  |       t        j.                  | d   j1                  ddd      |j,                  j                  d         d   }| j                  |z
  }|| j2                  z   }|t        j4                  |j                  |      z   }t!        |t        d   j                  d d        t!        |t        d   j                  d d d df          |j,                  j                  dd  |j,                  j                  d d z
  }t        j6                  |dz  d      }|| j2                  dz
  dz  z   }||dz  z   }t!        |t        d   j8                  d          t!        |t        d   j                  d d df          | j                  t        d   j                  d d d df   t        d   j                  d d df          | j                  j                         }t        d   j                  dd  }|j                  |       t        d   j                  dd  }t!        |j"                  |       t!        |j"                  |j$                         t
        j&                  j)                  t        d	   j                  d
d        }t!        |j*                  |       t        d   j                  dd  }t!        |j,                  |       t        j.                  | d   j1                  ddd      |j,                  j                  d         d   }| j                  |z
  }|| j2                  z   }|t        j4                  |j                  |      z   }t!        |t        d   j                  dd         t!        |t        d   j                  d d dd f          |j,                  j                  dd  |j,                  j                  d d z
  }t        j6                  |dz  d      }|| j2                  dz
  dz  z   }||dz  z   }t!        |t        d   j8                  d          t!        |t        d   j                  d d df          y )Nr+   cfa)method      g{Gz?r   r   r   6   r   r(   r   r   ).N).r   r   r   )axisr   )r   r   r   r   r   )r   r   )r   rE   r1   simulation_smootherr9   r6   r7   onesr$   covr<   rW   r4   smoothr   simulater   r   smoothed_statelinalginvposterior_covsimulated_statematmul	transposer:   dotsumvalues)modsimr   r   r   r   initial_obs_covinitial_state_cov_varsres
variates_1posterior_mean_1posterior_cov_1simulated_state_1fittedresiddfscalesseshapesscales
variates_2posterior_mean_2posterior_cov_2simulated_state_2s                           rM   test_tvpvarr   k   sM   
 AB
 C

!
!
!
/C ++/C
&&
C
''#,,
!
#a
'C
''#,,
$
&
*C
 ffUWWoOWWS\\2T9o'=>
''..
C )*//3JLL /055bq9C&&(89C&&(:(:;iimmGFO$8$8"$=>OC%%7  ,,Ra0C''):; YYs8}..q!Q7**,,Y799?AFIIE	sxxB"&&%((EB++BQ/0E75>..q"1"u56 !!!"%(;(;(=(=cr(BBE
&&
"CCHHqLA%%F37]FFGEN11$78FGEN//156 gj)..q"1"u5j)..q!t46
''..
C )*//3JLL /055ab9C&&(89C&&(:(:;iimmGFO$8$8$=>OC%%7  ,,QR0C''):; YYs8}..q!Q7**,,Y799?AFIIE	sxxB"&&%((EB++AB/0E75>..q!"u56 !!!"%(;(;(=(=cr(BBE
&&
"CCHHqLA%%F37]FFGEN11$78FGEN//156rN   )&__doc__osnumpyr6   pandasr.   numpy.testingr   statsmodelsr   statsmodels.toolsr   statsmodels.tsa.tsatoolsr   statsmodels.tsa.statespacer   	macrodataload_pandasdatadtaperiod_rangeindexlogdiffr1   rE   pathdirnameabspath__file__current_pathjoinresults_pathread_csvr   MLEModelr   r    rN   rM   <module>r      sI  & 
   )   * + /$$&++BOOHhS9	sJ	*+,113882>Dwwrwwx89ww||L)4BKK
\#89$H!bkk
\#BC "bkk
\#BC BKK
\#89$H2;;
\#78G2;;
\#78G
\#<=dL2;;
\#78G2;;
\#78G
\#<=dL+M2)2X )2Xa7rN   