
    !g@.                     ~    d Z ddlZddlZddlmZ ddlmZ ddl	m
Z
mZ ddlmZmZ ddZd	 Zd
 Zd ZddZd Zd Zy)z
Tests for concentrating the scale out of the loglikelihood function

Note: the univariate cases is well tested in test_sarimax.py

Author: Chad Fulton
License: Simplified-BSD
    N)Bunch   )results_varmax)sarimaxvarmax)assert_raisesassert_allclosec                    |j                  dd       t        j                  | fi |}d|j                  _        ||j                  _        |j                  }d|d<   |j                  |      }|j                  }t        j                  | fi |}||j                  _        |j                         }d|j                  dd      z   }	|||	 d  z  ||	 d  |j                  |      }
t        d	i ||||||
|dS )
N	tolerancer   Tr   measurement_errorF)mod_concparams_concmod_origparams_origres_concres_origscale )
setdefaultr   SARIMAXssmfilter_concentratedfilter_univariatestart_paramssmoothr   copygetr   )endogr   kwargsr   r   r   r   r   r   k_varsr   s              o/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tests/test_concentrated.pyget_sarimax_modelsr#      s   
k1% u//H'+HLL$%6HLL"''KKO{+HNNE u//H%6HLL"""$K/77F!K$99K{+H % ( (h"$ % %    c                  	   d} t         j                  j                  d       t         j                  j                  |       }i }t	        |      }t        |j                  j                  |j                  j                         t        |j                  j                  |j                  j                         t        |j                  j                  |j                        |j                  j                  |j                               t        |j                  j                  |j                        |j                  j                  |j                               t         j                   |dd t	        |      }t        |j                  j                  |j                  j                         t        |j                  j                  |j                  j                         t        |j                  j                  |j                        |j                  j                  |j                               t        |j                  j                  |j                        |j                  j                  |j                               d|d<   t	        |fi |}t        |j                  j                  |j                  j                         t        |j                  j                  dd  |j                  j                  dd         t        |j                  j                  |j                        |j                  j                  |j                               t        |j                  j                  |j                        dd  |j                  j                  |j                        dd         d|d	<   d
|d<   t        j"                  |       |d<   t	        |fi |}t        |j                  j                  |j                  j                         t        |j                  j                  dd  |j                  j                  dd         t        |j                  j                  |j                        |j                  j                  |j                               t        |j                  j                  |j                        dd  |j                  j                  |j                        dd         y )N   q  size   
   r   r   r   r*   seasonal_order   loglikelihood_burnctrendexog)nprandomseednormalr#   r	   r   llfr   llf_obsr   logliker   r   r   
loglikeobsnanarange)nobsr   r    outs       r"   !test_concentrated_loglike_sarimaxr?   ,   sp    DIINN5II$'EF U
#CCLL$$cll&6&67CLL((#,,*>*>?CLL((9LL((9;CLL++COO<LL++COO<> &&E!BK
U
#CCLL$$cll&6&67CLL((#,,*>*>?CLL((9LL((9;CLL++COO<LL++COO<>  ,F
U
-f
-CCLL$$cll&6&67CLL((,cll.B.B12.FGCLL((9LL((9;CLL++COO<QR@LL++COO<QR@B $%F F7OYYt_F6N
U
-f
-CCLL$$cll&6&67CLL((,cll.B.B12.FGCLL((9LL((9;CLL++COO<QR@LL++COO<QR@Br$   c                     d} t         j                  j                  d       t         j                  j                  |       }t	        |      }t        |j                  j                         |j                  j                                t        |j                  j                  d      |j                  j                  d             t        |j                  j                  ddd      |j                  j                  ddd             y )	Nr&   r'   r(   r.   r   -   r+   startenddynamic)
r3   r4   r5   r6   r#   r	   r   predictr   forecast)r=   r   r>   s      r"   !test_concentrated_predict_sarimaxrH   c   s     DIINN5II$'E U
#CCLL((*CLL,@,@,BCCLL))!,cll.C.CA.FGCLL((qb"(ELL((qb"(EGr$   c            	         d} t         j                  j                  d       t         j                  j                  |       }ddt        j                  t        j
                  |             d}t        j                  |fddi|}t        j                  |fi |}|j                  }|d	xx   d
z  cc<   t        t        t        |j                  |d d	       |j                  |             |j                  j                  |d	         5  |j                  |d d	       }|j                  |d d	       }|j!                  |d d	       }d d d        |j                  |      }	|j                  |      }
|j!                  |      }t        j"                  |	j"                         t        |j$                  dd  |	j$                  dd         t        |
       t        |       y # 1 sw Y   xY w)Nr&   r'   r(   r,   ct)r-   r1   r2   concentrate_scaleTr   g333333?r*   )r3   r4   r5   r6   sinr<   r   r   r   r   AssertionErrorr	   r9   r   fixed_scaler   r:   r7   r8   )r=   r   r    r   r   paramsres1llf1llf_obs1res2llf2llf_obs2s               r"   test_fixed_scale_sarimaxrV   s   s   DIINN5II$'E&ryy'F uGGGH u//H ""F
