
    M/PhLS                        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        Z ej        dd	d
          e_        ej                            dddg          ej                            dg d          ej                            dddg          ej                            dddg          d                                                 Zej                            dddg          ej                            dg d          d                         Zej                            dg d          ej                            dddg          d                         Zej                            dg d          ej                            dddg          d                         Zd Zej                            d  ej        d!          g d"g d#d$g          ej                            d% ej        d!          g d&g d'd(g          d)                         Zd* Z dS )+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        }t          j        ||||f          t           j        z  }t          |          D ]}t          |          D ]}t          j        |||f                   rt           j        |d d |d d |f<   6|                                }|||fxx         dz  cc<   t	          j        |d|| r|nd ||          }|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                            ||           |                    |           |d         j        dk    r7|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        z
  |d d |d d |f<   t          j        |||f          t           j        z  }t          |          D ]}|                                }||xx         dz  cc<   t	          j        |d|| r|nd ||          }|j                            ||           |	                    |          }|j        j        |j        j        z
  |d d d d |f<   |j                            ||           t)          j        |          \  }}} t-          ||d           t-          ||d           t-          | |d           d S )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!                                    m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/statespace/tests/test_weights.py'test_smoothed_state_obs_weights_sarimaxr_      s}    HsBFCt45668E.6@28)))***DD5LI%KeOJF
, +
iF "/! * /%y'/9ttT,=,=? ? ?C 4&!!Jq		CIGZ333
**V

C 	AAAh1a|$$rv-G 1XX ? ?q 	? 	?Axad$$ ?&(f1aaa
##JJLL!Q$3!/!9E7?/IttT<M<MO O O ,,ZCCC!..00'.'='?),);)=(>1aaa
##	?  ')h1a|&<&<rv&E# 1XX A A88 	A 	ACoe9E3;+E448I8IK K KG K((Y???NN6"""().!33./-/Xs|SX6N-O-O)*35)111aaa/0%sA-...#5...k((**G &(3+=+?? ,AAAq!!!SL99	A" HaAY//"&8 1XX B BOO	!	/%y/7'AttT4E4EG G G 	$$Q	222..((*1*@*B,/,>,@+AaaaAg&& GZ333,S11 AF*,@ FG$////23%A A A A(*?eLLLLL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        }t          j        ||||f          t           j        z  }t          |          D ]}t          |          D ]}t          j        |||f                   rt           j        |d d |d d |f<   6|                                }d	|||f<   t	          j        |d|| r|nd           }|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                            |
|           |                    |           |d         j        dk    rA|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        z
  |d d |d d |f<   t          j        |||f          t           j        z  }t          |          D ]}|
                                }||xx         dz  cc<   t	          j        |d|| r|nd           }|j                            ||           |                    |          }|j        j        |j        j        z
  |d d d d |f<   |	j                            |
|           t'          j        |          \  }}}t+          ||d           t+          ||d           t+          ||d           d S )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      sn    HVE&E$K&E!QQQ$K&E$K.6@28)))***DD:L&&&Jr(KJF
,
jF +
jF -V5%-7TT49 9 9C4+&&J3**& ' 'IGZ333
**V

C 	AAAh1a|$$rv-G 1XX ? ?q 	? 	?Axad$$ ?&(f1aaa
##JJLL!Q$ -u5=-GTT4I I I,,ZCCC!..00'.'='?),);)=(>1aaa
##	? ')h1a|&<&<rv&E# 1XX A A88 	A 	ACmEu19)CtE E EGK((Y???NN6"""().!33./-/Xs|SX6N-O-O)*35aaag;)111aaa/0%sA-...#5...k((**G &(3+=+?? ,AAAq!!!SL99	A HaAY//"&81XX 	B 	BOO	!	-V5-5%?TT4A A A$$Q	222..((*1*@*B,/,>,@+AaaaAg&& GZ333,S11 AF*,@ FG$////23%A A A A(*?eLLLLL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                            ||           | rd
|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<   6|                                }d|||f<   |                    |          }|s|j                            ||           | rd
|j        _        |	                    g           }|j        j        |j        j        z
  |d d |d d |f<   ˌt          j        |||	|	f          t           j        z  }t          |          D ]}t          |	          D ]}|                    |          }|s|j                            ||           | rd
|j        _        |d         j        dk    rA|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        z
  |d d |d d |f<   t          j        ||	|	f          t           j        z  }|st          |	          D ]}|                                }||xx         dz  cc<   |                    |          }|j                            ||           |	                    g           }|j        j        |j        j        z
  |d d d d |f<   |s|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          j        ||d d d d f         z  d	          }t          j        |||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           d S )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~      sy    HWE !||Fbqb	&E$K&E!QQQ$K&E$K
