
    M/Ph$                         d Z ddlZddlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZm Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z' ddl(m)Z)  G d d          Z* G d	 d
e*          Z+dS )z
Tests for setting options in KalmanFilter, KalmanSmoother, SimulationSmoother

(does not test the filtering, smoothing, or simulation smoothing for each
option)

Author: Chad Fulton
License: Simplified-BSD
    N)FILTER_CONVENTIONALFILTER_EXACT_INITIALFILTER_AUGMENTEDFILTER_SQUARE_ROOTFILTER_UNIVARIATEFILTER_COLLAPSEDFILTER_EXTENDEDFILTER_UNSCENTEDFILTER_CONCENTRATEDFILTER_CHANDRASEKHARINVERT_UNIVARIATESOLVE_LU	INVERT_LUSOLVE_CHOLESKYINVERT_CHOLESKYSTABILITY_FORCE_SYMMETRYMEMORY_STORE_ALLMEMORY_NO_FORECASTMEMORY_NO_PREDICTEDMEMORY_NO_FILTEREDMEMORY_NO_LIKELIHOODMEMORY_NO_GAINMEMORY_NO_SMOOTHINGMEMORY_NO_STD_FORECASTMEMORY_CONSERVE)SMOOTHER_STATESMOOTHER_STATE_COVSMOOTHER_STATE_AUTOCOVSMOOTHER_DISTURBANCESMOOTHER_DISTURBANCE_COVSMOOTHER_ALL)SimulationSmootherSIMULATION_STATESIMULATION_ALL)assert_equalc                   $    e Zd Zed             ZdS )Optionsc                     t          j        d          }d}t          |d|d|| _        | j                            |           d S )N
      )k_endogk_states)nparanger"   modelbind)clsargskwargsendogr,   s        m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/statespace/tests/test_options.pysetup_classzOptions.setup_class;   sT     	"&dq8 1 1)/1 1		u    N)__name__
