
    !g?                        d Z ddlZddlZddlZddlmZmZ ddl	Z	ddl
mZ ddlmZmZmZmZ ddlmZmZmZ ej*                  j-                  ej*                  j/                  e            Z G d d      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d      Z  G d de       Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(y)zM
Tests for simulation smoothing

Author: Chad Fulton
License: Simplified-BSD
    N)assert_allcloseassert_equal)datasets)mlemodelsarimax
structuralvarmax)SIMULATION_STATESIMULATION_DISTURBANCESIMULATION_ALLc                   L    e Zd ZdZedd       Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)MultivariateVARKnownz
    Tests for simulation smoothing values in a couple of special cases of
    variates. Both computed values and KFAS values are used for comparison
    against the simulation smoother output.
    Nc                 z   || _         t        j                  j                         j                  }t        j                  ddd      |_        t        j                  |g d         j                         j                  dd  }|dk(  r$t        j                  |j                  dd	d d f<   n|d
k(  r"t        j                  |j                  dd	df<   n|dk(  rt        j                  |j                  dd	df<   t        j                  |j                  dddf<   t        j                  |j                  dddf<   t        j                  |j                  dddf<   t        j                  |j                  dddf<   t        j                  |j                  dd d d f<   |r|j                  d d }t        j                  |fddd|}t        j                  d      |d<   t        j                   g dg dg dg      |d<   t        j                   g dg dg dg      |d<   t        j                  d      |d <   t        j                   g d!g d"g d#g      |d$<   |j#                  d%       d&|j$                  _        || _        |j+                  g d&'      | _        | j(                  j/                         | _        y )(N
1959-01-01	2009-7-01QSstartendfreqrealgdprealconsrealinv   allr   2   partialmixed   F   '   Z      w      	      k_statesk_posdefdesignR?        r0   r0   ڇ?r0   r0   r0   Sx[?obs_covgA+og?g#c
r?g^?g'+?gK~gz\G	g$|J@gA[?
transition	selectionr/   yN^?P.*,?r<   r2   ZȔ>r=   r?   r4   	state_cov    .AT
return_ssm)test_against_KFASr   	macrodataload_pandasdatapd
date_rangeindexnplogdiffilocnanr   MLEModeleyearrayinitialize_approximate_diffusessmfilter_univariatemodelsmoothresultssimulation_smoothersim)clsmissingrE   argskwargsdtaobsmods           w/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tests/test_simulation_smoothing.pysetup_classz MultivariateVARKnown.setup_class   sQ    !2  ,,.33MM+'+-	ffS;<=BBDII!"Me "CHHQrT1W	! "CHHQrT1W "CHHQrT1W!#CHHRUAX!#CHHRUAX#%66CHHSWaZ #%66CHHSWaZ  "CHHST1W((2A,C Fa!FvFq	H..8#: ;I HH999&; <L 66!9K88878%: ;K 	**3/$(!	jjj5))//1    c                 ~    t        t        j                  | j                  j                        | j
                         y Nr   rL   sumrY   llf_obstrue_llfselfs    rc   test_loglikez!MultivariateVARKnown.test_loglikeL   #    t||334dmmDre   c                 F   d}t        j                  || j                  j                  f      }t        j                  || j                  j                  j
                  f      }t        j                  | j                  j                        }| j                  j                  j                  ||||      \  }}t        |t        j                  || j                  j                  f             t        |t        j                  || j                  j                  f             y )N
   nsimulationsmeasurement_shocksstate_shocksinitial_state)	rL   zerosrW   k_endogrU   r,   r+   simulater   rm   nrt   ru   rv   ra   statess          rc   test_simulate_0z$MultivariateVARKnown.test_simulate_0O   s      XXq$***<*<&=>xxDJJNN$;$; <=!4!45jjnn--/A%] . DV 	RXXq$***<*<&=>?!TZZ-@-@)A BCre   c           	         d}t        j                  t        j                  || j                  j                  z        dz  || j                  j                  f      }t        j
                  || j                  j                  j                  f      }t        j
                  | j                  j                        }| j                  j                  j                  ||||      \  }}t        |t        j                  t        j                  || j                  j                  z        dz  || j                  j                  f             t        |t        j
                  || j                  j                  f             y )Nrq         $@rr   )rL   reshapearangerW   rx   rw   rU   r,   r+   ry   r   rz   s          rc   test_simulate_1z$MultivariateVARKnown.test_simulate_1]   s     ZZIIa$**,,,-3

