
    !gLS                     z   d Z ddlZddlZddlZddlmZmZ ddl	m
Z
 ddlmZ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.                  j1                  dddg      ej.                  j1                  dg d      ej.                  j1                  dddg      ej.                  j1                  dddg      d                             Zej.                  j1                  dddg      ej.                  j1                  dg d      d               Zej.                  j1                  dg d      ej.                  j1                  dddg      d               Zej.                  j1                  dg d      ej.                  j1                  dddg      d               Zd Zej.                  j1                  d  ej<                  d!      g d"g d#d$g      ej.                  j1                  d% ej<                  d!      g d&g d'd(g      d)               Zd* Z y)+zn
Tests for computation of weight functions in state space models

Author: Chad Fulton
License: Simplified-BSD
    N)assert_equalassert_allclose)datasets)sarimaxvarmax)tools)TVSS1959Q12009Q3Q)startendfrequse_exogFTtrend)nctconcentrate_scalemeasurement_errorc           
      	   t        j                  dt         j                  dddgg      j                  }| rt        j                  g d      nd }dg}dg}dg}dg}	d	g}
g }|d
v r||z  }| r||z  }||z  }|r||	z  }|s||
z  }t	        j
                  |d|| r|nd ||      }t        j                  dg      }t        j                  d      dz  }|j                  j                  ||       |j                  |      }|j                  }|j                  }|j                  }t        j                  ||||f      t         j                  z  }t        |      D ]  }t        |      D ]  }t        j                  |||f         rt         j                  |d d |d d |f<   9|j!                         }|||fxx   dz  cc<   t	        j
                  |d|| r|nd ||      }|j                  j                  ||       |j                  |      }|j"                  j                  |j"                  j                  z
  |d d |d d |f<     t        j                  ||||f      t         j                  z  }t        |      D ]  }t        |      D ]  }t	        j
                  |d|| r|nd ||      }|j                  j                  ||       |j%                  |       |d   j&                  dk(  r?|d   }t        j                  |j                  |j                  f      |d<   ||dd d d d f<   |d||fxx   dz  cc<   |j                  j                         }|j"                  j                  |j"                  j                  z
  |d d |d d |f<     t        j                  |||f      t         j                  z  }t        |      D ]  }|j!                         }||xx   dz  cc<   t	        j
                  |d|| r|nd ||      }|j                  j                  ||       |j                  |      }|j"                  j                  |j"                  j                  z
  |d d d d |f<    |j                  j                  ||       t)        j*                  |      \  }}} t-        ||d       t-        ||d       t-        | |d       y )N皙?333333?333333ӿg         g333333@g333333@        皙?      ?ffffff?皙?r   r      r   r   )orderr   exogr   r   皙ٿr%         ?state_intercept:0yE>atol-q=)nparraynanTr   SARIMAXeyessminitialize_knownsmoothnobsk_statesk_endogzerosrangeisnancopysmoothed_stateupdatendimr   compute_smoothed_state_weightsr   )!r   r   r   r   endogr'   trend_params	ar_paramsexog_paramsmeas_err_params
cov_paramsparamsmod
prior_mean	prior_covresr   mpdesiredjiytmp_modtmp_resdesired_state_intercept_weightsellsidesired_prior_weightsaactualactual_state_intercept_weightsactual_prior_weightss!                                    j/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tests/test_weights.py'test_smoothed_state_obs_weights_sarimaxr_      s    HHsBFFCt45688E.6288)*DD5LI%KeOJF
,+
iF/!* //%y'/tT,=,=?C 4&!Jq	CIGGZ3
**V
C 	AAAhh1a|$rvv-G 1X ?q 	?Axxad$&(ff1a
#JJL!Q$3!//!9E7?tT<M<MO ,,ZC!..0'.'='='?'?),););)=)=(>1a
#	??" ')hh1a|&<rvv&E# 1X A8 	ACooe9E3;48I8IKG KK((Y?NN6"()..!3./-/XXs||SXX6N-O)*35)1a/0%sA-.#5.kk((*G &&((3+=+=+?+?? ,Aq!SL9	AA$ HHaAY/"&&8 1X BOO	!	//%y/7tT4E4EG 	$$Q	2..(*1*@*@*B*B,/,>,>,@,@+AaAg&B GGZ3,,S1 AF*,@ FG$/23%A(*?eL    c                 	   t        j                  d      }t         j                  |d<   t         j                  |dd d f<   t         j                  |d<   | rt        j                  g d      nd }ddg}g d}d	d
g}g d}g }|dv r||z  }||z  }| r||z  }||z  }t	        j
                  |d|| r|nd       }	t        j                  ddg      }
