Ë
    ¢�DjÁa  ã                  óî   — d Z ddlmZ ddlmZ ddlmZ ddlZddl	m
Z
mZmZmZ ddlmc mZ ddlmZmZ ddlmZ d	„ Zd
„ Zd„ Z G d„ d«      Z G d„ de«      Z G d„ de«      Zd„ Zd„ Zdd„Zd„ Z dd„Z!y)zr
Base tools for handling various kinds of data structures, attaching metadata to
results, and doing data cleaning
é    )Úannotations)Úlmap)ÚreduceN)Ú	DataFrameÚSeriesÚisnullÚ
MultiIndex)Úcache_readonlyÚcache_writable)ÚMissingDataErrorc                ó¬   — t        j                  | «      j                  dkD  r2t        j                  | «      j                  «       j                  dk(  ry y y ©Né   )ÚnpÚasarrayÚndimÚsqueeze©Úxs    úYC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels/base/data.pyÚ_asarray_2dcolumnsr      sB   € Ü	‡z�z�!ƒ}×Ñ˜AÒ¤"§*¡*¨Q£-×"7Ñ"7Ó"9×">Ñ">À!Ò"CØð #DÐó    c                óª   — t        j                  | «      } | j                  dk(  r	| dd…df   } t        j                  t	        | «      d¬«      dd…df   S )zy
    Makes sure input is an array and is 2d. Makes sure output is 2d. True
    indicates a null in the rows of 2d x.
    r   N©Úaxis)r   r   r   Úanyr   r   s    r   Ú_asarray_2d_null_rowsr      sG   € ô 	�
‰
�1‹€AØ‡v�v�‚{ØŠa�ˆg‰JˆÜ�6‰6”&˜“) !Ô$¢Q¨ WÑ-Ð-r   c                 óh   — t        | «      dk(  r| dggfz  } d„ }t        || «      j                  «       S )z¸
    Returns a boolean array which is True where any of the rows in any
    of the _2d_ arrays in arrs are NaNs. Inputs can be any mixture of Series,
    DataFrames or array_like.
    r   Fc                ó¢   — t        | d«      xr | j                  t        k(  xr | }t        j                  t        | «      |t        |«      z  «      S )NÚdtype)Úhasattrr    Úboolr   Ú
logical_orr   )r   ÚyÚx_is_boolean_arrays      r   Ú_nan_row_maybe_two_inputsz,_nan_rows.<locals>._nan_row_maybe_two_inputs.   sJ   € ä$ Q¨Ó0ÒJ°Q·W±WÄ±_ÒJÈÐÜ�}‰}Ô2°1Ó5Ø0Ô3HÈÓ3KÑKóNð 	Nr   )Úlenr   r   )Úarrsr&   s     r   Ú	_nan_rowsr)   %   s>   € ô ˆ4ƒy�A‚~Ø�5�'��ÑˆòNô
 Ð+¨TÓ2×:Ñ:Ó<Ð<r   c                  óx  — e Zd ZdZdZdZd"d„Zd„ Zd„ Zd„ Z	e
d„ «       Ze
d„ «       Ze
d	„ «       Zd
„ Z e«       d„ «       Z e«       d#d„«       Zed„ «       Zej(                  d„ «       Zed„ «       Zej(                  d„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd$d„Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d „ Z&d!„ Z'y)%Ú	ModelDatazi
    Class responsible for handling input data and extracting metadata into the
    appropriate form
    Nc                ó  — t        j                  |«      st        j                  |«      rddlm} t	        |«      ‚d|v r|j                  d«      | _        d|v r|j                  d«      | _        |dk7  r� | j                  |||fi |¤Ž\  }}|| _	        | j                  j                  |«       | j                  | _        | j                  | _        | j!                  | j                  | j                  «      \  | _        | _        nH| j                  j                  |«       || _        || _        | j!                  ||«      \  | _        | _        d | _        d| _        | j'                  |«       | j)                  «        i | _        y )Nr   )Úrecarray_exceptionÚdesign_infoÚformulaÚnone)Ú	data_utilÚ_is_recarrayÚstatsmodels.tools.sm_exceptionsr-   ÚNotImplementedErrorÚpopr.   r/   Úhandle_missingÚmissing_row_idxÚ__dict__ÚupdateÚendogÚ
