Ë
    £�DjÊ  ã                   ól  — d Z ddlZddlmZ dd„Zdd„Zedk(  �ršdZdZ	d	Z
 ej                   ej                  e«      ge	z  «      Z ej                  e
e	e	f«      Zddgddgdd
ggedd…dd…d
f<    eee«      Z e ej$                  ee
d…df    ej&                  edd…df    ej                  e
«      «      dz  k(  «      «       dZdZ	dZd	Z
d
Z ej                   ej                  e«      ge	z  «      Z ej                  e
e	e	f«      Zddgddgdd
ggedd…dd…d
f<    ej,                  ee	e	f«      Z eeee¬«      Z eeeee¬«      \  ZZ e ej$                  eek(  «      «        e ej$                  ee
d…df    ej&                  edd…df    ej                  e
«      «      dz  ez   k(  «      «       ded<    eeee«      \  ZZej:                   ej,                  e
e	f«      ef   Z eeee«      \  ZZd
ed<   ddgddgdd
ggedd…dd…d
f<    eeee«      \  Z Z! ej                   ej                  e«      d ej                  e«      z  g«      Z" ej                  e
e	f«      edd…dd…df<    ej                  e
e	f«      edd…dd…d
f<   ded<    ee"e«      Z# ej&                  e"edd…dd…df   «      Z$ ej&                  e"edd…dd…d
f   «      Z% e ej$                   ej&                  e"edd…dd…df   d«      dd…df   e#e
d…df   k(  «      «        e ej$                   ej&                  e"edd…dd…d
f   d«      dd…df   e#e
d…d
f   k(  «      «       ddl&m'Z'm(Z(  e'edd…df   «      Z) ee)d    ejT                  edd…df   «      k(  «        e(edd…df   «      Z+yy)aJ  VAR and VARMA process

this does not actually do much, trying out a version for a time loop

alternative representation:
* textbook, different blocks in matrices
* Kalman filter
* VAR, VARX and ARX could be calculated with signal.lfilter
  only tried some examples, not implemented

TODO: try minimizing sum of squares of (Y-Yhat)

Note: filter has smallest lag at end of array and largest lag at beginning,
    be careful for asymmetric lags coefficients
    check this again if it is consistently used


changes
2009-09-08 : separated from movstat.py

Author : josefpkt
License : BSD
é    N)Úsignalc                 ó6  — |j                   d   }| j                   d   }t        j                  | j                   «      }t        ||«      D ]L  }|| ||z
  |…dd…t        j                  f   |z  j                  d¬«      j                  d¬«      z   ||dd…f<   ŒN |S )aì   multivariate linear filter

    Parameters
    ----------
    x: (TxK) array
        columns are variables, rows are observations for time period
    B: (PxKxK) array
        b_t-1 is bottom "row", b_t-P is top "row" when printing
        B(:,:,0) is lag polynomial matrix for variable 1
        B(:,:,k) is lag polynomial matrix for variable k
        B(p,:,k) is pth lag for variable k
        B[p,:,:].T corresponds to A_p in Wikipedia
    const : float or array (not tested)
        constant added to autoregression

    Returns
    -------
    xhat: (TxK) array
        filtered, predicted values of x array

    Notes
    -----
    xhat(t,i) = sum{_p}sum{_k} { x(t-P:t,:) .* B(:,:,i) }  for all i = 0,K-1, for all t=p..T

    xhat does not include the forecasting observation, xhat(T+1),
    xhat is 1 row shorter than signal.correlate

    References
    ----------
    https://en.wikipedia.org/wiki/Vector_Autoregression
    https://en.wikipedia.org/wiki/General_matrix_notation_of_a_VAR(p)
    r   Né   ©Úaxis)ÚshapeÚnpÚzerosÚrangeÚnewaxisÚsum)ÚxÚBÚconstÚpÚTÚxhatÚts          úaC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels/sandbox/tsa/varma.pyÚVARr       sœ   € ðB 	
�‰�‰
€AØ	�‰�‰
€AÜ�8‰8�A—G‘GÓ€DÜ�1�Q‹Zò Nˆð
 ˜Q˜q ™s 1˜u¢Q¤r§z¡zÐ1Ñ2°1Ñ4×9Ñ9¸qÐ9ÓA×EÑEÈ1ÐEÓMÑMˆˆQŠqˆSŠ	ðNð €Kó    c                 ód  — |j                   d   }|j                   d   }| j                   d   }t        j                  | j                   «      }t        j                  | j                   «      }t        ||«      }	t	        |	|«      D ]§  }
|| |
|z
  |
…dd…t        j
                  f   |z  j                  d¬«      j                  d¬«      z   ||
|z
  |
…dd…t        j
                  f   |z  j                  d¬«      j                  d¬«      z   ||
dd…f<   | |
dd…f   ||
dd…f   z
  ||