t        j                  ddgddgg      }|	j                  j                  |
|       |	j                  |      }|	j                  }|	j                  }|	j                  }t        j                  ||||f      t         j                  z  }t        |      D ]  }t        |      D ]  }t        j                  |||f         rt         j                  |d d |d d |f<   9|j                         }d	|||f<   t	        j
                  |d|| r|nd       }|j                  j                  |
|       |j                  |      }|j                  j                   |j                  j                   z
  |d d |d d |f<     t        j                  ||||f      t         j                  z  }t        |      D ]  }t        |      D ]  }t	        j
                  |d|| r|nd       }|j                  j                  |
|       |j#                  |       |d   j$                  dk(  rF|d   }t        j                  |	j                  |	j                  f      |d<   |d d d f   |dd d d d f<   |d||fxx   d	z  cc<   |j                  j                         }|j                  j                   |j                  j                   z
  |d d |d d |f<   
  t        j                  |||f      t         j                  z  }t        |      D ]  }|
j                         }||xx   dz  cc<   t	        j
                  |d|| r|nd       }|j                  j                  ||       |j                  |      }|j                  j                   |j                  j                   z
  |d d d d |f<    |	j                  j                  |
|       t'        j(                  |      \  }}}t+        ||d       t+        ||d       t+        ||d       y )N)   r   )r   r   r%   )r   r%   r   r   r   )r    皙r   r   r)          @)r)   r   r)   r#   )r%   r   )r&   r   r'   r(   g?r!   g333333?g@r*   r+   r,   r.   )r/   r;   r1   r0   r   VARMAXr5   r6   r7   r8   r9   r:   r<   r=   r>   r?   r2   r@   rA   r   rB   r   )r   r   rC   r'   rD   
var_paramsrF   rH   rI   rJ   rK   rL   rM   r   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   s                                 r^   &test_smoothed_state_obs_weights_varmaxrg      s    HHVE&&E$K&&E!Q$K&&E$K.6288)*DD:L&Jr(KJF
,
jF+
jF --V5%-T49C4+&J3**& 'IGGZ3
**V
C 	AAAhh1a|$rvv-G 1X ?q 	?Axxad$&(ff1a
#JJL!Q$ --u5=T4I,,ZC!..0'.'='='?'?),););)=)=(>1a
#	?? ')hh1a|&<rvv&E# 1X A8 	ACmmEu19tEGKK((Y?NN6"()..!3./-/XXs||SXX6N-O)*35ag;)1a/0%sA-.#5.kk((*G &&((3+=+=+?+?? ,Aq!SL9	AA  HHaAY/"&&81X 	BOO	!	--V5-5T4A$$Q	2..(*1*@*@*B*B,/,>,>,@,@+AaAg&	B GGZ3,,S1 AF*,@ FG$/23%A(*?eLr`   diffuse)r   r%      
univariatec           	         t        j                  d      }|dk(  rt         j                  |d d t         j                  |d<   t         j                  |dd d f<   t         j                  |d<   t        |      }t        j                  ddg      }t        j
                  d	      }|s|j                  j                  ||       | rd