""#% xxDJJNN$;$; <=!4!45jjnn--/A%] . DV 	RZZIIa$**,,,-3

""#% 	& 	!TZZ-@-@)A BCre   c                 p   d}| j                   d   }| j                   d   }t        j                  || j                   j                  f      }t        j                  || j                   j
                  j                  f      }t        j                  | j                   j                        dz  }| j                   j
                  j                  ||||      \  }}t        j                  || j                   j                  f      }	t        j                  || j                   j                  f      }
||
d<   t        j                  ||      |	d<   t        d|      D ]C  }t        j                  ||
|dz
           ||   z   |
|<   t        j                  ||
|         |	|<   E t        ||	       t        ||
       y )Nrq   r-   r9   g      @rr   r   r   )rW   rL   rw   rx   onesrU   r,   r+   ry   dotranger   )rm   r{   ZTrt   ru   rv   ra   r|   desired_obsdesired_stateis               rc   test_simulate_2z$MultivariateVARKnown.test_simulate_2o   ss   JJx JJ|$  XXq$***<*<&=>ww4::>>#:#:;<

 3 34s:jjnn--/A%] . DV hh4::#5#567!TZZ%8%8!9:(a=1Aq! 	9A!vvaqs);<|ANM!VVA}Q'78KN	9 	[).re   c                 >   | j                   }| j                  d   }| j                  j                  }| j                  j                  }| j                  j                  j
                  }| j                  j                  }|j                  t        j                  ||z        t        j                  ||z        t        j                  |             t        |j                  d       t        |j                  d       t        |j                  d       t        |j                  d       t        |j                  | j                   j"                         | j                  j                  j$                  s*t        |j&                  | j                   j(                         t        |j*                  | j                   j,                         | j.                  rJt0        j2                  j5                  t6        dd      }t9        j:                  |      }t        |j                  |g d   j<                  d       t        |j&                  |g d	   j<                  d       t        |j*                  |g d
   j<                  d       t        j                  d| j                  j                  f      }	t?        | j                  j                        D ]0  }
