
    !g+                     J    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y)	z>
Kalman Smoother

Author: Chad Fulton
License: Simplified-BSD
    N            c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)_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  rJt        j                  |j                   |j                   |j"                  dz   f|j$                        | _        |t(        z  r<t        j                  |j                   |j"                  f|j$                        | _        |t.        z  rGt        j                  |j                   |j                   |j"                  f|j$                        | _	        |t*        z  rxt        j                  |j2                  |j"                  f|j$                        | _
        t        j                  |j,                  |j"                  f|j$                        | _        |t0        z  rt        j                  |j2                  |j2                  |j"                  f|j$                        | _        t        j                  |j,                  |j,                  |j"                  f|j$                        | _        y y )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       j/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/_pykalman_smoother.py__init__z_KalmanSmoother.__init__   sz   
,,. *.&-1*#""&*.'.2+04-481 XXu~~u~~uzzJ$+MM3
 n/CCD%..%**Q,7w}}M * %--4GMMJ  03KKL%..%..%**q.I&}}. .
 ^+"$((ENNEJJ+G18#@D//%..%..%**E&}}. #
 11%..%**5W]]K + %--4GMMJ 155%..%..%**E&}}. / %--

C&}}. 5	 6    c                 Z    || j                   j                  k\  rt        d      || _        y )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                  j                  dz
         t        | j                  j                  dz
  dd      D ]  }t	        |         y )Nr   )r+   r   r   rangenext)r$   is     r%   __call__z_KalmanSmoother.__call__U   sG    		$**//!#$tzzq("b1 	AJ	r'   c                 "    | j                         S r-   )__next__r/   s    r%   r4   z_KalmanSmoother.next[   s    }}r'   c           
      R   | j                   dk\  st        | j                   }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }| j                  }	| j                  }
| j                  }| j                  }| j                  }| j                  }| j                  }|j!                  |d       |j#                          |j%                          |j'                          |j                  j(                  |   |j                  j*                  k(  }| xr |j                  j(                  |   dkD  }|j,                  j.                  d   dk(  rdn|}|j0                  j.                  d   dk(  rdn|}|j2                  j.                  d   dk(  rdn|}|j4                  j.                  d   dk(  rdn|}|j6                  j.                  d   dk(  rdn|}|j*                  }|j2                  d d d d |f   }|j4                  d d d d |f   }|j6                  d d d d |f   }|j8                  d d |f   }|j:                  d d d d |f   }|j<                  d d |f   j?                  t@               }|r1tC        jD                  |jF                  d ||jH                  z   d      jK                  ||jH                  d      }tC        jD                  |jL                  d |dz   d      jK                  ||      }|jN                  d d ||f   } tC        jD                  |jP                  d d d d |f   d      jS                  d      d |dz   jK                  ||      }!tC        jD                  |jT                  d ||f   d      }"tB        jV                  jY                  |!      }#n|r-tC        jZ                  |j,                  j.                  d d	       }n|j,                  d d d d |f   }|j0                  d d d d |f   }|jN                  d d d d |f   } |j\                  d d d d |f   }!|j^                  d d |f   }"tB        jV                  jY                  |!      }#|| ja                  |      z
  |d d d d |f<   |d d d d |f   }$|tb        td        z  z  r|r1|jg                         ja                  |d d |f         |d d |dz
  f<   n|#ja                  |"      | jg                         ja                  |d d |f         z
  |d ||f<   |jg                         ja                  |d ||f         |jg                         ja                  |d d |f         z   |d d |dz
  f<   |th        tj        z  z  r|rF|$jg                         ja                  |d d d d |f         ja                  |$      |d d d d |dz
  f<   nt|jg                         ja                  |#      ja                  |      |$jg                         ja                  |d d d d |f         ja                  |$      z   |d d d d |dz
  f<   |tb        z  r%||ja                  |d d |dz
  f         z   |	d d |f<   |th        z  r:||ja                  |d d d d |dz
  f         ja                  |      z
  |
d d d d |f<   |td        tj        z  z  r|ja                  |jg                               }%|td        z  r>%ja                  |d d |f         |d d |f<   |s|ja                  |d ||f         |||f<   |tj        z  rK|%ja                  |d d d d |f         ja                  |%jg                               z
  |d d d d |f<   |r||d d d d |f<   ntC        jl                  |||g      }&||ja                  |#| jg                         ja                  |d d d d |f         ja                  |       z         ja                  |      z
  d d d d tB        jn                  f   ||&<   tC        jl                  | | |g      }&tC        jl                  | | dg      }'tC        jp                  |j0                  d d d d ||dz   f         |'   ||&<   | xj                   dz  c_         y )
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___   ss   vv{ FF,,==

..$($B$B!(,(J(J%..,,!44%)%D%D")-)L)L&11 	) 55 	-

 	a668224! NN##A&(..*@*@@ 	 #"Ex~~'>'>q'AA'E 	  ,,Q/141! ..q1Q6AA	#..44Q71<q!",,2215:a",,2215:a "" %%aL&89
OOAq+$56	OOAq+$56	!11!Q$7%99!Q'B1%,,T22XX(()@'%..*@Aggu~~Sg9  hh))+7A:6Tggw'  "--aqj9K"$((++Aq!G44#%c%";GQJ#0070I   !hh''!44AOIIMM"56E!%,,"4"4Sb"9:aHn5mmAq)O4G!--aAg6K")"="=aAg"F%55ad;OIIMM"56E $koof&==aAg!Q'N
 n/CCD! ((*../HA/NO *!QU(3
 IIo.))+//1!Q$799  !, $$&**?8G8Q;+GH((*../HA/NOP *!QU(3 03KKL!KKM%%5aAg>c!f .aAEk: $$&**5155f=KKM%%5aAg>c!f .aAEk: ^+#''(A!QU((KLM 1a4  //##''1!QA+>#)*+ q!Qw' 25MMNy2245B110A67 'q!t,
 &KK! <= 1q9 551!Q':#blln%& +1a73 "@G4Q1W= VVD$,gkk 5 5 7 ; ;9!Q'B!#k*+ c'l	#
 Q

"<$4R8 VVTED51#.uqc2;=77MM!Q	)A+(="=><@@F<H4R8 	!r'   N)	__name__
__module____qualname__r&   r+   r0   r6   r4   r8   r.   r'   r%   r   r      s"    5/n
pr'   r   )	__doc__numpyr   r   r!   r   r"   SMOOTHER_ALLr   r.   r'   r%   <module>rp      sN       ''*>> { {r'   