|j                  _        |j                  g       }|j                  }|j                  }	|j                  }
t        j                  |||	|
f      t         j                  z  }t        |      D ]  }t        |
      D ]  }t        j                  |||f         rt         j                  |d d |d d |f<   9|j                         }d|||f<   |j!                  |      }|s|j                  j                  ||       | rd
|j                  _        |j                  g       }|j"                  j$                  |j"                  j$                  z
  |d d |d d |f<     t        j                  |||	|	f      t         j                  z  }t        |      D ]  }t        |	      D ]  }|j!                  |      }|s|j                  j                  ||       | rd
|j                  _        |d   j&                  dk(  rF|d   }t        j                  |j                  |j                  f      |d<   |d d d f   |dd d d d f<   |d||fxx   dz  cc<   |j                  j                         }|j"                  j$                  |j"                  j$                  z
  |d d |d d |f<     t        j                  ||	|	f      t         j                  z  }|st        |	      D ]  }|j                         }||xx   dz  cc<   |j!                  |      }|j                  j                  ||       |j                  g       }|j"                  j$                  |j"                  j$                  z
  |d d d d |f<    |s|j                  j                  ||       t)        j*                  |      \  }}}|j,                  }t/        ||       |rt1        |d | t         j                  d       t1        |d d d |f   t         j                  d       t1        |d | t         j                         t1        |d d d |f   t         j                         t1        |t         j                         nt1        ||d       t        j2                  ||d d d d f   z  d	      }t        j2                  |||d   j$                  z
  d d d d d d f   z  d      }||z   }t1        ||j"                  j$                         t1        ||d |d f   ||d |d f   d       t1        ||d |d f   ||d |d f   d       y )N)
      ri   rm      r         r%   r   r"   r   Tr)   r*   r%   r.   r,   )axisobs_intercept)r%   rm   )r/   r;   r1   r	   r0   r4   r5   r6   filter_univariater7   r8   r9   r:   r<   r=   r>   cloner?   r2   rA   r   rB   nobs_diffuser   r   nansum)rj   rh   reset_randomstaterC   rJ   rK   rL   rM   r   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   dcontribution_priorcontribution_endogcomputed_smoothed_states                                r^   $test_smoothed_state_obs_weights_TVSSr~      s^    HHWE !|FFbq	&&E$K&&E!Q$K&&E$K