u++C3*%%Jq		I 8  Y777 )$(!
**R..C 	AAAh1a|$$rv-G 1XX ? ?q 	? 	?Axad$$ ?&(f1aaa
##JJLL!Q$))A,, HK00YGGG 948GK1!..,,'.'='?),);)=(>1aaa
##	?  ')h1a|&<&<rv&E# 1XX A A88 	A 	ACii&&G D,,ZCCC 504-().!33./-/Xs|SX6N-O-O)*35aaag;)111aaa/0%sA-...#5...k((**G &(3+=+?? ,AAAq!!!SL99	A  HaAY//"&8 	Fq 	F 	FA!!AaDDDAIDDDii&&GK((I666nnR((G.5.D.F030B0D/E!!!!QQQ'**  8  Y777,S11 AF*,@ 	AG Grr
BF7777qqq"1"urvE::::6rr:BFCCC6qqq"1"u=rvFFF,bf5555 	,.C"	$ 	$ 	$ 	$  Y :dD!!!m#<<1F F FYec/244dAAAtQQQ6FGG   #57I"I/1C1EFFFF122qrr6NGABBFO%@@@@2122qrr6:3ABBF;%I I I I I 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                            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        _        |                    g           }t          |          D ]P}t           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<   6|                                }d|||f<   |                    |          }|j                            ddgt          j        d          dz             d|j        _        |                    g           }|j        j        |j        j        z
  |d d |d d |f<   ތt/          j        |          \  }}}t3          ||d           d S )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    HWE&E$K&E!QQQ$K&E$K
u++CGc3ZQ7776()IsHWH$%%)*Iq!XgX%&)*Iq!XgX%&78Ix8G834'(CQQQ8G8#$ $CG
**R..C 7^^ ) ))$$S%<S!V%DEERVG__a(((( 	AAAh1a|$$rv-G 1XX ? ?q 	? 	?Axad$$ ?&(f1aaa
##JJLL!Q$))A,,,,c3ZQGGG04-!..,,'.'='?),);)=(>1aaa
##	? 7<<LFAqFG%000000r`   c                 d   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                            dd	gt          j        d                     d
|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<   6|                                }
d|
||	f<   |                    |
          }t          j        d          |d<   |j                            dd	gt          j        d                     d
|j        _        |                    g           }|j        j        |j        j        z
  |d d |d d |	f<   t          j        ||||f          t           j        z  }t          |          D ] }t          |          D ]}|                    |          }t          j        d          |d<   |j                            dd	gt          j        d                     d
|j        _        |d         j        dk    rA|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        z
  |d d |d d |f<   "t'          j        |          \  }}}t+          ||d           t+          ||d           d S )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     s   HWE&E!QQQ$K&E$K&E!QQQ$K&E$K
u++C8F++CGc3Z333#CG
**R..C 	AAAh1a|$$rv-G 1XX ? ?q 	? 	?Axad$$ ?&(f1aaa
##JJLL!Q$))A,,+-8F+;+;(,,c3ZCCC+/(!..,,'.'='?),);)=(>1aaa
##	? ')h1a|&<&<rv&E# 1XX A A88 	A 	ACii&&G')x'7'7GO$K((#sRVAYY???'+CG$().!33./-/Xs|SX6N-O-O)*35aaag;)111aaa/0%sA-...#5...k((**G &(3+=+?? ,AAAq!!!SL99	A" 	,S11 .F*A FG%000023%A A A A A Ar`   	compute_jrl   )r   r%   r   )rb   r   	   rr   	compute_t)rm   r   r   )r   r   rb   rb   c                 t   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                            dd	gt          j        d                     d
|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<   6|                                }d||
|f<   |                    |          }t          j        d          |d<   |j                            dd	gt          j        d                     d
|j        _        |                    g           }|j        j        |j        j        z
  |	d d |
d d |f<   t%          j        |||           \  }}}t          j        t          j        |                    }|                                 t          j        t          j        |                     } |                                  t          j        d          D ]}||vrt           j        |	|d d f<   t          j        d          D ]}
|
| vrt           j        |	d d |
f<   t          j        ||           }|	|         }	t3          ||	d           d S )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    HWE&E!QQQ$K&E$K&E!QQQ$K&E$K
u++C8F++CGc3Z333#CG
**R..C 	AAAh1a|$$rv-G 1XX ? ?q 	? 	?Axad$$ ?&(f1aaa
##JJLL!Q$))A,,+-8F+;+;(,,c3ZCCC+/(!..,,'.'='?),);)=(>1aaa
##	? 7yI7 7 7LFAq 	"-	2233INN	"-	2233INNYr]] # #IFGAqqqDMYr]] # #IFGAAAqDM 
	9	%	%BbkGFG$//////r`   c                     g d} t          j        | dd          }|                    g d          }t          j        |d          \  }}}|                    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          ||           d S )	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     s   (((E
/%yD
I
I
IC::ooo&&D#Bu  q!::ooo&&D#Bu  q! "'!Eu" " "!Q#Bt  q! "'!Eu" " "!Q#Bt  q! #A$GGa"A$GGa(*;<<<%'8999$&7888(*;<<<%'8999$&78888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 7 7 7 7 7 7 7             6 6 6 6 6 6 6 6 , , , , , , H H H H H H $$&&+BO(sCCC	 eT]33///22,udm<<,udm<<fM fM =< =< 32 43fMR eT]33///22ZM ZM 32 43ZMz III..t}55oI oI 65 /.oId ^^^44QF++41 41 ,+ 5441n>A >A >AB yry}}iiiA&NOOyry}}iiiA&NOO70 70 PO PO70t9 9 9 9 9r`   