__module____qualname__classmethodr6    r7   r5   r'   r'   :   s-          [  r7   r'   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestOptionsc                 *   | j         }d|_        d|_        t          |j        t                     d|_        t          |j        t          t          z             d|_        t          |j        t                     |                    t                     t          |j        t                     |                    dd           t          |j        t                     d|_        |j	        D ]}t          ||d           t          |j        t          t          z  t          z  t          z  t          z  t          z  t          z  t          z  t           z  t"          z             |j	        D ]}t          ||d           t          |j        d           d S )Nr   TF)filter_conventionalfilter_augmented)r/   filter_methodr@   r%   r   filter_collapsedr   set_filter_methodr   filter_methodssetattrr   r   r   r	   r
   r   r   selfr/   names      r5   test_filter_methodszTestOptions.test_filter_methodsH   s   
   %)!U(*=>>>!%U((+;;	= 	= 	=$)!U(*:;;; 	 0111U(*:;;; 	D16 	  	8 	8 	8U(*=>>>  ( 	' 	'DE4&&&&"669II!235EF./1DE !!	
 	
 	
 ( 	( 	(DE4''''U(!,,,,,r7   c                    | j         }d|_        d|_        t          |j        t                     d|_        t          |j        t          t          z             d|_        t          |j        t                     |                    t                     t          |j        t                     |                    ddd           t          |j        t          t          z             d|_        |j	        D ]}t          ||d           t          |j        t          t          z  t          z  t          z  t          z             |j	        D ]}t          ||d           t          |j        d           d S )Nr   TF)invert_choleskyinvert_univariate	invert_lu)r/   inversion_methodrM   r%   r   rL   r   set_inversion_methodr   inversion_methodsrF   r   r   rG   s      r5   test_inversion_methodsz"TestOptions.test_inversion_methodsq   s   
 "# #'U+->??? $U+&8	: 	: 	:"'U+_=== 	""9---U+Y777 	""459U 	# 	L 	L 	LU+&8	: 	: 	: "#+ 	' 	'DE4&&&&"(94~E	
 	
 	

 + 	( 	(DE4''''U+Q/////r7   c                    | j         }d|_        d|_        t          |j        t                     d|_        t          |j        d           d|_        |                    t                     t          |j        t                     d|_        |                    d           t          |j        t                     d|_        |                    d           t          |j        t                     d S )Nr   TF)stability_method)stability_force_symmetry)r/   rT   rU   r%   r   set_stability_method)rH   r/   s     r5   test_stability_methodsz"TestOptions.test_stability_methods   s    
 "# *.&U+-EFFF).&U+Q/// "#""#;<<<U+-EFFF "#""D"999U+-EFFF "#""D"AAAU+-EFFFFFr7   c                 d   | j         }t          |_        d|_        t	          |j        t
                     d|_        t	          |j        t
          t          z             d|_        t	          |j        t                     |                    t                     t	          |j        t                     |                    dd           t	          |j        t                     d|_        |j
        D ]}|dk    r	t          ||d           t	          |j        t
          t          z  t          z  t          z  t          z  t          z  t          z             t	          |j        t           z  t                      |j
        D ]}|dk    r	t          ||d           t	          |j        d           d S )NTF)memory_no_filteredmemory_no_predictedr   memory_conserve)r/   r   conserve_memorymemory_no_forecastr%   r   rY   r   set_conserve_memoryr   memory_optionsrF   r   r   r   r   r   rG   s      r5   test_conserve_memoryz TestOptions.test_conserve_memory   s   
 !1 $( U*,>???#' U*'*<<	> 	> 	>#( U*,>??? 	!!"5666U*,?@@@ 	!!T6; 	" 	= 	= 	=U*,>??? !"( 	' 	'D(((E4&&&&!!447II !#12 "89	
 	
 	
 	U*_<oNNN( 	( 	(D(((E4''''U*A.....r7   c                 *   | j         }d|_        d|_        t          |j        t                     d|_        t          |j        t          t          z             d|_        t          |j        t                     |                    t                     t          |j        t                     |                    dd           t          |j        t                     d|_        |j	        D ]}|dk    r	t          ||d           t          |j        t          t          z  t          z  t          z  t          z             t          |j        t                     |j	        D ]}|dk    r	t          ||d           t          |j        d           d S )Nr   TF)smoother_disturbancesmoother_disturbance_covsmoother_all)r/   smoother_outputsmoother_stater%   r   rb   r   set_smoother_outputr    smoother_outputsrF   r   r   r!   rG   s      r5   test_smoother_outputsz!TestOptions.test_smoother_outputs   s   

 !"  $U*N;;;%)"U*#&::	< 	< 	<$U*,@AAA 	!!":;;;U*,DEEE 	!!t;@ 	" 	B 	B 	BU*,@AAA !"* 	' 	'D~%%E4&&&&!//2HH !#;<	
 	
 	

 	U*L999* 	( 	(D~%%E4''''U*A.....r7   c                     t          | j                            t                    t                     t          | j                            dd          t                     d S )NT)simulate_statesimulate_disturbance)r%   r/   get_simulation_outputr#   r$   )rH   s    r5   test_simulation_outputsz#TestOptions.test_simulation_outputs	  so     	J,,-=>>	 	 	 	J,,DBF - H H	 	 	 	 	r7   N)	r8   r9   r:   rJ   rR   rW   r`   ri   rn   r<   r7   r5   r>   r>   G   su        '- '- '-R$0 $0 $0LG G G6)/ )/ )/V*/ */ */X
 
 
 
 
r7   r>   ),__doc__numpyr-   (statsmodels.tsa.statespace.kalman_filterr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   *statsmodels.tsa.statespace.kalman_smootherr   r   r   r   r    r!   .statsmodels.tsa.statespace.simulation_smootherr"   r#   r$   numpy.testingr%   r'   r>   r<   r7   r5   <module>ru      s'                                                            <                        
 ' & & & & &
 
 
 
 
 
 
 
L L L L L' L L L L Lr7   