u+C3*%Jq	I  Y7$(!
**R.C 	AAAhh1a|$rvv-G 1X ?q 	?Axxad$&(ff1a
#JJL!Q$))A,KK00YG48GKK1!..,'.'='='?'?),););)=)=(>1a
#	??" ')hh1a|&<rvv&E# 1X A8 	ACii&G,,ZC04-()..!3./-/XXs||SXX6N-O)*35ag;)1a/0%sA-.#5.kk((*G &&((3+=+=+?+?? ,Aq!SL9	AA" HHaAY/"&&8q 	FA!AaDAIDii&GKK((I6nnR(G.5.D.D.F.F030B0B0D0D/E!!Q'*	F   Y7,,S1 AF*,@ 	AGr
BFF7q"1"urvvE:6r:BFFC6q"1"u=rvvF,bff5 	,.C"	$  YY :dD!m#<<1FYYec/2444dAtQ6FGG #57I"I/1C1C1E1EFF12qr6NGABFO%@212qr6:3ABF;%Ir`   singular)bothr   r%   periodsr%   r   c                    t        j                  d      }t         j                  |d<   t         j                  |dd d f<   t         j                  |d<   t        |      }|j                  j                  ddgt        j                  d      dz         | d	k(  rd|d
dd |f<   n!d|d
ddd |f<   d|d
ddd |f<   d|d
| | d |f<   d|dd d d d d |f<   d|j                  _        |j                  g       }t        |      D ]O  }t         j                  j                  |j                  d|f         }t        t        j                  |      d       Q |j                  }|j                   }	|j"                  }
t        j                  |||	|
f      t         j                  z  }t        |      D ]  }t        |
      D ]  }t        j$                  |||f         rt         j                  |d d |d d |f<   9|j'                         }d|||f<   |j)                  |      }|j                  j                  ddgt        j                  d      dz         d|j                  _        |j                  g       }|j*                  j,                  |j*                  j,                  z
  |d d |d d |f<     t/        j0                  |      \  }}}t3        ||d       y )N)rl   r   rn   rp   rq   r   r"   r   r   r   obs_cov.r%   	state_covTr)   r.   r,   )r/   r;   r1   r	   r5   r6   r4   ru   r7   r<   linalgeigvalshforecasts_error_covr   minr8   r9   r:   r=   r>   rv   r?   r2   r   rB   r   )r   r   ry   rC   rJ   rM   rR   eigvalsr   rN   rO   rP   rQ   rS   rT   rU   r[   _s                     r^   3test_smoothed_state_obs_weights_univariate_singularr   Y  s    HHWE&&E$K&&E!Q$K&&E$K
u+CGGc3ZQ76()IsHWH$%)*Iq!XgX%&)*Iq!XgX%&78Ix8G834'(CQ8G8#$ $CGG
**R.C 7^ )))$$S%<%<S!V%DERVVG_a()
 	AAAhh1a|$rvv-G 1X ?q 	?Axxad$&(ff1a
#JJL!Q$))A,,,c3ZQG04-!..,'.'='='?'?),););)=)=(>1a
#	?? 77<LFAqFG%0r`   c                    t        j                  d      }t         j                  |dd d f<   t         j                  |d<   t         j                  |dd d f<   t         j                  |d<   t        |      }t        j                  d      |d<   |j                  j                  dd	gt        j                  d             d
|j                  _        |j                  g       }|j                  }|j                  }|j                  }t        j                  ||||f      t         j                  z  }t        |      D ]  }t        |      D ]  }	t        j                  |||	f         rt         j                  |d d |d d |	f<   :|j                         }
d|
||	f<   |j                  |
      }t        j                  d      |d<   |j                  j                  dd	gt        j                  d             d
|j                  _        |j                  g       }|j                   j"                  |j                   j"                  z
  |d d |d d |	f<     t        j                  ||||f      t         j                  z  }t        |      D ]:  }t        |      D ](  }|j                  |      }t        j                  d      |d<   |j                  j                  dd	gt        j                  d             d
|j                  _        |d   j$                  dk(  rF|d   }t        j                  |j                  |j                  f      |d<   |d d d f   |dd d d d f<   |d||fxx   dz  cc<   |j                  j                         }|j                   j"                  |j                   j"                  z
  |d d |d d |f<   + = t'        j(                  |      \  }}}t+        ||d       t+        ||d       y )N)   ro   r   rn   rp   rq   ro   r%   rt   r   r"   Tr)   r*   r%   r.   r,   )r/   r;   r1   r	   r5   r6   r4   filter_collapsedr7   r8   r9   r:   r<   r=   r>   rv   r?   r2   rA   r   rB   r   )ry   rC   rJ   rM   r   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   r[   r\   r   s                      r^   )test_smoothed_state_obs_weights_collapsedr     sa   HHWE&&E!Q$K&&E$K&&E!Q$K&&E$K