t        j@                  ||j                  d d |
f         |	d d |
f<   2 t        |	|g d   j<                  d       y y )Nr-    measurement_disturbance_variatesstate_disturbance_variatesinitial_state_variatesr   rY   z!results_simulation_smoothing0.csvstate1state2state3Hz>atoleps1eps2eps3eta1eta2eta3r)   signal1signal2signal3)!r[   rW   nobsrx   rU   r,   r+   ry   rL   rw   r   !generated_measurement_disturbancegenerated_state_disturbancegenerated_stategenerated_obssimulated_staterY   smoothed_statefilter_collapsed!simulated_measurement_disturbance smoothed_measurement_disturbancesimulated_state_disturbancesmoothed_state_disturbancerE   ospathjoincurrent_pathrI   read_csvr   r   r   )rm   r[   r   r   rx   r,   r+   r   truesignalsts              rc   test_simulation_smoothing_0z0MultivariateVARKnown.test_simulation_smoothing_0   s`   2 hhJJx zz**$$::>>**::&& 	bhhtg~6N020I,.HHX,> 	 	@ 	==qA77;++Q/))1-++T\\-H-HIzz~~..CAA LLIIK77??	A !!77<<i CED;;t$DC// !?@BB!%' CAA !9:<<!%' C;; !9:<<!%' hh4::??34G4::??+ E "q#*=*=ad*C D1EGT*K%L%N%N!%'# "re   c                 	   | j                   }| j                  d   }| j                  j                  }| j                  j                  }| j                  j                  j
                  }| j                  j                  }t        j                  t        j                  ||z        dz  ||f      }t        j                  ||z        }t        j                  |j                        }	t        j                  j                  | j                  d         }
t        | j                  j                        D ]  }t        j                  |
||         |	|<     |	j!                         }t        j"                  |t        j$                  | j                  j&                        <   t)        j*                  |||      }dD ]  }| j                  |   ||<    |j-                  d       d|j                  _        |j                  j1                         }d|j2                  z
  | j4                  j2                  z   }| j                  j                  j6                  s0|	j8                  |j:                  z
  | j4                  j:                  z   }d|j<                  z
  | j4                  j<                  z   }|j?                  ||t        j                  |      	       tA        |jB                  |	       tA        |jD                  d       tA        |jF                  d       tA        |jH                  |	j8                         tA        |jJ                  |       | j                  j                  j6                  stA        |jL                         tA        |jN                  |       | jP                  rJtR        jT                  jW                  tX        d
d      }t[        j\                  |      }tA        |jJ                  |g d   j8                  d       tA        |jL                  |g d   j8                  d       tA        |jN                  |g d   j8                  d       t        j                  d| j                  j                  f      }t        | j                  j                        D ]0  }t        j                  ||jJ                  d d |f         |d d |f<   2 tA        ||g d   j8                  d       y y )Nr-   r   r5   r*   r-   r5   r9   r:   rA   rB   Tr   r   rY   z!results_simulation_smoothing1.csvr   r   r   r   r   r)   r   )/r[   rW   r   rx   rU   r,   r+   rL   r   r   rw   shapelinalgcholeskyr   r   copyrP   isnanendogr   rQ   rT   rV   rX   r   rY   r   r   r   r   ry   r   r   r   r   r   r   r   r   rE   r   r   r   r   rI   r   )rm   r[   r   r   rx   r,   r+   r   r   r   cholr   ygenerated_modelnamegenerated_resr   r   r   r   r   r   s                         rc   test_simulation_smoothing_1z0MultivariateVARKnown.test_simulation_smoothing_1   s
    hhJJx zz**$$::>>**::&& ,.::IIdWn%+dG_,>(%'XXdXo%>" -/HH,22-4)yy!!$**Y"78tzz' 	;A35666q94;-a0	; .224(*"((4::##
$%"++85/ 	5D$(JJt$4OD!	5 	66s;04-'++224,,,t||/J/JJ 	zz~~..133>>?==> .
 888LL334 	$
 	80J,.HHX,> 	 	@ 	==9	;77;++Q/))9;;	=++_=zz~~..CAA=?773	5 !!77<<i CED;;t$DC// !?@BB!%' CAA !9:<<!%' C;; !9:<<!%' hh4::??34G4::??+ E "q#*=*=ad*C D1EGT*K%L%N%N!%'! "re   c                    | j                   }| j                  d   }| j                  d   }| j                  j                  }| j                  j                  }| j                  j                  j
                  }| j                  j                  }t        j                  t        j                  ||z        dz  ||f      }t        j                  t        j                  ||z        dz  ||f      }	t        j                  |      }
t        j                  |j                        }t        j                  j                  | j                  d         }t        | j                  j                        D ]  }t        j                  |||         ||<     t        j                  |	j                        }t        j                  j                  | j                  d         }t        | j                  j                        D ]  }t        j                  ||	|         ||<     t        j                  | j                  j                  | j                  j                  f      }t        j                  | j                  j                  | j                  j                  dz   f      }t        j                  j                  | j                   j"                        }| j                   j$                  t        j                  ||
      z   |d d df<   t        | j                  j                        D ]u  }t        j                  ||d d |f         |j&                  d d |f   z   |d d |dz   f<   t        j                  ||d d |f         |j&                  d d |f   z   |d d |f<   w |j)                         j&                  }t        j*                  |t        j,                  | j                  j.                        <   t1        j2                  |||      }d	D ]  }| j                  |   ||<    |j5                  d
       d|j                  _        |j                  j9                         }|d d d df   |j:                  z
  | j                   j:                  z   }| j                  j                  j<                  s0|j&                  |j>                  z
  | j                   j>                  z   }|j&                  |j@                  z
  | j                   j@                  z   }|jC                  ||	t        j                  |             tE        |jF                  |       tE        |jH                  |       tE        |jJ                  |       tE        |jL                  |       tE        |jN                  |d       | j                  j                  j<                  s*tE        |jP                  j&                  j&                         tE        |jR                  |       | jT                  rJtV        jX                  j[                  t\        dd      }t_        j`                  |      }tE        |jN                  j&                  |g d   d       tE        |jP                  |g d   j&                  d       tE        |jR                  |g d   j&                  d       t        j                  d| j                  j                  f      }t        | j                  j                        D ]0  }t        j                  ||jN                  d d |f         |d d |f<   2 tE        ||g d   j&                  d       y y )Nr-   r9   r   r5   rA   r   r   r*   r   rB   Tr   r   r   rY   z!results_simulation_smoothing2.csvr   r   r   r)   r   )1r[   rW   r   rx   rU   r,   r+   rL   r   r   rw   r   r   r   r   r   rY   initial_state_covrv   r   r   rP   r   r   r   rQ   rT   rV   rX   r   r   r   r   ry   r   r   r   r   r   r   r   r   rE   r   r   r   r   rI   r   )rm   r[   r   r   r   rx   r,   r+   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                              rc   test_simulation_smoothing_2z0MultivariateVARKnown.test_simulation_smoothing_2!  s    hhJJx JJ|$zz**$$::>>**::&& ,.::IIdWn%+dG_,>(%'ZZIIdXo&,tX.>&@"!#(!3 -/HH,22-4)yy!!$**Y"78tzz' 	;A35666q94;-a0	; ')hh&,,'.#yy!!$**["9:tzz' 	5A-/VV03.5'*	5 $**"4"4djjoo!FG((DJJ$7$79J#KLyy!!$,,"@"@ALL&&6L)MM 	1tzz' 	NA')vvaA1F'G'B'D'DQT'J(KOAqsF##%66!_QT-B#C#D#F#Fq!t#L$MM!Q$	N
  ""(*"((4::##
$%"++A5=?/ 	5D$(JJt$4OD!	5 	66s;04-'++224AssF#m&B&BBLL''( 	 zz~~..133>>?==> .
 ())445LL334 	$ 	80J,.HHX,> 	 	@
 	==9	;773	5++_=))=9++_4Hzz~~..CAACC=??A773	5 !!77<<i CED;;t$DC//11 !?@!%' CAA !9:<<!%' C;; !9:<<!%' hh4::??34G4::??+ E "q#*=*=ad*C D1EGT*K%L%N%N!%'! "re   )NT)__name__
