
    M/Ph+                     R    d Z ddlZdZdZdZdZeez  ez  ez  Z G d d          ZdS )	z>
Kalman Smoother

Author: Chad Fulton
License: Simplified-BSD
    N            c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )_KalmanSmootherc                    || _         || _        |j        | _        || _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        t          j        |j        |j        |j        f|j                  | _        |t(          t*          z  z  r[t          j        |j        |j        dz   f|j                  | _        t          j        |j        |j        f|j                  | _        |t.          t0          z  z  r5t          j        |j        |j        |j        dz   f|j                  | _        |t(          z  r,t          j        |j        |j        f|j                  | _        |t.          z  r2t          j        |j        |j        |j        f|j                  | _	        |t*          z  rXt          j        |j        |j        f|j                  | _
        t          j        |j        |j        f|j                  | _        |t0          z  rft          j        |j        |j        |j        f|j                  | _        t          j        |j        |j        |j        f|j                  | _        d S d S )N)dtyper   )modelkfilter_kalman_filter_kfiltersmoother_outputscaled_smoothed_estimatorscaled_smoothed_estimator_covsmoothing_errorsmoothed_statesmoothed_state_covsmoothed_state_disturbancesmoothed_state_disturbance_cov smoothed_measurement_disturbance$smoothed_measurement_disturbance_covnpzerosk_statesnobsr
   tmp_LSMOOTHER_STATESMOOTHER_DISTURBANCEk_endogSMOOTHER_STATE_COVSMOOTHER_DISTURBANCE_COVk_posdef)selfr   r   r   s       m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/statespace/_pykalman_smoother.py__init__z_KalmanSmoother.__init__   s   
,. *.&-1*#""&*.'.2+04-481 Xu~u~uzJ$+M3 3 3
 n/CCD 	L%.%*Q,7w}MMM * %-4GMJJJ  03KKL 	/%.%.%*q.I&}. . . .
 ^+ 	@"$(ENEJ+G18#@ #@ #@D// 	/%.%.%*E&}. . . #
 11 	L%.%*5W]KKK + %-4GMJJJ 155 	/%.%.%*E&}. . . / %-
C&}. . . 555		/ 	/    c                 R    || j         j        k    rt          d          || _        d S )NzObservation index out of range)r   r   
IndexErrort)r$   r*   s     r%   seekz_KalmanSmoother.seekM   s+    
=>>>r'   c                     | S N r$   s    r%   __iter__z_KalmanSmoother.__iter__R   s    r'   c                     |                      | j        j        dz
             t          | j        j        dz
  dd          D ]}t	          |            d S )Nr   )r+   r   r   rangenext)r$   is     r%   __call__z_KalmanSmoother.__call__U   sX    		$*/!#$$$tzq("b11 	 	AJJJJ	 	r'   c                 *    |                                  S r-   )__next__r/   s    r%   r4   z_KalmanSmoother.next[   s    }}r'   c           
         | j         dk    st          | j         }| j        }| j        }| j        }| j        }| j        }| j        }| j        }| j	        }	| j
        }
| j        }| j        }| j        }| j        }| j        }|                    |d           |                                 |                                 |                                 |j        j        |         |j        j        k    }| o|j        j        |         dk    }|j        j        d         dk    rdn|}|j        j        d         dk    rdn|}|j        j        d         dk    rdn|}|j        j        d         dk    rdn|}|j        j        d         dk    rdn|}|j        }|j        d d d d |f         }|j        d d d d |f         }|j        d d d d |f         }|j        d d |f         }|j        d d d d |f         }|j        d d |f                             t@                     }|r2tC          j"        |j#        d ||j$        z           d          %                    ||j$        d          }tC          j"        |j&        d |dz           d          %                    ||          }|j'        d d ||f         } tC          j"        |j(        d d d d |f         d          )                    d          d |dz           %                    ||          }!tC          j"        |j*        d ||f         d          }"tB          j+        ,                    |!          }#n|r'tC          j-        |j        j        d d	                   }n|j        d d d d |f         }|j        d d d d |f         }|j'        d d d d |f         } |j.        d d d d |f         }!|j/        d d |f         }"tB          j+        ,                    |!          }#|| 0                    |          z
  |d d d d |f<   |d d d d |f         }$|tb          td          z  z  r|r<|3                                0                    |d d |f                   |d d |dz
  f<   n|#0                    |"          | 3                                0                    |d d |f                   z
  |d ||f<   |3                                0                    |d ||f                   |3                                0                    |d d |f                   z   |d d |dz
  f<   |th          tj          z  z  r|rU|$3                                0                    |d d d d |f                   0                    |$          |d d d d |dz
  f<   n|3                                0                    |#          0                    |          |$3                                0                    |d d d d |f                   0                    |$          z   |d d d d |dz
  f<   |tb          z  r,||0                    |d d |dz
  f                   z   |	d d |f<   |th          z  rE||0                    |d d d d |dz
  f                   0                    |          z
  |