u+C88F+CGGc3Z3#CGG
**R.C 	AAAhh1a|$rvv-G 1X ?q 	?Axxad$&(ff1a
#JJL!Q$))A,+-88F+;(,,c3ZC+/(!..,'.'='='?'?),););)=)=(>1a
#	??  ')hh1a|&<rvv&E# 1X A8 	ACii&G')xx'7GO$KK((#sRVVAY?'+CGG$()..!3./-/XXs||SXX6N-O)*35ag;)1a/0%sA-.#5.kk((*G &&((3+=+=+?+?? ,Aq!SL9	AA$ 	,,S1 .F*A FG%023%Ar`   	compute_jrl   )r   r%   r   )rb   r   	   rr   	compute_t)rm   r   r   )r   r   rb   rb   c                    t        j                  d      }t         j                  |dd d f<   t         j                  |d<   t         j                  |dd d f<   t         j                  |d<   t        |      }t        j                  d      |d<   |j                  j                  dd	gt        j                  d             d
|j                  _        |j                  g       }|j                  }|j                  }|j                  }t        j                  ||||f      t         j                  z  }	t        |      D ]  }
t        |      D ]  }t        j                  ||
|f         rt         j                  |	d d |
d d |f<   :|j                         }d||
|f<   |j                  |      }t        j                  d      |d<   |j                  j                  dd	gt        j                  d             d
|j                  _        |j                  g       }|j                   j"                  |j                   j"                  z
  |	d d |
d d |f<     t%        j&                  |||       \  }}}t        j(                  t        j*                  |            }|j-                          t        j(                  t        j*                  |             } | j-                          t        j.                  d      D ]  }||vst         j                  |	|d d f<     t        j.                  d      D ]  }
|
| vst         j                  |	d d |
f<     t        j0                  ||       }|	|   }	t3        ||	d       y )N)rl   ro   r   rn   rp   rq   r   rt   r   r"   Tr)   )r   r   rl   gHz>r,   )r/   r;   r1   r	   r5   r6   r4   r   r7   r8   r9   r:   r<   r=   r>   rv   r?   r2   r   rB   unique
atleast_1dsortarangeix_r   )r   r   ry   rC   rJ   rM   r   rN   rO   rP   rQ   rR   rS   rT   rU   r[   r   r   ixs                      r^   test_compute_t_compute_jr     s    HHWE&&E!Q$K&&E$K&&E!Q$K&&E$K
u+C88F+CGGc3Z3#CGG
**R.C 	AAAhh1a|$rvv-G 1X ?q 	?Axxad$&(ff1a
#JJL!Q$))A,+-88F+;(,,c3ZC+/(!..,'.'='='?'?),););)=)=(>1a
#	??  77yI7LFAq 		"--	23INN		"--	23INNYYr] #IFFGAqDM# YYr] #IFFGAqDM#
 
	9	%BbkGFG$/r`   c                     g d} t        j                  | dd      }|j                  g d      }t        j                  |d      \  }}}|j                  g d      }t        j                  |d      \  }}}t        j                  |d      \  }}}t        j                  |d      \  }}}t        j                  |d      \  }	}}t        j                  |d      \  }
}}t        j                  |      \  }}}t        j                  |      \  }}}t        ||       t        ||       t        ||       t        |	|       t        |
|       t        ||       y )	N)r   r   rc   r    g{Gz?r$   T)r&   r   )r    rd   r)   F)resmooth)r   r)   r   )r   r3   r7   r   rB   r   )rC   rJ   res1weights1_originalr   res2weights2_originalweights1_no_resmoothweights1_resmoothweights2_no_resmoothweights2_resmoothweights1_defaultweights2_defaults                r^   test_resmoothr     sa   (E
//%yD
IC::o&D#BBuq!::o&D#BBuq! "'!E!Eu"!Q#BBtq! "'!E!Eu"!Q#BBtq! #AA$Ga"AA$Ga(*;<%'89$&78(*;<%'89$&78r`   )!__doc__pytestnumpyr/   pandaspdnumpy.testingr   r   statsmodelsr   statsmodels.tsa.statespacer   r   r   7statsmodels.tsa.statespace.tests.test_impulse_responsesr	   	macrodataload_pandasdatadtaperiod_rangeindexmarkparametrizer_   rg   r~   r   r   r   r   r    r`   r^   <module>r      s      7   6 , H $$&++BOO(sC	 eT]3/2,udm<,udm<fM = = 3 4fMR eT]3/2ZM 3 4ZMz I.t}5oI 6 /oId ^4QF+41 , 541n>AB yryy}iA&NOyryy}iA&NO70 P P70t9r`   