orig_endogÚexogÚ	orig_exogÚ_convert_endog_exogÚ	const_idxÚ
k_constantÚ_handle_constantÚ_check_integrityÚ_cache)	Úselfr:   r<   ÚmissingÚhasconstÚkwargsr-   ÚarraysÚnan_idxs	            r   Ú__init__zModelData.__init__>   sL  € ä×!Ñ! %Ô(¬I×,BÑ,BÀ4Ô,HÝJÜ%Ð&8Ó9Ð9Ø˜FÑ"Ø%Ÿz™z¨-Ó8ˆDÔØ˜ÑØ!Ÿ:™: iÓ0ˆDŒLØ�fÒØ1˜d×1Ñ1°%¸¸wñ <Ø4:ñ<‰OˆF�Gà#*ˆDÔ Ø�M‰M× Ñ  Ô(Ø"Ÿj™jˆDŒOØ!ŸY™YˆDŒNØ$(×$<Ñ$<¸T¿Z¹ZØ=A¿Y¹Yó%HÑ!ˆDŒJ˜�	ð �M‰M× Ñ  Ô(Ø#ˆDŒOØ!ˆDŒNØ$(×$<Ñ$<¸UÀDÓ$IÑ!ˆDŒJ˜œ	àˆŒØˆŒØ×Ñ˜hÔ'Ø×ÑÔØˆ�r   c                óN   — ddl m }  || j                  «      }d|v r|d= d|d<   |S )Nr   )Úcopyr.   TÚrestore_design_info)rL   r8   )rD   rL   Úds      r   Ú__getstate__zModelData.__getstate__\   s3   € ÝÙ�—‘ÓˆØ˜AÑØ�-Ð Ø'+ˆAÐ#Ñ$Øˆr   c                óh  — d|v rDddl m}m} g }	 |d   }dD ]  }	  ||d   ||d	¬
«      \  }} n |d   ‚|j                  | _        |d= | j                  j                  |«       y # t        $ r |d   j	                  |d   «      }Y Œrw xY w# t
        |f$ r}	|j                  |	«       Y d }	~	Œ•d }	~	ww xY w)NrM   r   )Ú	dmatricesÚ
PatsyErrorÚframer;   r=   )é   é   r   r   é   r/   Ú	dataframe)Úeval_envÚreturn_typeéÿÿÿÿ)
ÚpatsyrQ   rR   ÚKeyErrorÚjoinÚ	NameErrorÚappendr.   r8   r9   )
rD   rN   rQ   rR   ÚexcÚdataÚdepthÚ_ÚdesignÚes
             r   Ú__setstate__zModelData.__setstate__d   sÖ   € Ø  AÑ%ç3ØˆCð<Ø˜‘z�ð )ò 	�ðÙ )¨!¨I©,¸ÀuØ6Aô!C‘I�A�váð		ð ˜"‘g�à%×1Ñ1ˆDÔØÐ'Ð(Ø�‰×Ñ˜QÕøô! ò <Ø˜‘×+Ñ+¨A¨k©NÓ;’ð<ûô " :Ð.ò Ø—J‘J˜q”MÜûðús(   �A% ›BÁ% BÂBÂB1ÂB,Â,B1c                ó>  — |du s| j                   €d| _        d | _        y d}t        j                  | j                   d¬«      }t        j
                  |«      j                  «       st        d«      ‚t        j                  | j                   d¬«      }t        j                  ||k(  «      d   j                  «       }|j                  | _        | j                  dk(  r8| j                   d d …|f   j                  «       dk7  rt        |«      | _        nÒd}nÏ| j                  dkD  r­g }|D ]R  }| j                   d d …|f   j                  «       }|dk(  rd| _        t        |«      | _         nz|j                  |«       ŒT t        j                  |«      dk7  }	|	j!                  «       r)d| _        t        ||	j#                  «          «      | _        nd}n| j                  dk(  rd}n	 |r°|s®t        j$                  t        j&                  | j                   j(                  d   «      | j                   f«      }
t        j*                  j-                  |
«      }t        j*                  j-                  | j                   «      }t        ||k(  «      | _        d | _        y |rd| _        y y )NFr   r   zexog contains inf or nansr   T)r<   r@   r?   r   ÚmaxÚisfiniteÚallr   ÚminÚwherer   ÚsizeÚmeanÚintr_   Úarrayr   ÚargmaxÚcolumn_stackÚonesÚshapeÚlinalgÚmatrix_rank)rD   rF   Úcheck_implicitÚexog_maxÚexog_minr?   ÚvaluesÚidxÚvalueÚposÚaugmented_exogÚ	rank_augmÚ	rank_origs                r   rA   zModelData._handle_constant}   s$  € Ø�uÑ §	¡	Ð 1ØˆDŒOØ!ˆD�Nð #ˆNÜ—v‘v˜dŸi™i¨aÔ0ˆHÜ—;‘;˜xÓ(×,Ñ,Ô.Ü&Ð'BÓCÐCÜ—v‘v˜dŸi™i¨aÔ0ˆHÜŸ™ ¨XÑ!5Ó6°qÑ9×AÑAÓCˆIØ'Ÿn™nˆDŒOà�‰ !Ò#Ø—9‘9šQ 	˜\Ñ*×/Ñ/Ó1°QÒ6Ü%(¨£^�D•Nð &*‘NØ—‘ 1Ò$ð �Ø$ò .�CØ ŸI™I¢a¨ fÑ-×2Ñ2Ó4�EØ ’zØ*+˜œÜ),¨S«˜œÙØ—M‘M %Õ(ð.ô Ÿ8™8 FÓ+¨qÑ0�CØ—w‘w”yà*+˜œÜ),¨Y°s·z±z³|Ñ-DÓ)E˜�ð *.™Ø—‘ AÒ%Ø!%‘ð á¡hô "$§¡ÜŸW™W T§Y¡Y§_¡_°QÑ%7Ó8¸$¿)¹)ÐDó"F�äŸI™I×1Ñ1°.ÓA�	ÜŸI™I×1Ñ1°$·)±)Ó<�	Ü"% i°9Ñ&<Ó"=�”Ø!%�•Ùð #$�•ð r   c                ó   — ||   S ©N© ©Úclsr   Únan_masks      r   Ú
_drop_nanszModelData._drop_nansº   s   € à�‰{Ðr   c                ó   — ||   d d …|f   S r‚   rƒ   r„   s      r   Ú_drop_nans_2dzModelData._drop_nans_2d¾   s   € à�‰{š1˜h˜;Ñ'Ð'r   c                óŽ  ‡ ‡— g }|j                  dd«      }|�d}g }|€|dgz  }n|�	||f}ddg}n|f}dg}|dgz  }d}	g }
t        |«      rÞ|j                  «       D ]Ë  \  }}|�t        j                  |«      dk(  r||gz  }Œ'|j                  dk(  r |t        j
                  |«      fz  }||gz  }ŒV|j                  «       j                  dk(  r |t        j
                  |«      fz  }||gz  }Œ“|j                  dk(  r |	t        j
                  |«      fz  }	|