d d d d |f<   |td          tj          z  z  r'|0                    |3                                          }%|td          z  rL|%0                    |d d |f                   |d d |f<   |s$|0                    |d ||f                   |||f<   |tj          z  rn||%0                    |d d d d |f                   0                    |%3                                          z
  |d d d d |f<   |r||d d d d |f<   n
tC          j6        |||g          }&||0                    |#| 3                                0                    |d d d d |f                   0                    |           z             0                    |          z
  d d d d tB          j7        f         ||&<   tC          j6        | | |g          }&tC          j6        | | dg          }'tC          j8        |j        d d d d ||dz   f                   |'         ||&<   | xj         dz  c_         d S )
Nr   Fr   r   T)copyF)orderr2   )9r*   StopIterationr   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   %initialize_statespace_object_pointers!initialize_filter_object_pointersselect_missingnmissingr    designshapeobs_cov
transition	selection	state_covpredicted_statepredicted_state_covmissingastypeboolr   arrayselected_designr   reshapeselected_obs_covkalman_gainforecast_error_covravelforecast_errorlinalginvr   forecasts_error_covforecasts_errordotr   r   	transposer!   r"   ix_newaxisr:   )(r$   r*   r   r   r   r   r   r   r   r   r   r   r   r   r   r   missing_entire_obsmissing_partial_obsdesign_t	obs_cov_ttransition_tselection_tstate_cov_tr    rE   rF   rG   rH   rI   maskrB   rD   rQ   rW   rX   F_invLQRixmod_ixs(                                           r%   r8   z_KalmanSmoother.__next___   s

   v{{ F,=
.$($B!(,(J%.,!4%)%D")-)L&1 	) 5 	-
 	a6688822444!!! N#A&(.*@@ 	 #"Ex~'>q'AA'E 	  ,Q/14411! .q1Q66AAA	#.4Q71<<qq!",215::aa",215::aa " %aaaL&89
OAAAqqq+$56	OAAAqqq+$56	!1!!!Q$7%9!!!QQQ'B1%,,T222 	7X()@'%.*@)@A  ggu~Sg99  h)+7A:+6T  ggw''  "-aaaqj9K"$(+AAAqqq!G44# # #%c%"";GQJ;#0070I0I   !h'!44A A AOIMM"566EE! 6%,"4SbS"9::aaaHn5mAAAqqq)O4G!-aaaAg6K")"=aaaAg"F%5aaad;OIMM"566E $koof&=&==aaaAg!!!QQQ'N
 n/CCD 	!  ((**../HA/NOO *!!!QU(33
 IIo..))++//1!!!Q$79 99  !, $$&&**?8G8Q;+GHH((**../HA/NOOP *!!!QU(3 03KKL 	! KKMM%%5aaaAg> c!ff .aaaAEk:: $$&&**51155f==KKMM%%5aaaAg> c!ff .aaaAEk: ^+ 	#''(A!!!QU((KLLM 111a4  // 	##''1!!!QQQA+> #)**+ qqq!!!Qw' 25MMN 	6y224455B11 		0A677 'qqq!t,
 & KK! <== 1q9 55 	H1!!!QQQ': #bllnn%%& +111aaa73 " H@G4QQQ1W== VD$,,gkk 5 5 7 7 ; ;9!!!QQQ'B! !#k**+  c'll	#
 !!QQQ
"<$4R8 VTED51#..uqc22;=7M!!!QQQ	)A+(="=><@ <@@F<H4R8 	!r'   N)	__name__
__module____qualname__r&   r+   r0   r6   r4   r8   r.   r'   r%   r   r      st        5/ 5/ 5/n  
      p p p p pr'   r   )	__doc__numpyr   r   r!   r   r"   SMOOTHER_ALLr   r.   r'   r%   <module>rp      s           ''*>> { { { { { { { { { {r'   