__module____qualname____doc__classmethodrd   rn   r}   r   r   r   r   r    re   rc   r   r      sG    
 -2 -2^EDD$/0C'JS'jk're   r   c                   (     e Zd Ze fd       Z xZS )TestMultivariateVARKnownc                 0    t         |           d| _        y )NgWC@superrd   rk   r\   r^   r_   	__class__s      rc   rd   z$TestMultivariateVARKnown.setup_class  s    "re   r   r   r   r   rd   __classcell__r   s   @rc   r   r     s    # #re   r   c                   ,     e Zd ZdZe fd       Z xZS )"TestMultivariateVARKnownMissingAlla  
    Notes
    -----
    Cannot test against KFAS because they have a different behavior for
    missing entries. When an entry is missing, KFAS does not draw a simulation
    smoothed value for that entry, whereas we draw from the unconditional
    distribution. It appears there is nothing to definitively recommend one
    approach over the other, but it makes it difficult to line up the variates
    correctly in order to replicate results.
    c                 6    t         |   dd       d| _        y )Nr   Fr]   rE   gMf@r   r   s      rc   rd   z.TestMultivariateVARKnownMissingAll.setup_class  s!    U 	 	4"re   )r   r   r   r   r   rd   r   r   s   @rc   r   r     s    	 # #re   r   c                   (     e Zd Ze fd       Z xZS )&TestMultivariateVARKnownMissingPartialc                 6    t         |   dd       d| _        y )Nr   Fr   gc	kc̹@r   r   s      rc   rd   z2TestMultivariateVARKnownMissingPartial.setup_class  s!     	 	8"re   r   r   s   @rc   r   r         # #re   r   c                   (     e Zd Ze fd       Z xZS )$TestMultivariateVARKnownMissingMixedc                 6    t         |   dd       d| _        y )Nr   Fr   gu@r   r   s      rc   rd   z0TestMultivariateVARKnownMissingMixed.setup_class  s!    u 	 	6"re   r   r   s   @rc   r   r     r   re   r   c                   (    e Zd ZdZedd       Zd Zy)TestDFMFc                    t         j                  j                         j                  }t	        j
                  ddd      |_        |g d   }t        j                  |      j                         j                  dd  dz  }|dk(  rGt        j                  |j                  d d	d d f<   t        j                  |j                  d
dd d f<   n|dk(  rCt        j                  |j                  dd	df<   t        j                  |j                  d
ddf<   n|dk(  rt        j                  |j                  dd	df<   t        j                  |j                  dddf<   t        j                  |j                  dddf<   t        j                  |j                  d
ddf<   t        j                  |j                  d
ddf<   t        j                  |fddd|}t        j                  ddgddgddgg      |d<   t        j                  t        j                  g d            |d<   t        j                  ddgd d!gg      |d"<   t        j                   d      |d#<   t        j                  d$d%gd%d&gg      |d'<   |j#                  d(       d)|j$                  _        d)|j$                  _        || _        |j-                  g d)*      | _        | j*                  j1                         | _        y )+Nr   r   r   r   r   r   i  r   r   r%   r&   r   r   r   r    r!   r"   r#   r$   r*   gJnX<@g?kyV1@g9jNg=l?gA!jgmR_@r-   )g&@o?g]ӬN?gB\/M@r5   g}^(?g{zN?glrrg*Q?r9   r:   333333?g      пg?rA   rB   TrC   )r   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r   rQ   rS   diagrR   rT   rU   rV   r   rW   rX   rY   rZ   r[   )r\   whichr^   r_   r`   levelsra   rb   s           rc   rd   zTestDFM.setup_class  s      ,,.33MM+'+-	78ffVn!!#((,s2E>!vvCHHSbS!V#%66CHHSWaZ i "CHHQrT1W#%66CHHSWaZ g "CHHQrT1W!#CHHRUAX!#CHHRUAX#%66CHHSWaZ #%66CHHSWaZ  Fa!FvF<"=#.
";#0+">"@ AH HH9:<IHHz:&>'19&=&? @L66!9K88c5\&+S\%3 4K**3/$(!#' 	jjj5))//1re   c                      y rg   r   rl   s    rc   rn   zTestDFM.test_loglike  s    re   Nnone)r   r   r   rE   r   rd   rn   r   re   rc   r   r     s     '2 '2Rre   r   c                   .    e Zd ZdZedd       Zd Zd Zy)MultivariateVARzQ
    More generic tests for simulation smoothing; use actual N(0,1) variates
    c                 J   t         j                  j                         j                  }t	        j
                  ddd      |_        t        j                  |g d         j                         j                  dd  }|dk(  r$t        j                  |j                  dd	d d f<   n|d
k(  r"t        j                  |j                  dd	df<   n|dk(  rt        j                  |j                  dd	df<   t        j                  |j                  dddf<   t        j                  |j                  dddf<   t        j                  |j                  dddf<   t        j                  |j                  dddf<   t        j                  |j                  dd d d f<   t        j                  |fddd|}t        j                  d      |d<   t        j                  g dg dg dg      |d<   t        j                  g dg dg dg      |d<   t        j                  d      |d<   t        j                  g d g d!g d"g      |d#<   |j!                  d$       d%|j"                  _        || _        |j)                  g d%&      | _        | j&                  j-                         | _        y )'Nr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r)   r*   r-   r.   r1   r3   r5   r6   r7   r8   r9   r:   r;   r>   r@   rA   rB   TrC   )r   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   )r\   r]   r^   r_   r`   ra   rb   s          rc   rd   zMultivariateVAR.setup_class  s7      ,,.33MM+'+-	ffS;<=BBDII!"Me "CHHQrT1W	! "CHHQrT1W "CHHQrT1W!#CHHRUAX!#CHHRUAX#%66CHHSWaZ #%66CHHSWaZ  "CHHST1W Fa!FvFq	H..8#: ;I HH999&; <L 66!9K88878%: ;K 	**3/$(!	jjj5))//1re   c                 ~    t        t        j                  | j                  j                        | j
                         y rg   rh   rl   s    rc   rn   zMultivariateVAR.test_loglike  ro   re   c                    | j                   }| j                  d   }| j                  j                  }| j                  j                  }|j	                  | j
                  d ||z   | j
                  ||z  d | j
                  dd         t        |j                  j                  | j                  g d   d       t        |j                  | j                  g d   j                  d       t        |j                  | j                  g d   j                  d       t        j                  d	| j                  j                  f      }t        | j                  j                        D ]0  }t        j                  ||j                  d d |f         |d d |f<   2 t        || j                  g d
   j                  d       y )Nr-   r   r   r   r   r   r   r)   r   )r[   rW   r   rx   ry   variatesr   r   r   r   r   r   rL   rw   r   r   )rm   r[   r   r   rx   r   r   s          rc   test_simulation_smoothingz)MultivariateVAR.test_simulation_smoothing  su   hhJJx zz**$$ 	otg~6dWnR8,0MM"#,>	 	 	@ 	++--		"@A!	# 	==		":;==!	# 	77		":;==!	# ((Atzz/0tzz' 	AAFF1c&9&9!Q$&?@GAqDM	A		"CDFF!	#re   Nr   )r   r   r   r   r   rd   rn   r   r   re   rc   r   r     s'     (2 (2TE#re   r   c                   (     e Zd Ze fd       Z xZS )TestMultivariateVARc                 \   t         |           t        j                  j	                  t
        dd      }t        j                  |      j                  j                         | _
        t        j                  j	                  t
        dd      }t        j                  |      | _        d| _        y )NrY   z*results_simulation_smoothing3_variates.csvz!results_simulation_smoothing3.csvge}@)r   rd   r   r   r   r   rI   r   valuessqueezer   r   rk   )r\   r   r   s     rc   rd   zTestMultivariateVAR.setup_class>  sx    ww||L)HJ{{4(//779ww||L)?A;;t$!re   r   r   s   @rc   r   r   =  s    " "re   r   c                  ^   t         j                  j                         j                  } t	        j
                  ddd      | _        t        j                  | g d         j                         j                  dd  }t        j                  |d   d	      }d
|d<   d|d<   |j                  t        j                  d          |j                         }t        j                   j#                  d      }|j$                  |j&                  |j(                  z   z  }|j+                  |      }t        j                   j#                  d      }|j-                  |       t/        |j0                  d d df   |d |j$                          t/        |j2                  d d df   ||j$                  d         t5        |j6                  |j8                  j:                         d|_        t5        |j6                  d       d|_        t5        |j6                  t>               d|_        t5        |j6                  d       d|_         t5        |j6                  tB               d|_         t5        |j6                  d       d|_"        t5        |j6                  tF               d|_"        t5        |j6                  d       y )Nr   r   r   r   r   r   r   r   r   r   orderr0   )r-   r   r         ?)r5   r   r   )r  r  i  )size)random_stater   TF)$r   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r   SARIMAXupdater_rZ   randomRandomStater   rx   r+   normalry   r   r   r   r   simulation_outputrU   smoother_outputsimulate_stater
   simulate_disturbancer   simulate_allr   )r`   ra   rb   r[   rsn_disturbance_variatesr   s          rc   	test_miscr  J  s"    


(
(
*
/
/CLk#')CI
&&78
9
>
>
@
E
Eab
IC
//#i.	
:CCCJJruuV}

!
!
#C 
		t	$B XXs||)CDyy4y5H			t	$BLLbL!C99!Q$?Ychh')C33AqD9SXXY') &&(?(?@C&&*C&&(89C&&*#C&&(>?$C&&*C&&7C&&*re   c                     d} d}t        j                  |       |z  }t        j                  |dt        j                  |             }|j	                  d|g       |j                         }|j                  t        j                  |j                        t        j                  |j                        t        j                  d             t        |j                  d   d       y )Nrq   d   rwalk)exogr   r   r   )rL   r   r   UnobservedComponentsr  rZ   ry   rw   r   r   r   r   	interceptr   rb   r[   s        rc   'test_simulation_smoothing_obs_interceptr  x  s    DIGGDMI%E

)
)%rwwt}
MCJJ9~

!
!
#CLL"((3882D,.HHSXX,>(*  5 $$Q'+re   c                     d} d}t        j                  |       |z  }t        j                  |ddd      }|j	                  dgdgg       |j                  |ddg       |j                         }|j                  t        j                  |j                        t        j                  |j                        t        j                  d	      
       t        |j                  d   |       y )Nrq   r  r   r   r   cT)r  trendmeasurement_errorr   r  r   r   )rL   r   r   r  initialize_knownr  rZ   ry   rw   r   r   r   r  s        rc   )test_simulation_smoothing_state_interceptr!    s    DIGGDMI%E
//%y,02C#!&JJ	2r"#

!
!
#CLL"((3882D,.HHSXX,>(*  5 $$Q'3re   c                  B   d} d}t        j                  |       |z  }t        j                  |dddd      }|j	                  |ddg       |j                         }|j                  t        j                  |j                        t        j                  |j                        t        j                  d	      
       t        |j                  d   |       t         j                  |d<   t        j                  |dddd      }|j	                  |ddg       |j                         }|j                  t        j                  |j                        t        j                  |j                        t        j                  d	      
       t        |j                  d   |       y )Nrq   r  r  r  Tdiffuser  r  r  initializationr  r   r   r      )rL   r   r   r  r  rZ   ry   rw   r   r   r   rP   r  s        rc   1test_simulation_smoothing_state_intercept_diffuser'    sM   DIGGDMI%E //%y,0)24C JJ	2r"#

!
!
#CLL"((3882D,.HHSXX,>(*  5 $$Q'3 vvE!H
//%y,0)24C JJ	2r"#

!
!
#CLL"((3882D,.HHSXX,>(*  5 $$Q'3re   c            	         d} d}t        j                  |       |z  }t        j                  |dddd      }|j	                  |dd	g       t        j
                  d      d
z  }t        j
                  d      d d d   dz  }|j                         }|j                  ||t        j                  d             |j                  d   }t        j                  t              5  |j                  t         j                  ||f   t        j                  d             d d d        |j                  d   }|j                         }|j                  ||t        j                  d      dd       |j                  d   }t        j                  t              5  |j                  ||dt        j                  d             d d d        |j                  d   }t        ||       y # 1 sw Y   xY w# 1 sw Y   1xY w)Nrq   r  r  r  Tr#  r$        ?g       @r   r         4@r   r   r   disturbance_variatesr   r   r   r   /pretransformed_measurement_disturbance_variates)pretransformed_state_disturbance_variatesr   r   pretransformedr   )rL   r   r   r  r  r   rZ   ry   rw   r   pytestwarnsFutureWarningr  r   )	r   r  r   rb   mdssdsr[   desiredactuals	            rc   $test_deprecated_arguments_univariater9    s   DIGGDMI%E
//%y,0)24C JJ	3#$
))B-#
C
))B-"

#C 
!
!
#CLL#,/(*  5 !!!$G	m	$ 9"%%S/,.HHQK 	 	99   #F 
!
!
#CLL#,/(*AE;?	  A
 !!!$G	m	$ 9c03$(,.HHQK 	 	99
   #FFG$+9 99 9s    :G)G+G(+G4c            	      n   t        j                  ddgddgddgddgd	dgg      } t        j                  | d
      }|j	                  g d       t        j
                  d      j                  dd      dz  }t        j
                  d      j                  dd      d d d   dz  }|j                         }|j                  ||t        j                  d             |j                  d   }t        j                  t              5  |j                  t         j                  |j                         |j                         f   t        j                  d             d d d        |j                  d   }|j                         }|j                  ||t        j                  d      dd       |j                  d   }t        j                  t              5  |j                  ||dt        j                  d             d d d        |j                  d   }t!        ||       y # 1 sw Y   xY w# 1 sw Y   1xY w)Ng333333?gffffff?gg333333?g?gffffff?皙?g?r)  r   r   )	r   r)  g?r;  gɿr)  g@r)  g333333 @rq   r&  r$   r   r   r*  r   r   r+  Tr-  r0  )rL   rS   r	   VARMAXr  r   r   rZ   ry   rw   r   r2  r3  r4  r  ravelr   )r   rb   r5  r6  r[   r7  r8  s          rc   &test_deprecated_arguments_multivariater>    s   HHsCjSkCjCjDk	# $E --Y
/CJJ    ))B-

1
%
+C
))B-

1
%dd
+c
1C 
!
!
#CLL#,/(*  5 !!!$G	m	$ 9"%%		SYY[0H*I,.HHQK 	 	99   #F 
!
!
#CLL#,/(*AE;?	  A
 !!!$G	m	$ 9c03$(,.HHQK 	 	99
   #FFG$+9 99 9s   AH)H+H(+H4c                       y)a9  
    This is a very slow test to check that the distribution of simulated states
    (from the posterior) is correct in the presense of NaN values. Here, it
    checks the marginal distribution of the drawn states against the values
    computed from the smoother and prints the result.

    With the fixed simulation smoother, it prints:

    True values:
    [1.         0.66666667 0.66666667 1.        ]
    [0.         0.95238095 0.95238095 0.        ]

    Simulated values:
    [1.         0.66699187 0.66456719 1.        ]
    [0.       0.953608 0.953198 0.      ]

    Previously, it would have printed:

    True values:
    [1.         0.66666667 0.66666667 1.        ]
    [0.         0.95238095 0.95238095 0.        ]

    Simulated values:
    [1.         0.66666667 0.66666667 1.        ]
    [0. 0. 0. 0.]
    N)r   r  rL   rP   rX   r  r	  rZ   rw   r   r   ry   r   printr   smoothed_state_covmeanvarround)rb   resr  r[   r{   outr   s          rc   test_nanrG    s    6 re   ))r   r   numpyrL   pandasrI   numpy.testingr   r   r2  statsmodelsr   statsmodels.tsa.statespacer   r   r   r	   .statsmodels.tsa.statespace.simulation_smootherr
   r   r   r   dirnameabspath__file__r   r   r   r   r   r   r   r   r   r  r  r!  r'  r9  r>  rG  r   re   rc   <module>rQ     s    
   7    L L> > wwrwwx89v' v'r#3 ##)= #$#-A ##+? #.& .bQ# Q#h
"/ 
"++\
,4"4>)%X+%\.(re   