dd…f<   Œ© ||fS )zÄ multivariate linear filter

    x (TxK)
    B (PxKxK)

    xhat(t,i) = sum{_p}sum{_k} { x(t-P:t,:) .* B(:,:,i) } +
                sum{_q}sum{_k} { e(t-Q:t,:) .* C(:,:,i) }for all i = 0,K-1

    r   Nr   r   )r   r	   r
   Úmaxr   r   r   )r   r   ÚCr   ÚPÚQr   r   ÚeÚstartr   s              r   ÚVARMAr   M   s+  € ð 	
�‰�‰
€AØ	�‰�‰
€AØ	�‰�‰
€AÜ�8‰8�A—G‘GÓ€DÜ
�‰�—‘Ó€AÜ��!‹H€EÜ�5˜‹^ò $ˆð
 ˜a  !¡ A ¢a¬¯
©
Ð 2Ñ3°AÑ5×:Ñ:ÀÐ:ÓB×FÑFÈAÐFÓNÑNØ˜˜!™˜A˜ša¤§
¡
Ð*Ñ+¨AÑ-×2Ñ2¸Ð2Ó:×>Ñ>ÀAÐ>ÓFñGˆˆQŠqˆS‰	à�1’Q�3‘˜$˜q¢˜s™)Ñ#ˆˆ!ŠAˆ#Šð$ð �ˆ7€Nr   Ú__main__é   é   é   r   éÿÿÿÿ)r   g      à?)r   r   r   Úvalid)ÚacovfÚacf)r   ),Ú__doc__Únumpyr	   Úscipyr   r   r   Ú__name__r   ÚKr   Úcolumn_stackÚaranger   Úonesr   r   ÚprintÚallÚ	correlater   r   r
   r   Úxhat1Úxhat2Úerr2Úxhat3Úerr3Úr_Úxhat4Úerr4Úxhat5Úerr5Úx0Úxhat0Úxcorr00Úxcorr01Ústatsmodels.tsa.stattoolsr&   r'   ÚaavÚvarÚaac© r   r   ú<module>rF      s  ðñó0 Ý ó*óZð6 ˆzÓð 	€AØ	€AØ	€Aàˆ�‰˜˜Ÿ™ 1›˜ qÑ(Ó)€AØˆ�‰��1�Q�Ó€Aà�1��q˜�e˜Q˜q˜EÐ"€A‚aŠˆ!€e�HÙˆq�‹8€DÙ	ˆ&ˆ"�&‰&��a‘b˜�d‘˜\˜RŸ\™\¨!¨C¨R¨C°¨E©(°7°2·7±7¸1³:Ó>¸qÑ@Ñ@Ó
AÔBð 	€AØ	€AØ	€AØ	€AØ€Eàˆ�‰˜˜Ÿ™ 1›˜ qÑ(Ó)€AØˆ�‰��1�Q�Ó€Aà�1��q˜�e˜Q˜q˜EÐ"€A‚aŠˆ!€e�HØˆ�‰�!�A�a�Ó€AÙ��!˜5Ô!€EÙ˜˜!˜A UÔ+�K€Eˆ4Ù	ˆ&ˆ"�&‰&�˜%‘Ó
 Ô!Ù	ˆ&ˆ"�&‰&��q‘r˜!�t‘  §¡¨Q¨s°¨s°1¨u©X°g°b·g±g¸a³jÓ AÀ!Ñ CÀEÑ IÑIÓ
JÔKà€A€e�HÙ˜˜!˜A“,�K€Eˆ4à
�‰ˆhˆb�h‰h˜˜!�u‹o˜aÐÑ €AÙ˜˜!˜A“,�K€Eˆ4à€A€e�HØ�1��q˜�e˜Q˜q˜EÐ"€A‚aŠˆ!€e�HÙ˜˜!˜A“,�K€Eˆ4ð 
ˆ�‰˜)˜"Ÿ)™) A›,¨¨)¨"¯)©)°A«,©Ð7Ó	8€BØˆr�w‰w˜˜!�u‹~€A‚aŠˆ!€e�HØˆr�w‰w˜˜!�u‹~€A‚aŠˆ!€e�HØ€A€e�HÙ��1‹I€EØˆf×Ñ˜r !¢A¢a¨ E¡(Ó+€GØˆf×Ñ˜r !¢A¢a¨ E¡(Ó+€GÙ	ˆ&ˆ"�&‰&Ð!�×!Ñ! " Q¢qª¨1 u¡X¨gÓ6°s¸°s¸1°uÑ=¸uÀQÁRÈÀT¹{ÑJÓ
KÔLÙ	ˆ&ˆ"�&‰&Ð!�×!Ñ! " Q¢qª¨1 u¡X¨gÓ6°s¸°s¸1°uÑ=¸uÀQÁRÈÀT¹{ÑJÓ
KÔL÷ 5Ù
�’!�A�#‘‹-€CÙ	ˆ#ˆa‰&�F�B—F‘F˜1šQ˜q˜S™6“NÑ
"Ô#Ù
ˆa’�!�‰f‹+�CðI r   