
    M/Ph^                        d Z ddlZddlZddlZddlmZmZm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZ ej                                        j        Z ej        ddd	
          e_        d Zd Zej                            dddg          ej                            dg d          d                         Zej                            dddg          ej                            dg d          d                         Zej                            dddg          ej                            dg d          d                         Zd Zej                            dddg          ej                            dg d          d                         Z d Z!ej                            dddg          ej                            dg d          d                         Z"dS )zY
Tests for prediction of state space models

Author: Chad Fulton
License: Simplified-BSD
    N)assert_equalassert_raisesassert_allcloseassert_)datasets)sarimaxvarmax)TVSS1959Q12009Q3Q)startendfreqc                     t          j        ddd          } t          j                            d           t          j        t          j                            d          | d d         	          }t          j        |d
          }|	                    |j
                  }|                                }t          t          |          |j                   t          |j        j        | d d         j                   |                                }t          |j        d         | d                    t          j        |dd          }|	                    |j
                  }|                                }t          |j        |j        d         dz
             t          t          |          |j                   t          |j        j        | dd         j                   |                                }t          |j        d         | d                    t          j        |ddd          }|	                    |j
                  }|                                }t          |j        |j        d         dz
             t          t          |          |j                   t          |j        j        | dd         j                   |                                }t          |j        d         | d                    d S )Nz
1950-01-01   D)r   periodsr   i 
   )size)index   r   r   orderr   r   r   r   T)r   simple_differencingr   )r      r   )r   r   r      )r   seasonal_orderr      )pd
date_rangenprandomseedSeriesnormalr   SARIMAXfilterstart_paramspredictr   lennobsr   valuesforecastshape)r   endogmodrespredfcasts         p/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/statespace/tests/test_prediction.pytest_predict_datesr9      sl   MbsCCCEINN6Ibi&&B&//uSbSzBBBE /%y
1
1
1C
**S%
&
&C ;;==DTCH%%%"E#2#J$5666LLNNEQr+++ /%yd
K
K
KC
**S%
&
&C;;==D5;q>A-...TCH%%%"E!B$K$6777LLNNEQr+++ /%y.24 4 4C
**S%
&
&C;;==D5;q>U3444TCH%%%"E%(O$:;;;LLNNEQr+++++    c                     g d} t          j        | d          }|                    ddg          }d|j        _        |                    ddg          }t          |j        j        d           t          |j        d u            t          |j	        j        d           t          |j	        d u            t          t          |j        d	           t          t          |j        d	           t          |                    d
          |                    d
                     |                    d
          }|                    d
          }t          |                                |                                           d S )N)      ?333333?g?g333333?r   r   r<         ?T)r      )r   r   r?   )dynamicr   )r   r*   r+   ssmmemory_no_predictedr   predicted_stater2   r   predicted_state_covr   
ValueErrorr-   get_predictionr   r1   get_forecastsummary_frame)r3   r4   res1res2fcast1fcast2s         r8   test_memory_no_predictedrM   E   s`      E
/%y
1
1
1C::sBi  D"&CG::sBi  D %+V444D D())))/;;;D$,--- *dlD9999*d14@@@@ DMM"%%t}}R'8'8999 r""Fr""FF((**F,@,@,B,BCCCCCr:   use_exogTFtrend)nctc                 8   t          j        d                              dd          dz  }| rt          j        d          nd }| rd|dd<   dg}dg}d	g}dg}g }|d
v r||z  }||z  }| r||z  }||z  }|                                }	t           j        |	dd <   t          j        |	d||          }
|
                    |          }|	                                }|j
        }| r
|d d         nd }t          j        |d d         d||          }|                    |          }| r
|dd          nd }|	                    dd|          }|j
        }|j        |j        z   |j        z   }|D ].}t          t          ||          t          ||                     /d S )Nd   r   r>          @r      皙?r<   r=   rQ   rR   r   r   rO   exog2   r   c   r   r   r[   )r%   arangereshapeonescopynanr   r*   smoothrF   prediction_resultsrepresentation_attributesfilter_attributessmoother_attributesr   getattr)rN   rO   r3   r[   trend_params	ar_paramsexog_params
var_paramsparamsy1mod1rI   p1pr1x2mod2rJ   x2fp2pr2attrskeys                         r8   !test_concatenated_predict_sarimaxrz   b   s    IcNN""3**S0E#-273<<<D RU5LI%KJF
,
iF +
jF	BvBsttH?2Ye$GGGD;;vD					B

C	(crcDB?5":Ye"MMMD;;vD
)$rss))TC			1"3		7	7B

C 	%

	 

!	" 
  > >S))73+<+<====> >r:   c                 .   t          j        d                              dd          dz  }| rt          j        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d <   t          j        |	d||          }
|
                    |          }|	                                }|j
        }| r
|d d         nd }t          j        |d d         d||          }|                    |          }| r
|dd          nd }|	                    dd|          }|j
        }|j        |j        z   |j        z   }|D ].}t          t          ||          t          ||                     /d S )N   rT   r   r>   rW   皙?r<   g        r}   rU   r>   r   r>   rX   rY   r   r   rZ   r\   r   r]   r^   )r%   r_   r`   ra   rb   rc   r	   VARMAXrd   rF   re   rf   rg   rh   r   ri   )rN   rO   r3   r[   rj   rm   rl   
cov_paramsrn   ro   rp   rI   rq   rr   rs   rt   rJ   ru   rv   rw   rx   ry   s                         r8    test_concatenated_predict_varmaxr      s    IcNN""3**S0E#-273<<<D:L&&&Jr(KJF
,
jF +
jF	BvBsttH=6TBBBD;;vD					B

C	(crcDB=ss6RHHHD;;vD
)$rss))TC			1"3		7	7B