|gz  }
ŒÂt        d	«      ‚ |�’|Šd}|r=t        |Ž }|j                  d   ‰j                  d   k7  rt        d
«      ‚|‰    }‰|z  Š|	rjt        |	«      }|j                  d   ‰j                  d   k7  rt        d«      ‚|�
||‰    z  }n|‰    }‰|z  Šnt        |Ž Š|	rt        ‰dd…df   f|	z   Ž Št        j                  ‰«      s›t        t        ||«      «      }|	r$|j                  t        t        |
|	«      «      «       |r0|j                  |D �ci c]  }||j                  |d«      “Œ c}«       |�(|j                  d|i«       |�|j                  d|i«       |g fS |dk(  rt        d«      ‚|dk(  �r‰ Šˆ ˆfd„}ˆ ˆfd„}t        t        |t!        ||«      «      «      }|�S�)| }‰ j#                  ||«      }|�‰ j#                  ||«      }|j                  d|i«       |�|j                  d|i«       |	r.|j                  t        t        |
t!        ||	«      «      «      «       |r0|j                  |D �ci c]  }||j                  |d«      “Œ c}«       |t        j$                  ‰ «      d   j'                  «       fS t        d|z  «      ‚c c}w c c}w )zu
        This returns a dictionary with keys endog, exog and the keys of
        kwargs. It preserves Nones.
        Úmissing_idxNrƒ   r<   r:   r   r   rT   z6Arrays with more than 2 dimensions are not yet handledzBShape mismatch between endog/exog and extra arrays given to model.zEShape mismatch between endog/exog and extra 2d arrays given to model.Úraisez!NaNs were encountered in the dataÚdropc                ó(   •— ‰j                  | ‰«      S r‚   )r‡   ©r   r…   r†   s    €€r   ú<lambda>z*ModelData.handle_missing.<locals>.<lambda>"  s   ø€  #§.¡.°°HÓ"=€ r   c                ó(   •— ‰j                  | ‰«      S r‚   )r‰   r�   s    €€r   r�   z*ModelData.handle_missing.<locals>.<lambda>#  s   ø€  S×%6Ñ%6°q¸(Ó%C€ r   z missing option %s not understood)r5   r'   Úitemsr   r   r   r   Ú