2J#J ./""6#2;/1A1A&1IK 
	!	!&*	- 4vcr{+s,&&vcr{34
 ??6"DF#D""6*HDHHdhh'DLL$dll12&67D$Hh'4 4s   
=G!!G*c                 	   t        j                  ddd      }t        j                  t        j                  g d|      }t        j                  |d         j                         |d<   t        j                  |d	         j                         |d
<   t        j                  |d         j                         |d<   |j                  dddd
gf   }|r]t
        j                  |j                  d<   t
        j                  |j                  ddd d f<   t
        j                  |j                  d<   |j                  ddi       t        j                  |fi |}t        j                  |fi |}d|j                  _        | |j                  _        | |j                  _        |j"                  }||j$                     d   }	|j'                  dd      dk(  r||j$                  xx   |	z  cc<   n||j$                  xx   |	dz  z  cc<   |j)                  |      }
|
j*                  }|j-                         }|j'                  dd      dk(  r||j$                  xx   |z  cc<   n||j$                  xx   |dz  z  cc<   ||j.                  xx   |z  cc<   |j)                  |      }t1        |
j2                  |j2                         |j                  j4                  D ]<  }|dk(  r	t1        t7        |
j8                  |      t7        |j8                  |             > |
j*                  }|
j:                  }g d}|D ]<  }t7        |
j8                  |      }t7        |j8                  |      }t1        ||d       > g d}|D ]J  }t7        |
j8                  |      d|d f   }t7        |j8                  |      d|d f   }t1        ||d       L g d }|D ]<  }t7        |
j8                  |      }t7        |j8                  |      }t1        ||d       > |j<                  }|
j?                  d!|d"z   d#$      }|
j?                  d!|d"z   d#$      }t1        |j@                  |j@                         t1        |jB                  |jB                         y )%Nz
1960-01-01z
1982-10-01QS)freq)invincconsump)columnsindexrZ   dln_invr[   dln_incr\   dln_consumpz
1960-04-01z
1978-10-01)r   r      r.   )   r   r   r   Terror_cov_typeunstructureddiagonalg      ?obs)predicted_statefiltered_state	forecastsforecasts_errorkalman_gaingHz>)atol)standardized_forecasts_errorpredicted_state_covfiltered_state_covtmp1tmp2tmp3tmp4.)smoothed_statesmoothed_state_covsmoothed_state_autocovsmoothed_state_disturbancesmoothed_state_disturbance_cov smoothed_measurement_disturbance$smoothed_measurement_disturbance_covscaled_smoothed_estimatorscaled_smoothed_estimator_covsmoothing_errorsmoothed_forecastssmoothed_forecasts_errorsmoothed_forecasts_error_covr+   2   (   rB   )"pd
date_range	DataFramer   lutkepohl_datar3   logdifflocr;   ilocupdater   VARMAXr   r   r   r   _params_state_covr   r   r   r   _params_obs_covr	   r7   shapesgetattrfilter_resultsr/   r=   get_predictionpredicted_meanse_mean)r   missingr    r^   dtar   r   r   conc_paramsstart_scaler   r   orig_paramsr   namedfilter_attractualdesiredfilter_attr_burnsmoothed_attrr=   	pred_conc	pred_origs                           r"   check_concentrated_scaler      s   MM,4@E
,,~448GCVVCJ',,.C	NVVCJ',,.C	NI/446CGGL-	9/EEFE 66

4VV

1Q3666

4 MM;"#}}U-f-H}}U-f-H'+HLL$%6HLL"%6HLL" ''Kh889!<Kzz"N3zAH../;>/H../;3CC/ {+HNNE ""$Kzz"N3zAH../58/H../5#:=/ (()U2) {+H HLL(,,/ ## @5= 7 7> 7 7>	@@ NNE##A5K  400$7(1148d348 ! 400$7QR@(1148abAd34
	5M  400$7(1148d34 ==D''bdRi'LI''bdRi'LII,,i.F.FGI%%y'8'89r$   c                      t        d       t        dd       t        dd       t        dd       t        ddd	       y )
NFr   Tr   r   rf   r   rd   r   r   r+   r   r   r/   r   r   r$   r"   $test_concentrated_scale_conventionalr     s:    u5uMu,68udCud024r$   c                      t        d       t        dd       t        dd       t        dd       t        ddd       y )	NTr   r   rf   r   r   r+   r   r   r   r$   r"   "test_concentrated_scale_univariater     s7    t4ttLtJOtTBtT024r$   )F)FF)__doc__numpyr3   pandasr   statsmodels.tools.toolsr   resultsr   statsmodels.tsa.statespacer   r   numpy.testingr   r	   r#   r?   rH   rV   r   r   r   r   r$   r"   <module>r      sG      ) # 6 8%44BnG &(Rr:j44r$   