C 	%

	 

!	" 
  > >S))73+<+<====> >r:   c                 ^   t          j        d                              dd          t           j        z  }| rt          j        d          nd }ddg}g d}ddg}g d	}g }|d
v r||z  }||z  }| r||z  }||z  }| r
|d d         nd }	t          j        |d d         d||	          }
|
                    |          }| r
|dd         nd }|                    ddd|          }|                    ddd|          }|                    ddd|          }t          |j
        |j
                   t          |j        |j                   t          |j
        |j
                   t          |j        |j                   t          |j
        d d         |j                   t          |j        d d         j        |j                   |                    dddd|          }|                    dddd|          }|                    dddd|          }t          |j
        |j
                   t          |j        |j                   t          |j
        |j
                   t          |j        |j                   | du rQ|dk    rKt          |j
        d d         |j                   t          |j        d d         j        |j                   d S t          |j
        d d         |
d         z   |j                   t          |j        d d         |
d         z   j        |j                   d S )Nr|   rT   r   rW   r}   r~   r>   rU   r   rX   r\   r   rZ   =   r   <   	predictedr   r   information_setr[   filteredsmoothedTr   r   r   signal_onlyr[   FrP   obs_interceptobs_cov)r%   zerosr`   rc   ra   r	   r   rd   rF   r   predicted_meanvar_pred_meanfittedvaluesTforecasts_error_cov)rN   rO   r3   r[   rj   rm   rl   r   rn   x_fitr4   r5   x_fcastp_predf_preds_predp_signalf_signals_signals                      r8   *test_predicted_filtered_smoothed_with_nansr      s    HSMM!!#q))BF2E#-273<<<D:L&&&Jr(KJF
,
jF +
jF!+D"IItE
-crc
&E
J
J
JC
**V

C%/d2b5kk4GR    F R    F R    F
 F)6+@AAAF(&*>???F)6+@AAAF(&*>???F)#2#.0@AAAF("-/1HIII!!R$ "  H !!R "  H !!R "  H
 H+X-DEEEH*H,BCCCH+X-DEEEH*H,BCCC5Uc\\/4c6FGGG.ss35s7NOOOOO/4s?7KK(	* 	* 	*/4s9~EH/	1 	1 	1 	1 	1r:   c                 2  
 t          t          j        d          t          j        z            }|j                            ddgt          j        d                     |                    g           }t          t          j        d          t          j        z            

fddD             } |j        ddd	d
d|} |j        ddd	dd|} |j        ddd	dd|}t          |j
        |j
                   t          |j        |j                   t          |j
        |j
                   t          |j        |j                   t          |j
        d d         |j                   t          |j        d d         j        |j                    |j        ddd	d
dd|} |j        ddd	ddd|} |j        ddd	ddd|}	t          |	j
        |j
                   t          |	j        |j                   t          |j
        |j
                   t          |j        |j                   t          |j
        d d         |d         j        z   |j                   t          |j        d d         |d         j        z   j        |j                   d S )Nr\   r   r=   皙?r   r   r   c                 "    i | ]}||         S  r   .0ry   mod_ooss     r8   
<dictcomp>zCtest_predicted_filtered_smoothed_with_nans_TVSS.<locals>.<dictcomp>  +     1 1 1Cc73< 1 1 1r:   r   designr   
transition	selection	state_covr   r   r   r   r   r   r   r   r\   Tr   r   r   r   r   r   r   )r
   r%   r   rc   rA   initialize_knowneyerd   rF   r   r   r   r   r   r   )reset_randomstater4   r5   kwargsr   r   r   r   r   r   r   s             @r8   /test_predicted_filtered_smoothed_with_nans_TVSSr     s!   
rx  26)
*
*CGc3Z333
**R..C28G$$rv-..G1 1 1 1 ,0 1 1 1F  S R 
 F  S R 
 F  S R 
 F
 F)6+@AAAF(&*>???F)6+@AAAF(&*>???F)#2#.0@AAAF("-/1HIII!s! R$ 
 H "s! R 
 H "s! R 
 H
 H+X-DEEEH*H,BCCCH+X-DEEEH*H,BCCCH+CRC033G3II$& & &X+CRC03y>3CCF+- - - - -r:   c                 2   t          j        t          ddg                   }|dv r$|                                j        dd          dz  }|dk    r||                                z  }| rt          j        d          nd }| rd|dd	<   d
dg}g d}ddg}g d}g }|dv r||z  }||z  }| r||z  }||z  }| r
|d d         nd }	t          j        |d d         d||	          }
ddg|
d<   t          j	        ddgddgg          |
d<   |

                    |          }| r
|dd         nd }|                    ddd|          }|                    ddd|          }|                    ddd |          }|                    d!|"          }|
d         d d d f         }|
d#         }|
d         d d d d d f         }||j        z  }||j        z  }||j        d$d d%f         z  }t!          |j        d d         ||z   j                   t!          |j        dd          |j                   t!          |j        d d         ||z   j                   t!          |j        dd          |j                   t!          |j        d d         ||z   j                   t!          |j        dd          |j                   |d d d d d f         |j        j        z  |j        d d d d d f         z  }|d d d d d f         |j        j        z  |j        d d d d d f         z  }|d d d d d f         |j        d$d d%f         j        z  |j        d d d d d f         z  }t!          |j        d d         |j        |z   j                   t!          |j        dd          |j                   t!          |j        d d         |j        |z   j                   t!          |j        dd          |j                   t!          |j        d d         |j        |z   j                   t!          |j        dd          |j                   |                    dddd&|'          }|                    dddd&|'          }|                    ddd d&|'          }|j        |j        z
  }|j        j        |z
  j        }t!          |j        d d         |j                   t!          |j        dd          |d(d)*           t!          |j        d d         |j                   t!          |j        dd          |           t!          |j        d d         |j                   t!          |j        dd          |           t!          |j        d d         |           t!          |j        dd          |           t!          |j        d d         |           t!          |j        dd          |           t!          |j        d d         |           t!          |j        dd          |           d S )+NrealgdpcpirP   rQ   r   rT   rP   rU      (   rW   r}   r~   r>   r   rX   r\   r   rZ   r?   g       r   r=   g333333?g333333@r   r   r   r   r   r   r   r   r   )r[   r   .r   Tr   ư>:0yE>rtolatol)r%   logdtadiffilocmeanra   r	   r   arrayrd   rF   rG   smoothed_statefiltered_staterC   r   r   r   smoothed_state_covfiltered_state_covrD   r   )rN   rO   r3   r[   rj   rm   rl   r   rn   r   r4   r5   r   r   r   r   r7   dZHdesired_s_signaldesired_f_signaldesired_p_signaldesired_s_signal_covdesired_f_signal_covdesired_p_signal_covr   r   r   fcast_signalfcast_signal_covs                                  r8   'test_predicted_filtered_smoothed_varmaxr   6  s    F3	5)*++E


!!""%+||#-273<<<D RU:L&&&Jr(KJF
,
jF +
jF!+D"IItE
-crc
&E
J
J
JC s8CXSz #Sz+ , ,C	N **V

C%/d2b5kk4GR    F R    F R    F
 Rg..EOQQQW%AHAIqqq!!!Tz"A3--3--3.sCRCx88F)#2#.5E1E0HIIIF)"##.0DEEEF)#2#.5E1E0HIIIF)"##.0DEEEF)#2#.5E1E0HIIIF)"##.0DEEE 	
$111*.0013tQQQz?B  	
$111*.0013tQQQz?B  	
$111*/SbS9;;ac$111*oM F("-0D0F0J/MNNNF(-u/BCCCF("-0D0F0J/MNNNF(-u/BCCCF("-0D0F0J/MNNNF(-u/BCCC!!R$ "  H !!R "  H !!R "  H
 '!#-L+-14H+CRC02B2DEEE$lD    H+CRC02B2DEEEH+BCC0,???H+CRC02B2DEEEH+BCC0,???H*3B3/1EFFFH*233/1ABBBH*3B3/1EFFFH*233/1ABBBH*3B3/1EFFFH*233/1ABBBBBr:   c                    t          t          j        d                    }|j                            ddgt          j        d                     |                    g           }t          t          j        d          t          j        z            fddD             } |j        ddd	d
d|} |j        ddd	dd|} |j        ddd	dd|} |j        ddd	d
dd|} |j        ddd	ddd|} |j        ddd	ddd|}	|d         	                    dd          d d d d d f         }
|d         	                    ddd          }|d         	                    ddd          } |j
        di |}|j        d         j        z
  }|j        d         j        z
  }||j        j        d d d d d f         z  }||j        j        d d d d d f         z  }||j        j        d dd d d f         z  }t#          |j        d d         |
|z   d                    t#          |j        dd          |j                   t#          |j        d d         |
|z   d                    t#          |j        dd          |j                   t#          |j        d d         |
|z   d                    t#          |j        dd          |j                   t#          |	j        d d         |d                    t#          |	j        dd          |dd           t#          |j        d d         |d                    t#          |j        dd          |           t#          |j        d d         |d                    t#          |j        dd          |           t%          |j                  D ]}t#          |j        |         ||         |j        d|f         z  ||         j        z  ||         z              t#          |j        |         ||         |j        d|f         z  ||         j        z  ||         z              t#          |j        |         ||         |j        d|f         z  ||         j        z  ||         z              t#          |	j        |         ||         |j        d|f         z  ||         j        z             t#          |j        |         ||         |j        d|f         z  ||         j        z             t#          |j        |         ||         |j        d|f         z  ||         j        z             t#          |j        dd          |j                   t#          |j        dd          |j                   t#          |j        dd          |j                   t#          |	j        dd          |           t#          |j        dd          |           t#          |j        dd          |           d S )Nr   r=   r   r   r   c                 "    i | ]}||         S r   r   r   s     r8   r   z9test_predicted_filtered_smoothed_TVSS.<locals>.<dictcomp>  r   r:   r   r   r   r   r   r   r   Tr   r   r   r   r   r   r   r\   ).r   r   r   r   .r   )r   )r
   r%   r   rA   r   r   rd   rc   rF   	transposerG   r   r   r   r   r   rC   r   ranger/   r   r   rD   )r   r4   r5   r   r   r   r   r   r   r   r   r   r   r7   r   r   r   r   r   rR   r   s                       @r8   %test_predicted_filtered_smoothed_TVSSr     s   
rx  
!
!CGc3Z333
**R..C28G$$rv-..G1 1 1 1 ,0 1 1 1F  S R 
 F  S R 
 F  S R 
 F "s! R$ 
 H "s! R 
 H "s! R 
 H
 	O&&q!,,QQQ4Z8AH1a((AI  Aq))AC**6**E''/*B*DDL*WY-?-AA3-/111d
;;3-/111d
;;3.0"aaa>>F)#2#.5E1Ev0NOOOF)"##.0DEEEF)#2#.5E1Ev0NOOOF)"##.0DEEEF)#2#.5E1Ev0NOOOF)"##.0DEEEH+CRC02B62JKKK$lD    H+CRC02B62JKKKH+BCC0,???H+CRC02B62JKKKH+BCC0,???38__ I I,Q/!s5c1f==!F1M	O 	O 	O,Q/!s5c1f==!F1M	O 	O 	O,Q/!s6sAv>>1G!A$N	P 	P 	P 	.q1!s5c1f==!F	H 	H 	H.q1!s5c1f==!F	H 	H 	H.q1!s6sAv>>1G	I 	I 	I 	I F(-u/BCCCF(-u/BCCCF(-u/BCCCH*233/1ABBBH*233/1ABBBH*233/1ABBBBBr:   c                 X   t          j        t          ddg                   }|dv r$|                                j        dd          dz  }|dk    r||                                z  }| rt          j        d          nd }| rd|dd	<   d
dg}g d}ddg}g d}g }|dv r||z  }||z  }| r||z  }||z  }| r
|d d         nd }	| r
|dd         nd }
t          j        |d d         d||	          }|	                    |          }| r
|d d         nd }| r
|dd         nd }t          j        |d d         d||          }|	                    |          }|
                    ddd|
          }|
                    dd|          }t          |j        |j                   t          |j        |j                   |
                    ddd|
          }|
                    dd|          }t          |j        |j                   t          |j        |j                   |
                    ddd|
          }|
                    dd|          }t          |j        |j                   t          |j        |j                   |
                    ddd|
d          }|
                    dd|d          }t          |j        |j                   t          |j        |j                   |
                    ddd|
d          }|
                    dd|d          }t          |j        |j                   t          |j        |j                   |
                    ddd|
d          }|
                    dd|d          }t          |j        |j                   t          |j        |j                   |
                    ddd|
d          }|
                    dd|d          }t          |j        |j                   t          |j        |j                   |
                    ddd|
d          }|
                    dd|d          }t          |j        |j                   t          |j        |j                   |
                    ddd|
d          }|
                    dd|d          }t          |j        |j                   t          |j        |j                   |
                    ddd|
dd           }|
                    dd|dd!          }t          |j        |j                   t          |j        |j                   |
                    ddd|
dd           }|
                    dd|dd!          }t          |j        |j                   t          |j        |j                   |
                    ddd|
dd           }|
                    dd|dd!          }t          |j        |j                   t          |j        |j                   d S )"Nr   r   r   r   rT   rP   rU   r   r   rW   r}   r~   r>   r   rX   r\   r   r   rZ   r   r   )r   r@   r   r[   r^   r      Tr   )r   r@   r   r[   r   )r   r   r[   r   )r   r@   r   r[   r   )r   r   r[   r   )r   r@   r   r[   r   r   )r   r   r[   r   r   )r%   r   r   r   r   r   ra   r	   r   r+   rF   r   r   r   )rN   rO   r3   r[   rj   rm   rl   r   rn   x_fit1x_fcast1rp   rI   x_fit2x_fcast2rt   rJ   rq   rv   s                      r8   &test_predicted_filtered_dynamic_varmaxr     s    F3	5)*++E


!!""%+||#-273<<<D RU:L&&&Jr(KJF
,
jF +
jF #,T#2#YYF&0tBrE{{DH=ss6VLLLD;;vD #,T#2#YYF&0tBrE{{DH=ss6VLLLD;;vD 
		1bbx		H	HB			1"8		<	<BB%r'8999B$b&6777			1bbx		H	HB			1"8		<	<BB%r'8999B$b&6777			2t(		K	KB			22H		=	=BB%r'8999B$b&6777 
		1bbx-7 
 
9 
9B			1"8-7 
 
9 
9BB%r'8999B$b&6777			1bbx-7 
 
9 
9B			1"8-7 
 
9 
9BB%r'8999B$b&6777			2t(-7 
 
9 
9B			22H-7 
 
9 
9BB%r'8999B$b&6777 
		1bbx)- 
 
/ 
/B			1"8		N	NBB%r'8999B$b&6777			1bbx)- 
 
/ 
/B			1"8		N	NBB%r'8999B$b&6777			2t()- 
 
/ 
/B			22H$		O	OBB%r'8999B$b&6777 
		1bbx)-z 
 
K 
KB			1"8-7 
 
9 
9BB%r'8999B$b&6777			1bbx)-z 
 
K 
KB			1"8-7 
 
9 
9BB%r'8999B$b&6777			2t()-z 
 
K 
KB			22H$-7 
 
9 
9BB%r'8999B$b&677777r:   )#__doc__pytestnumpyr%   pandasr#   numpy.testingr   r   r   r   statsmodelsr   statsmodels.tsa.statespacer   r	   7statsmodels.tsa.statespace.tests.test_impulse_responsesr
   	macrodataload_pandasdatar   period_ranger   r9   rM   markparametrizerz   r   r   r   r   r   r   r   r:   r8   <module>r      s             O O O O O O O O O O O O             6 6 6 6 6 6 6 6 H H H H H H $$&&+BO(sCCC	*, *, *,ZD D D: dE]33///22&> &> 32 43&>R dE]33///22$> $> 32 43$>N dE]33///22F1 F1 32 43F1R2- 2- 2-j dE]33///22hC hC 32 43hCVRC RC RCj eT]33///22q8 q8 32 43q8 q8 q8r:   