ValueErrorr)   rt   r   ÚdictÚzipr9   Úgetr   r   r‡   rl   Útolist)r…   r:   r<   rE   rG   Únone_array_namesr‹   ÚcombinedÚcombined_namesÚcombined_2dÚcombined_2d_namesÚkeyÚvalue_arrayÚupdated_row_maskÚcombined_nansÚcombined_2d_nansÚkÚ	drop_nansÚdrop_nans_2dr†   s   `                  @r   r6   zModelData.handle_missingÂ   sn  ù€ ð Ðð —j‘j °Ó5ˆàÐ"àˆHØˆNØˆ|Ø  V HÑ,Ñ ØÐØ˜t�}ˆHØ% vÐ.‰Nà�xˆHØ%˜YˆNØ  Ñ(Ðð ˆØÐÜˆvŒ;Ø$*§L¡L£Nò <Ñ ��[ØÐ&¬"¯'©'°+Ó*>À!Ò*CØ$¨¨Ñ-Ð$Øà×#Ñ# qÒ(Ø¤§¡¨KÓ!8Ð :Ñ:�HØ" s eÑ+‘NØ ×(Ñ(Ó*×/Ñ/°1Ò4Ø¤§¡¨KÓ!8Ð :Ñ:�HØ" s eÑ+‘Nð !×%Ñ%¨Ò*Ø¤B§J¡J¨{Ó$;Ð#=Ñ=�KØ%¨#¨Ñ.Ñ%ä$ð &;ó <ð <ð#<ð( Ð"Ø"ˆHØ#ÐÙÜ )¨8Ð 4�Ø ×&Ñ& qÑ)¨X¯^©^¸AÑ->Ò>Ü$ð &Hó Ið Ið $1°(°Ñ#;Ð Ø˜MÑ)�ÙÜ#,¨[Ó#9Ð Ø#×)Ñ)¨!Ñ,°·±¸qÑ0AÒAÜ$ð &Kó Lð Là#Ð/Ø$Ð(8¸(¸Ñ(CÑCÑ$à'7¸¸	Ñ'BÐ$ØÐ,Ñ,‘ô ! (Ð+ˆHÙÜ$ x²°4°Ñ'8Ð&:¸[Ñ&HÐI�ä�v‰v�hÔÜœC °Ó9Ó:ˆHÙØ—‘¤¤SÐ):¸KÓ%HÓ IÔJÙØ—‘Ø*:ö!<Ø%&ð "# F§J¡J¨q°$Ó$7Ñ!7ò !<ô =ð Ð&Ø—‘ ¨%Ð 0Ô1ØÐ#Ø—O‘O V¨T NÔ3à˜R�<Ðà˜ÒÜ"Ð#FÓGÐGà˜ÓØ �yˆHÜ=ˆIÜCˆLÜœC ´°YÀÓ0IÓJÓKˆHàÐ&Ø#Ð/Ø(8Ð'8Ð$àŸN™N¨5Ð2BÓC�EØÐ'Ø"Ÿ~™~¨dÐ4DÓE˜à—‘ ¨%Ð 0Ô1ØÐ#Ø—O‘O V¨T NÔ3áØ—‘¤¤SÐ):Ü)-¨l¸KÓ)Hó&Jó !Kô LáØ—‘Ø*:ö!<Ø%&ð "# F§J¡J¨q°$Ó$7Ñ!7ò !<ô =ð œRŸX™X x iÓ0°Ñ3×:Ñ:Ó<Ð<Ð<äÐ?À'ÑIÓJÐJùòQ!<ùòF!<s   È<N=Í%Oc                óº   — | j                  |«      }d }|�C| j                  |«      }|j                  dk(  r	|d d …d f   }|j                  dk7  rt        d«      ‚||fS )Nr   rT   zexog is not 1d or 2d)Ú	_get_yarrÚ	_get_xarrr   r“   )rD   r:   r<   ÚyarrÚxarrs        r   r>   zModelData._convert_endog_exog=  sd   € ð �~‰~˜eÓ$ˆØˆØÐØ—>‘> $Ó'ˆDØ�y‰y˜AŠ~ØšA˜t˜G‘}�Ø�y‰y˜AŠ~Ü Ð!7Ó8Ð8à�TˆzÐr   c                ó¦   — | j                   }| j                  |«      }|st        | j                  «      }t	        |«      dk(  r|d   S t        |«      S )Nr   r   )r;   Ú
_get_namesÚ_make_endog_namesr:   r'   Úlist)rD   r:   Úynamess      r   r®   zModelData.ynamesK  sJ   € à—‘ˆØ—‘ Ó'ˆÙÜ& t§z¡zÓ2ˆFäˆv‹;˜!ÒØ˜!‘9Ðä˜“<Ðr   c                ó†   — | j                   }|�3| j                  |«      }|st        | j                  «      }t	        |«      S y r‚   )r=   r«   Ú_make_exog_namesr<   r­   )rD   r<   Úxnamess      r   r±   zModelData.xnamesW  s=   € à�~‰~ˆØÐØ—_‘_ TÓ*ˆFÙÜ)¨$¯)©)Ó4�Ü˜“<ÐØr   c                ó6   — | j                   xs | j                  S r‚   )Ú_param_namesr±   ©rD   s    r   Úparam_nameszModelData.param_namesa  s   € ð × Ñ Ò/ D§K¡KÐ/r   c                ó   — || _         y r‚   )r³   )rD   rz   s     r   rµ   zModelData.param_namesf  s
   € à"ˆÕr   c                óJ   — | j                   �| j                   S | j                  S )zÔ
        Labels for covariance matrices

        In multidimensional models, each dimension of a covariance matrix
        differs from the number of param_names.

        If not set, returns param_names
        )Ú
_cov_namesrµ   r´   s    r   Ú	cov_nameszModelData.cov_namesj  s$   € ð �?‰?Ð&Ø—?‘?Ð"Ø×ÑÐr   c                ó   — || _         y r‚   )r¸   )rD   r|   s     r   r¹   zModelData.cov_namesy  s   € ð  ˆ�r   c                ó‚   — | j                   }|�| j                  |«      }|S | j                  }| j                  |«      }|S r‚   )r=   Ú_get_row_labelsr;   )rD   r<   Ú
row_labelsr:   s       r   r½   zModelData.row_labels~  sJ   € à�~‰~ˆØÐØ×-Ñ-¨dÓ3ˆJð Ðð —O‘OˆEØ×-Ñ-¨eÓ4ˆJØÐr   c                 ó   — y r‚   rƒ   ©rD   Úarrs     r   r¼   zModelData._get_row_labelsˆ  s   € Ør   c                óŠ  — t        |t        «      r_t        |j                  t        «      r0|j                  D �cg c]  }dj	                  d„ |D «       «      ‘Œ c}S t        |j                  «      S t        |t        «      r|j                  r|j                  gS y 	 |j                  j                  S c c}w # t        $ r Y y w xY w)Nrc   c              3  ó&   K  — | ]	  }|sŒ|–— Œ y ­wr‚   rƒ   )Ú.0Úlevels     r   ú	<genexpr>z'ModelData._get_names.<locals>.<genexpr>�  s   è ø€ Ò ?¨5º¤Ñ ?ùs   ‚Š)Ú
isinstancer   Úcolumnsr	   r]   r­   r   Únamer    ÚnamesÚAttributeError)rD   rÀ   Úcs      r   r«   zModelData._get_names‹  sª   € Ü�cœ9Ô%Ü˜#Ÿ+™+¤zÔ2ð "%§¡ö.Øð Ÿ™Ñ ?°AÔ ?Õ?ò .ð .ô ˜CŸK™KÓ(Ð(Ü˜œVÔ$Ø�xŠxØŸ™�zÐ!àðØ—y‘y—‘Ð&ùò.øô "ò Øàðús   ¹B1ÂB6 Â6	CÃCc                óD  — t        j                  |«      rt        j                  |«      }t        j                  |«      }t        |«      dk(  rD|j                  dk(  r|S |j                  dkD  r$t        j                  |j                  «       g«      S |j                  «       S r   )r1   Ú_is_structured_ndarrayÚstruct_to_ndarrayr   r   r'   r   r   )rD   r:   s     r   r¦   zModelData._get_yarr   sx   € Ü×+Ñ+¨EÔ2Ü×/Ñ/°Ó6ˆEÜ—
‘
˜5Ó!ˆÜˆu‹:˜Š?Ø�z‰z˜QŠØ�Ø—‘˜a’Ü—z‘z 5§=¡=£?Ð"3Ó4Ð4à�}‰}‹Ðr   c                ó€   — t        j                  |«      rt        j                  |«      }t        j                  |«      S r‚   )r1   rÍ   rÎ   r   r   )rD   r<   s     r   r§   zModelData._get_xarr¬  s/   € Ü×+Ñ+¨DÔ1Ü×.Ñ.¨tÓ4ˆDÜ�z‰z˜$ÓÐr   c                óŠ   — | j                   �7t        | j                   «      t        | j                  «      k7  rt        d«      ‚y y )Nz+endog and exog matrices are different sizes)r<   r'   r:   r“   r´   s    r   rB   zModelData._check_integrity±  s:   € Ø�9‰9Ð Ü�4—9‘9‹~¤ T§Z¡Z£Ò0Ü Ð!NÓOÐOð 1ð !r   c                óÂ  — |dk(  r| j                  |«      S |dk(  r| j                  |«      S |dk(  r| j                  |«      S |dk(  r| j                  |«      S |dk(  r| j	                  |«      S |dk(  r| j                  |«      S |dk(  r| j                  ||«      S |dk(  r| j                  ||«      S |d	k(  r| j                  |«      S |d
k(  r| j                  |«      S |S )NrÇ   ÚrowsÚcovÚdatesÚ
columns_eqÚcov_eqÚgeneric_columnsÚgeneric_columns_2dr®   Úmultivariate_confint)
Úattach_columnsÚattach_rowsÚ
attach_covÚattach_datesÚattach_columns_eqÚattach_cov_eqÚattach_generic_columnsÚattach_generic_columns_2dÚattach_ynamesÚattach_mv_confint)rD   ÚobjÚhowrÉ   s       r   Úwrap_outputzModelData.wrap_output¶  s  € Ø�)ÒØ×&Ñ& sÓ+Ð+Ø�FŠ]Ø×#Ñ# CÓ(Ð(Ø�EŠ\Ø—?‘? 3Ó'Ð'Ø�GŠ^Ø×$Ñ$ SÓ)Ð)Ø�LÒ Ø×)Ñ)¨#Ó.Ð.Ø�HŠ_Ø×%Ñ% cÓ*Ð*ØÐ%Ò%Ø×.Ñ.¨s°EÓ:Ð:ØÐ(Ò(Ø×1Ñ1°#°uÓ=Ð=Ø�HŠ_Ø×%Ñ% cÓ*Ð*ØÐ*Ò*Ø×)Ñ)¨#Ó.Ð.àˆJr   c                ó   — |S r‚   rƒ   ©rD   Úresults     r   rÚ   zModelData.attach_columnsÎ  ó   € Øˆr   c                ó   — |S r‚   rƒ   rè   s     r   rÞ   zModelData.attach_columns_eqÑ  rê   r   c                ó   — |S r‚   rƒ   rè   s     r   rÜ   zModelData.attach_covÔ  rê   r   c                ó   — |S r‚   rƒ   rè   s     r   rß   zModelData.attach_cov_eq×  rê   r   c                ó   — |S r‚   rƒ   rè   s     r   rÛ   zModelData.attach_rowsÚ  rê   r   c                ó   — |S r‚   rƒ   rè   s     r   rÝ   zModelData.attach_datesÝ  rê   r   c                ó   — |S r‚   rƒ   rè   s     r   rã   zModelData.attach_mv_confintà  rê   r   c                ó   — |S r‚   rƒ   ©rD   ré   ÚargsrG   s       r   rà   z ModelData.attach_generic_columnsã  rê   r   c                ó   — |S r‚   rƒ   rò   s       r   rá   z#ModelData.attach_generic_columns_2dæ  rê   r   c                ó   — |S r‚   rƒ   rè   s     r   râ   zModelData.attach_ynamesé  rê   r   )Nr0   N)Úreturnzlist[str] | None)rÇ   N)(Ú__name__Ú
__module__Ú__qualname__Ú__doc__r³   r¸   rJ   rO   rf   rA   Úclassmethodr‡   r‰   r6   r>   r   r®   r±   Úpropertyrµ   Úsetterr¹   r
   r½   r¼   r«   r¦   r§   rB   ræ   rÚ   rÞ   rÜ   rß   rÛ   rÝ   rã   rà   rá   râ   rƒ   r   r   r+   r+   6   s]  „ ñð €LØ€Jóò<ò ò2;$ðz ñó ðð ñ(ó ð(ð ñxKó ðxKòtñ Óñ	 ó ð	 ñ Óòó ðð ñ0ó ð0ð ×Ññ#ó ð#ð ñ ó ð ð ×Ññ ó ð ð ñó ðòòò*
ò ò
Pó
ò0òòòòòòòòór   r+   c                  ó   — e Zd Zd„ Zy)Ú	PatsyDatac                ó.   — |j                   j                  S r‚   )r.   Úcolumn_namesr¿   s     r   r«   zPatsyData._get_namesî  s   € Ø�‰×+Ñ+Ð+r   N)r÷   rø   rù   r«   rƒ   r   r   rÿ   rÿ   í  s   „ ó,r   rÿ   c                  óš   ‡ — e Zd ZdZdˆ fd„	Zeˆ fd„«       Zeˆ fd„«       Zˆ fd„Zd„ Z	d„ Z
dd„Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )Ú
PandasDataz^
    Data handling class which knows how to reattach pandas metadata to model
    results
    c                óæ   •— t        j                  |«      }|€|nt        j                  |«      }|j                  t        k(  s|�|j                  t        k(  rt	        d«      ‚t
        ‰| �  ||«      S )NzRPandas data cast to numpy dtype of object. Check input data with np.asarray(data).)r   r   r    Úobjectr“   Úsuperr>   ©rD   r:   r<   Ú	__class__s      €r   r>   zPandasData._convert_endog_exogø  sh   ø€ ä—
‘
˜5Ó!ˆØ�|‰t¬¯©°DÓ)9ˆØ�;‰;œ&Ò  DÐ$4¸¿¹ÄvÒ9MÜð Gó Hð Hä‰wÑ*¨5°$Ó7Ð7r   c                ón   •— t        |t        t        f«      r|j                  |   S t        ‰| �  ||«      S r‚   )rÆ   r   r   Úlocr  r‡   ©r…   r   r†   r  s      €r   r‡   zPandasData._drop_nans  s2   ø€ ä�aœ&¤)Ð,Ô-Ø—5‘5˜‘?Ð"ä‘7Ñ% a¨Ó2Ð2r   c                ó�   •— t        |t        t        f«      r |j                  |   j                  d d …|f   S t        ‰| �  ||«      S r‚   )rÆ   r   r   r
  r  r‰   r  s      €r   r‰   zPandasData._drop_nans_2d  sA   ø€ ä�aœ&¤)Ð,Ô-Ø—5‘5˜‘?×&Ñ&¢q¨( {Ñ3Ð3ä‘7Ñ(¨¨HÓ5Ð5r   c                ó  •— | j                   | j                  }}|�\t        |d«      rPt        |d«      rD| j                   j                  j	                  | j                  j                  «      st        d«      ‚t        ‰| �  «        y )NÚindexz.The indices for endog and exog are not aligned)r;   r=   r!   r  Úequalsr“   r  rB   r  s      €r   rB   zPandasData._check_integrity  sf   ø€ Ø—o‘o t§~¡~ˆtˆàÐÜ˜ Ô(¬W°T¸7Ô-CØ—O‘O×)Ñ)×0Ñ0°·±×1EÑ1EÔFÜÐMÓNÐNÜ‰Ñ Õ"r   c                óf   — 	 |j                   S # t        $ r | j                  j                   cY S w xY wr‚   )r  rÊ   r;   r¿   s     r   r¼   zPandasData._get_row_labels  s2   € ð	)Ø—9‘9ÐøÜò 	)ð —?‘?×(Ñ(Ò(ð	)ús   ‚ Ž0¯0c                ó6   — t        | |d «      }t        ||¬«      S )N©r  )Úgetattrr   )rD   ré   rÉ   r  s       r   rà   z!PandasData.attach_generic_columns   s   € ä˜t U¨DÓ1ˆÜ�f LÔ1Ð1r   c                ó^   — |xs |}t        | |d «      }t        | |d «      }t        |||¬«      S ©N©r  rÇ   )r  r   )rD   ré   ÚrownamesÚcolnamess       r   rá   z$PandasData.attach_generic_columns_2d%  s7   € ØÒ'˜xˆÜ˜4 ¨4Ó0ˆÜ˜4 ¨4Ó0ˆÜ˜ x¸ÔBÐBr   c                ó|   — |j                   dk  rt        || j                  ¬«      S t        || j                  ¬«      S )Nr   r  )r   r   rµ   r   rè   s     r   rÚ   zPandasData.attach_columns+  s6   € ð �;‰;˜!ÒÜ˜&¨×(8Ñ(8Ô9Ð9ä˜V¨4×+;Ñ+;Ô<Ð<r   c                óF   — t        || j                  | j                  ¬«      S r  )r   r±   r®   rè   s     r   rÞ   zPandasData.attach_columns_eq4  ó   € Ü˜ t§{¡{¸D¿K¹KÔHÐHr   c                óF   — t        || j                  | j                  ¬«      S r  )r   r¹   rè   s     r   rÜ   zPandasData.attach_cov7  s   € Ü˜ t§~¡~¸t¿~¹~ÔNÐNr   c                óF   — t        || j                  | j                  ¬«      S r  )r   r®   rè   s     r   rß   zPandasData.attach_cov_eq:  r  r   c                óh  — |j                  «       }t        j                  | j                  d¬«      j                  d   }|dkD  r|j                  |fk(  r	|d d d …f   }|j
                  dk  rt        |«      }nt        |«      }| j                  |_        | j                  t        |«       d  |_        |S )Nr   ©Úndminr   rT   )r   r   rp   r®   rt   r   r   r   rÇ   r½   r'   r  )rD   ré   ÚsqueezedÚk_endogÚouts        r   rÛ   zPandasData.attach_rows=  s™   € ð —>‘>Ó#ˆÜ—(‘(˜4Ÿ;™;¨aÔ0×6Ñ6°qÑ9ˆØ�QŠ;˜8Ÿ>™>¨g¨ZÒ7Ø ¢a Ñ(ˆHà�=‰=˜1ÒÜ˜Ó"‰Cä˜FÓ#ˆCØŸ+™+ˆCŒKØ—O‘O¤S¨£[ L MÐ2ˆŒ	Øˆ
r   c                ó–  — |j                  «       }t        j                  | j                  d¬«      j                  d   }|dkD  r,|j                  |fk(  rt        j
                  |«      d d d …f   }|j                  dk  rt        || j                  ¬«      S t        t        j
                  |«      | j                  | j                  ¬«      S )Nr   r  r   rT   r  r  )
r   r   rp   r®   rt   r   r   r   Úpredict_datesr   )rD   ré   r!  r"  s       r   rÝ   zPandasData.attach_datesM  sŸ   € Ø—>‘>Ó#ˆÜ—(‘(˜4Ÿ;™;¨aÔ0×6Ñ6°qÑ9ˆØ�QŠ;˜8Ÿ>™>¨g¨ZÒ7Ü—z‘z (Ó+¨D²!¨GÑ4ˆHà�=‰=˜1ÒÜ˜(¨$×*<Ñ*<Ô=Ð=äœRŸZ™Z¨Ó/Ø#'×#5Ñ#5Ø%)§[¡[ô2ð 2r   c                óT   — t        |j                  d«      | j                  ddg¬«      S )N)rZ   rT   ÚlowerÚupperr  )r   Úreshaper¹   rè   s     r   rã   zPandasData.attach_mv_confintZ  s)   € Ü˜Ÿ™¨Ó0Ø#Ÿ~™~Ø")¨7Ð!3ô5ð 	5r   c                óœ   — |j                  «       }|j                  dk  rt        || j                  ¬«      S t	        || j                  ¬«      S )NrT   )rÈ   )rÇ   )r   r   r   r®   r   )rD   ré   r!  s      r   râ   zPandasData.attach_ynames_  s<   € Ø—>‘>Ó#ˆà�=‰=˜1ÒÜ˜(¨¯©Ô5Ð5ä˜V¨T¯[©[Ô9Ð9r   r‚   )r÷   rø   rù   rú   r>   rû   r‡   r‰   rB   r¼   rà   rá   rÚ   rÞ   rÜ   rß   rÛ   rÝ   rã   râ   Ú__classcell__)r  s   @r   r  r  ò  su   ø„ ñõ
8ð ó3ó ð3ð ó6ó ð6ô#ò)ò2ó
Cò=òIòOòIòò 2ò5ö
:r   r  c                ó²   — | j                   dk(  s| j                  d   dk(  rdg}|S t        | j                  d   «      D �cg c]
  }d|dz   z  ‘Œ }}|S c c}w )Nr   r$   zy%d)r   rt   Úrange)r:   r®   Úis      r   r¬   r¬   h  s_   € Ø‡z�z�Q‚˜%Ÿ+™+ a™.¨AÒ-Ø�ˆð €Mô */¨u¯{©{¸1©~Ó)>Ö? A�%˜1˜Q™3“-Ð?ˆÐ?à€Mùò @s   ÁAc                óT  — | j                  d«      }|dk(  j                  «       rM|j                  «       }t        d| j                  d   «      D �cg c]  }d|z  ‘Œ	 }}|j                  |d«       |S t        d| j                  d   dz   «      D �cg c]  }d|z  ‘Œ	 }}|S c c}w c c}w )Nr   r   zx%dÚconst)Úvarr   Úargminr-  rt   Úinsert)r<   Úexog_varr?   r.  Ú
exog_namess        r   r°   r°   q  s©   € Ø�x‰x˜‹{€HØ�A‰×ÑÔð —O‘OÓ%ˆ	Ü).¨q°$·*±*¸Q±-Ó)@ÖA A�e˜a“iÐAˆ
ÐAØ×Ñ˜) WÔ-ð Ðô */¨q°$·*±*¸Q±-À±/Ó)BÖC A�e˜a“iÐCˆ
ÐCàÐùò Bùò Ds   ÁB ÂB%c                ó”   — t        | |«      }|dk(  r"t        | |¬«      }|j                  |«       |d fS  |j                  | |fd|i|¤ŽS )Nr0   )r:   r<   rE   )Úhandle_data_class_factoryr”   r9   r6   )r:   r<   rE   rG   ÚklassÚret_dicts         r   r6   r6     sW   € Ü% e¨TÓ2€EØ�&ÒÜ˜e¨$Ô/ˆØ�‰˜ÔØ˜ˆ~ÐØˆ5×Ñ  tÑG°WÐGÀÑGÐGr   c                ó8  — t        j                  | |«      rt        }|S t        j                  | |«      rt        }|S t        j
                  | |«      rt        }|S t        j                  | |«      rt        }|S t        dt        | «      ›dt        |«      ›�«      ‚)z
    Given inputs
    zunrecognized data structures: z / )
r1   Ú_is_using_ndarray_typer+   Ú_is_using_pandasr  Ú_is_using_patsyrÿ   Ú_is_using_ndarrayr“   Útype)r:   r<   r8  s      r   r7  r7  ˆ  s›   € ô ×'Ñ'¨¨tÔ4Üˆð €Lô 
×	#Ñ	# E¨4Ô	0Üˆð €Lô 
×	"Ñ	" 5¨$Ô	/Üˆð €Lô 
×	$Ñ	$ U¨DÔ	1Üˆð €Lõ Ü˜u�+¤t¨D¤zð3ó 4ð 	4r   c                óà   — t        | t        t        f«      rt        j                  | «      } t        |t        t        f«      rt        j                  |«      }t        | |«      } || f|||dœ|¤ŽS )N)r<   rE   rF   )rÆ   r­   Útupler   r   r7  )r:   r<   rE   rF   rG   r8  s         r   Úhandle_datarB  ›  sh   € ä�%œ$¤˜Ô'Ü—
‘
˜5Ó!ˆÜ�$œœu˜Ô&Ü�z‰z˜$Óˆä% e¨TÓ2€EÙ�ð ˜T¨7¸Xñ Øñð r   )Nr0   )r0   N)"rú   Ú
__future__r   Ústatsmodels.compat.pythonr   Ú	functoolsr   Únumpyr   Úpandasr   r   r   r	   Ústatsmodels.tools.dataÚtoolsra   r1   Ústatsmodels.tools.decoratorsr
   r   r3   r   r   r   r)   r+   rÿ   r  r¬   r°   r6   r7  rB  rƒ   r   r   ú<module>rK     s{   ðñõ #å *å ã ß 8Ó 8ç *Ð *ß GÝ <òò

.ò=÷"tñ tôn,�	ô ,ô
s:�ô s:òlòóHòô&	r   