Ë
    ¢�Dj–K  ã                   óT  — d Z ddlZddlmc mZ ddlmc mZ	 ddl
mc mZ ddlmZmZ ddlZddlZddlZ G d„ dej&                  «      Z G d„ de«      Z G d„ d	e«      Z G d
„ dej.                  «      Z G d„ de«      Z G d„ de	j4                  «      Z ej8                  ee«       y)zA
Conditional logistic, Poisson, and multinomial logit regression
é    N)ÚMultinomialResultsÚMultinomialResultsWrapperc                   ón   ‡ — e Zd Zdˆ fd„	Zd„ Z	 	 	 	 	 	 	 	 	 dˆ fd„	Z	 	 	 	 dd„Ze	 	 d	ˆ fd„	«       Zˆ xZ	S )
Ú_ConditionalModelc                 óô  •— d|vrt        d«      ‚|d   }|j                  |j                  k7  rd}t        |«      ‚|j                  d   |j                  k7  rd}t        |«      ‚t        ‰| �  ||fd|i|¤Ž | j
                  j                  �d}t        |«      ‚| j                  }|j                  d   | _        i }t        |«      D ]"  \  }}	|	|vrg ||	<   ||	   j                  |«       Œ$ t        j                  |«      t        j                  |«      }}|j                  d	«      }
g | _        g | _        g | _        |
�t        j                  |
«      }
g | _        g | _        g | _        d| _        ddg}|j+                  «       D �]  \  }	}||   j,                  }t        j.                  |«      dk(  r$|dxx   dz  cc<   |dxx   t1        |«      z  cc<   ŒR| xj(                  t1        |«      z  c_        | j                  j                  |«       |
�| j"                  j                  |
|   «       | j                   j                  t1        |«      «       | j                  j                  ||d d …f   «       | j&                  j                  t        j2                  |«      «       �Œ! |d   dkD  r#d
t5        |«      z  }t7        j8                  |«       |
�`g | _        t        | j"                  «      D ]A  \  }}| j:                  j                  t        j<                  | j                  |   |«      «       ŒC t1        | j                  «      | _        g | _         g | _!        tE        | j>                  «      D ]†  }	| j@                  j                  t        j<                  | j                  |	   | j                  |	   «      «       | jB                  j                  t        j2                  | j                  |	   «      «       Œˆ y )NÚgroupsú'groups' is a required argumentz4'endog' and 'groups' should have the same dimensionsr   zBThe leading dimension of 'exog' should equal the length of 'endog'ÚmissingzDConditional models should not have an intercept in the design matrixé   ÚoffsetzIDropped %d groups and %d observations for having no within-group variance)#Ú
ValueErrorÚsizeÚshapeÚsuperÚ__init__ÚdataÚ	const_idxÚexogÚk_paramsÚ	enumerateÚappendÚnpÚasarrayÚgetÚ
_endog_grpÚ	_exog_grpÚ
_groupsizeÚ_offset_grpÚ_offsetÚ_sumyÚnobsÚitemsÚflatÚstdÚlenÚsumÚtupleÚwarningsÚwarnÚ_endofsÚdotÚ	_n_groupsÚ_xyÚ_n1Úrange)ÚselfÚendogr   r
   Úkwargsr   ÚmsgÚrow_ixÚiÚgr   ÚdropsÚixÚyÚkÚofsÚ	__class__s                   €úkC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels/discrete/conditional_models.pyr   z_ConditionalModel.__init__   sh  ø€ à˜6Ñ!ÜÐ>Ó?Ð?Ø˜Ñ!ˆà�;‰;˜%Ÿ*™*Ò$ØHˆCÜ˜S“/Ð!à�:‰:�a‰=˜EŸJ™JÒ&ØVˆCÜ˜S“/Ð!ä‰ÑØ�4ñ	4Ø!(ð	4Ø,2ò	4ð �9‰9×ÑÐ*ð"ˆCä˜S“/Ð!à�y‰yˆØŸ
™
 1™ˆŒð ˆÜ˜fÓ%ò 	 ‰DˆAˆqØ˜‰Ø��q‘	Ø�1‰I×Ñ˜QÕð	 ô —j‘j Ó'¬¯©°DÓ)9ˆtˆØ—‘˜HÓ%ˆØˆŒØˆŒØˆŒØÐÜ—Z‘Z Ó'ˆFØ!ˆDÔØˆŒØˆŒ
ØˆŒ	Ø�A�ˆØ—\‘\“^ó 	)‰EˆAˆrØ�b‘	—‘ˆAÜ�v‰v�a‹y˜AŠ~Ø�a“˜A‘“Ø�a“œC ›FÑ"“ØØ�IŠIœ˜Q›Ñ�IØ�O‰O×"Ñ" 1Ô%ØÐ!Ø× Ñ ×'Ñ'¨¨r©
Ô3Ø�O‰O×"Ñ"¤3 q£6Ô*Ø�N‰N×!Ñ! $ rª1 u¡+Ô.Ø�J‰J×ÑœbŸf™f Q›iÖ(ð	)ð �‰8�aŠ<ð.Ü16°u³ñ>ˆCä�M‰M˜#Ôð ÐØˆDŒLÜ# D×$4Ñ$4Ó5ò E‘��3Ø—‘×#Ñ#¤B§F¡F¨4¯?©?¸1Ñ+=¸sÓ$CÕDðEô ˜TŸ_™_Ó-ˆŒð ˆŒØˆŒÜ�t—~‘~Ó&ò 	8ˆAØ�H‰H�O‰OœBŸF™F 4§?¡?°1Ñ#5°t·~±~ÀaÑ7HÓIÔJØ�H‰H�O‰OœBŸF™F 4§?¡?°1Ñ#5Ó6Õ7ñ	8ó    c                 ób   — ddl m}  ||| j                  «      }t        j                  |«      }|S )Nr   )Úapprox_fprime)Ústatsmodels.tools.numdiffr@   Úscorer   Ú
atleast_2d)r0   Úparamsr@   Úhesss       r=   Úhessianz_ConditionalModel.hessianb   s(   € å;Ù˜V T§Z¡ZÓ0ˆÜ�}‰}˜TÓ"ˆØˆr>   c
                 ó’  •— t         ‰| �  ||||||	¬«      }t        | |j                  |j	                  «       d«      }||_        | j                  |_        | j                  |_        dt        | j                  «      z  dt        | j                  «      z  dt        j                  | j                  «      z  g|_        t        |«      }|S )N©Ústart_paramsÚmethodÚmaxiterÚfull_outputÚdispÚskip_hessianr   z%dz%.1f)r   ÚfitÚConditionalResultsrD   Ú
cov_paramsrJ   r!   r,   Ún_groupsÚminr   Úmaxr   ÚmeanÚ_group_statsÚConditionalResultsWrapper)r0   rI   rJ   rK   rL   rM   ÚfargsÚcallbackÚretallrN   r2   ÚrsltÚcrsltr<   s                €r=   rO   z_ConditionalModel.fiti   s¶   ø€ ô ‰w‰{Ø%ØØØ#ØØ%ð ó 'ˆô # 4¨¯©°d·o±oÓ6GÈÓKˆØˆŒØ—Y‘YˆŒ
ØŸ™ˆŒà”3�t—‘Ó'Ñ'Ø”3�t—‘Ó'Ñ'Ø”R—W‘W˜TŸ_™_Ó-Ñ-ð
ˆÔô
 )¨Ó/ˆØˆr>   c                 óz   — ddl m} |dk7  rt        d«      ‚dddddœ}|j                  |«        || f||||d	œ|¤ŽS )
aÂ  
        Return a regularized fit to a linear regression model.

        Parameters
        ----------
        method : {'elastic_net'}
            Only the `elastic_net` approach is currently implemented.
        alpha : scalar or array_like
            The penalty weight.  If a scalar, the same penalty weight
            applies to all variables in the model.  If a vector, it
            must have the same length as `params`, and contains a
            penalty weight for each coefficient.
        start_params : array_like
            Starting values for `params`.
        refit : bool
            If True, the model is refit using only the variables that
            have non-zero coefficients in the regularized fit.  The
            refitted model is not regularized.
        **kwargs
            Additional keyword argument that are used when fitting the model.

        Returns
        -------
        Results
            A results instance.
        r   )Úfit_elasticnetÚelastic_netz.method for fit_regularized must be elastic_neté2   r   g»½×Ùß|Û=)rK   ÚL1_wtÚ	cnvrg_tolÚzero_tol)rJ   ÚalpharI   Úrefit)Ústatsmodels.base.elastic_netr^   r   Úupdate)r0   rJ   rd   rI   re   r2   r^   Údefaultss           r=   Úfit_regularizedz!_ConditionalModel.fit_regularized‰   sc   € õB 	@à�]Ò"ÜÐMÓNÐNà!¨A¸EØ %ñ'ˆà�‰˜Ôá˜dð *¨6Ø$)Ø+7Ø$)ñ*ð !)ñ	*ð 	*r>   c                 óò   •— 	 |d   }|d= t        |t        «      r||   }d|j	                  dd«      vrt        j                  d«       t        ‰	| �   |g|¢­||dœ|¤Ž}|S # t         $ r t        d«      ‚w xY w)Nr   r	   z0+ú Ú z2Conditional models should not include an intercept)r   r   )	ÚKeyErrorr   Ú
isinstanceÚstrÚreplacer(   r)   r   Úfrom_formula)
ÚclsÚformular   ÚsubsetÚ	drop_colsÚargsr2   r   Úmodelr<   s
            €r=   rq   z_ConditionalModel.from_formulaº   s¦   ø€ ð	@Ø˜HÑ%ˆFØ�xÐ ô �fœcÔ"Ø˜&‘\ˆFà�w—‘ s¨BÓ/Ñ/Ü�M‰MÐNÔOä‘Ñ$Øð@Ø04ñ@Ø vñ@Ø8>ñ@ˆð ˆøô ò 	@ÜÐ>Ó?Ð?ð	@ús   ƒA! Á!A6©Únone©	NÚBFGSéd   TF© NFF)r_   ç        NF)NN)
Ú__name__Ú
__module__Ú__qualname__r   rF   rO   ri   Úclassmethodrq   Ú__classcell__©r<   s   @r=   r   r      sb   ø„ õN8ò`ð ØØØØØØØØõðB  -Ø Ø%)Ø#ó	.*ðb ð !Ø#ô	ó ôr>   r   c                   óL   ‡ — e Zd ZdZd	ˆ fd„	Zd„ Zd„ Zd
d„Zd
d„Zd„ Z	d„ Z
ˆ xZS )ÚConditionalLogita°  
    Fit a conditional logistic regression model to grouped data.

    Every group is implicitly given an intercept, but the model is fit using
    a conditional likelihood in which the intercepts are not present.  Thus,
    intercept estimates are not given, but the other parameter estimates can
    be interpreted as being adjusted for any group-level confounders.

    Parameters
    ----------
    endog : array_like
        The response variable, must contain only 0 and 1.
    exog : array_like
        The array of covariates.  Do not include an intercept
        in this array.
    groups : array_like
        Codes defining the groups. This is a required keyword parameter.
    c                 ó  •— t        ‰| �  ||fd|i|¤Ž t        j                  t        j                  | j
                  «      t        j                  d   k7  «      rd}t        |«      ‚| j                  j                  d   | _
        y )Nr
   )r   r   zendog must be coded as 0, 1r   )r   r   r   ÚanyÚuniquer1   Úr_r   r   r   ÚK)r0   r1   r   r
   r2   r3   r<   s         €r=   r   zConditionalLogit.__init__é   sp   ø€ ä‰ÑØ�4ñ	4Ø!(ð	4Ø,2ò	4ô �6‰6”"—)‘)˜DŸJ™JÓ'¬2¯5©5°©;Ñ6Ô7Ø/ˆCÜ˜S“/Ð!à—‘—‘ Ñ#ˆ�r>   c                 óz   — d}t        t        | j                  «      «      D ]  }|| j                  ||«      z  }Œ |S ©Nr   )r/   r%   r   Úloglike_grp)r0   rD   Úllr6   s       r=   ÚloglikezConditionalLogit.loglikeõ   sB   € àˆÜ”s˜4Ÿ?™?Ó+Ó,ò 	.ˆAØ�$×"Ñ" 1 fÓ-Ñ-‰Bð	.ð ˆ	r>   c                 óh   — d}t        | j                  «      D ]  }|| j                  ||«      z  }Œ |S r�   )r/   r,   Ú	score_grp)r0   rD   rB   r6   s       r=   rB   zConditionalLogit.scoreý   s;   € àˆÜ�t—~‘~Ó&ò 	/ˆAØ�T—^‘^ A vÓ.Ñ.‰Eð	/ð ˆr>   c                 óÚ   ‡‡‡— |€d}t        j                  t        j                  | j                  |   |«      |z   «      Ši Šˆˆˆfd„Š ‰| j                  |   | j
                  |   «      S )Nr   c                 ó¦   •— | |k  ry|dk(  ry	 ‰| |f   S # t         $ r Y nw xY w ‰| dz
  |«       ‰| dz
  |dz
  «      ‰| dz
     z  z   }|‰| |f<   |S )Nr   r   )rm   )Útr:   ÚvÚexbÚfÚmemos      €€€r=   r˜   z"ConditionalLogit._denom.<locals>.f  s   ø€ Ø�1ŠuØØ�AŠvØðØ˜Q ˜F‘|Ð#øÜò Ùðúñ �!�a‘%˜“™a  A¡ q¨1¡u›o°°A¸±E±
Ñ:Ñ:ˆAØˆD�!�Q�‰LàˆHs   � –	"¡")r   Úexpr+   r   r   r.   )r0   ÚgrprD   r;   r—   r˜   r™   s       @@@r=   Ú_denomzConditionalLogit._denom  s`   ú€ àˆ;ØˆCä�f‰f”R—V‘V˜DŸN™N¨3Ñ/°Ó8¸3Ñ>Ó?ˆð ˆö	ñ  �—‘ Ñ% t§x¡x°¡}Ó5Ð5r>   c                 óæ   ‡ ‡‡‡‡— |€d}‰ j                   |   Št        j                  t        j                  ‰|«      |z   «      Ši Šˆˆˆˆˆ fd„Š ‰‰ j                  |   ‰ j
                  |   «      S )Nr   c                 ó@  •— | |k  r!dt        j                  ‰j                  «      fS |dk(  ry	 ‰| |f   S # t        $ r Y nw xY w‰| dz
     } ‰| dz
  |«      \  }} ‰| dz
  |dz
  «      \  }}||z  ‰
| dz
  d d …f   z  }|||z  z   ||z   ||z  z   }	}||	f‰| |f<   ||	fS )Nr   )r   r   r   )r   Úzerosr   rm   )r•   r:   ÚhÚaÚbÚcÚeÚdÚur–   Úexr—   r™   Úsr0   s             €€€€€r=   r¨   z'ConditionalLogit._denom_grad.<locals>.s.  sÛ   ø€ à�1ŠuØœ"Ÿ(™( 4§=¡=Ó1Ð1Ð1Ø�AŠvØðØ˜Q ˜F‘|Ð#øÜò Ùðúð �A˜‘E‘
ˆAÙ�Q˜‘U˜A“;‰DˆAˆqÙ�Q˜‘U˜A ™E“?‰DˆAˆqØ�A‘˜˜1˜q™5¢!˜8™Ñ$ˆAà�q˜1‘u‘9˜a !™e a¨!¡e™mˆqˆAØ˜q˜6ˆD�!�Q�‰Là�a�4ˆKs   ¯6 ¶	AÁA)r   r   rš   r+   r   r.   )r0   r›   rD   r;   r§   r—   r™   r¨   s   `   @@@@r=   Ú_denom_gradzConditionalLogit._denom_grad"  sj   ü€ àˆ;ØˆCà�^‰^˜CÑ ˆÜ�f‰f”R—V‘V˜B Ó'¨#Ñ-Ó.ˆð ˆ÷	ð 	ñ, �—‘ Ñ% t§x¡x°¡}Ó5Ð5r>   c                 ó   — d }t        | d«      r| j                  |   }t        j                  | j                  |   |«      }|�|| j
                  |   z  }|t        j                  | j                  |||«      «      z  }|S )Nr   )Úhasattrr   r   r+   r-   r*   Úlogrœ   )r0   r›   rD   r;   Úllgs        r=   rŽ   zConditionalLogit.loglike_grpF  sv   € àˆÜ�4˜Ô"Ø×"Ñ" 3Ñ'ˆCä�f‰f�T—X‘X˜c‘] FÓ+ˆàˆ?Ø�4—<‘< Ñ$Ñ$ˆCàŒr�v‰v�d—k‘k # v¨sÓ3Ó4Ñ4ˆàˆ
r>   c                 ó’   — d}t        | d«      r| j                  |   }| j                  |||«      \  }}| j                  |   ||z  z
  S )Nr   r   )r«   r   r©   r-   )r0   r›   rD   r;   r¥   r    s         r=   r’   zConditionalLogit.score_grpU  sP   € àˆÜ�4˜Ô"Ø×"Ñ" 3Ñ'ˆCà×Ñ  V¨SÓ1‰ˆˆ1Ø�x‰x˜‰}˜q 1™uÑ$Ð$r>   rx   )N)r   r€   r�   Ú__doc__r   r�   rB   rœ   r©   rŽ   r’   rƒ   r„   s   @r=   r†   r†   Õ   s,   ø„ ñõ&	$òòó6ó:"6òHö%r>   r†   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚConditionalPoissonaU  
    Fit a conditional Poisson regression model to grouped data.

    Every group is implicitly given an intercept, but the model is fit using
    a conditional likelihood in which the intercepts are not present.  Thus,
    intercept estimates are not given, but the other parameter estimates can
    be interpreted as being adjusted for any group-level confounders.

    Parameters
    ----------
    endog : array_like
        The response variable
    exog : array_like
        The covariates
    groups : array_like
        Codes defining the groups. This is a required keyword parameter.
    c                 óÈ  — d }t        | d«      r| j                  }d}t        t        | j                  «      «      D ]¤  }t        j                  | j                  |   |«      }|�|||   z  }t        j                  |«      }| j                  |   }|t        j                  ||«      z  }|j                  «       }|| j                  |   t        j                  |«      z  z  }Œ¦ |S ©Nr   r~   )r«   r   r/   r%   r   r   r+   r   rš   r&   r    r¬   )	r0   rD   r;   r�   r5   Úxbr—   r9   r¨   s	            r=   r�   zConditionalPoisson.logliker  sÉ   € àˆÜ�4˜Ô"Ø×"Ñ"ˆCàˆä”s˜4Ÿ?™?Ó+Ó,ò 		,ˆAä—‘˜Ÿ™ qÑ)¨6Ó2ˆBØˆØ�c˜!‘f‘�Ü—&‘&˜“*ˆCØ—‘ Ñ"ˆAØ”"—&‘&˜˜B“-ÑˆBØ—‘“	ˆAØ�$—*‘*˜Q‘-¤"§&¡&¨£)Ñ+Ñ+‰Bð		,ð ˆ	r>   c                 óÔ  — d }t        | d«      r| j                  }d}t        t        | j                  «      «      D ]ª  }| j
                  |   }t        j                  ||«      }|�|||   z  }t        j                  |«      }|j                  «       }| j                  |   }	|t        j                  |	|«      z  }|| j                  |   t        j                  ||«      z  |z  z  }Œ¬ |S r³   )r«   r   r/   r%   r   r   r   r+   rš   r&   r    )
r0   rD   r;   rB   r5   Úxr´   r—   r¨   r9   s
             r=   rB   zConditionalPoisson.score‡  sÕ   € àˆÜ�4˜Ô"Ø×"Ñ"ˆCàˆä”s˜4Ÿ?™?Ó+Ó,ò 
	8ˆAà—‘˜qÑ!ˆAÜ—‘˜˜6Ó"ˆBØˆØ�c˜!‘f‘�Ü—&‘&˜“*ˆCØ—‘“	ˆAØ—‘ Ñ"ˆAØ”R—V‘V˜A˜q“\Ñ!ˆEØ�T—Z‘Z ‘]¤R§V¡V¨C°£^Ñ3°aÑ7Ñ7‰Eð
	8ð ˆr>   N)r   r€   r�   r¯   r�   rB   r}   r>   r=   r±   r±   _  s   „ ñò$ó*r>   r±   c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )rP   c                 ó,   •— t         ‰| �  ||||¬«       y )N)Únormalized_cov_paramsÚscale)r   r   )r0   rw   rD   r¹   rº   r<   s        €r=   r   zConditionalResults.__init__Ÿ  s!   ø€ ä‰ÑØØØ"7Øð	 	õ 	r>   c                 óH  — dddd| j                   gfddg}dd| j                  gfd	| j                  d
   gfd| j                  d   gfd| j                  d   gfg}|€d}d
dlm}  |«       }|j                  | |||||¬«       |j                  | |||| j                  ¬«       |S )a<  
        Summarize the fitted model.

        Parameters
        ----------
        yname : str, optional
            Default is `y`
        xname : list[str], optional
            Names for the exogenous variables, default is "var_xx".
            Must match the number of parameters in the model
        title : str, optional
            Title for the top table. If not None, then this replaces the
            default title
        alpha : float
            Significance level for the confidence intervals

        Returns
        -------
        smry : Summary instance
            This holds the summary tables and text, which can be printed or
            converted to various output formats.

        See Also
        --------
        statsmodels.iolib.summary.Summary : class to hold summary
            results
        )zDep. Variable:N)zModel:N)zLog-Likelihood:NzMethod:)zDate:N)zTime:N)zNo. Observations:NzNo. groups:zMin group size:r   zMax group size:r   zMean group size:é   z*Conditional Logit Model Regression Results)ÚSummary)ÚgleftÚgrightÚynameÚxnameÚtitle)rÀ   rÁ   rd   Úuse_t)rJ   rR   rV   Ústatsmodels.iolib.summaryr½   Úadd_table_2colsÚadd_table_paramsrÃ   )	r0   rÀ   rÁ   rÂ   rd   Útop_leftÚ	top_rightr½   Úsmrys	            r=   ÚsummaryzConditionalResults.summary§  sí   € ð< %ØØ%Ø˜Ÿ™˜Ð&ØØð
ˆð (Ø˜TŸ]™]˜OÐ,Ø ×!2Ñ!2°1Ñ!5Ð 6Ð7Ø ×!2Ñ!2°1Ñ!5Ð 6Ð7Ø $×"3Ñ"3°AÑ"6Ð!7Ð8ð
ˆ	ð ˆ=Ø@ˆEõ 	6Ù‹yˆØ×ÑØØØØØØð 	ô 	ð 	×ÑØ˜ U°%¸t¿z¹zð 	ô 	Kð ˆr>   )NNNgš™™™™™©?)r   r€   r�   r   rÊ   rƒ   r„   s   @r=   rP   rP   ž  s   ø„ ô÷>r>   rP   c                   óJ   ‡ — e Zd ZdZdˆ fd„	Z	 	 	 	 	 	 	 	 	 dd„Zd„ Zd„ Zˆ xZS )ÚConditionalMNLogita‡  
    Fit a conditional multinomial logit model to grouped data.

    Parameters
    ----------
    endog : array_like
        The dependent variable, must be integer-valued, coded
        0, 1, ..., c-1, where c is the number of response
        categories.
    exog : array_like
        The independent variables.
    groups : array_like
        Codes defining the groups. This is a required keyword parameter.

    Notes
    -----
    Equivalent to femlogit in Stata.

    References
    ----------
    Gary Chamberlain (1980).  Analysis of covariance with qualitative
    data. The Review of Economic Studies.  Vol. 47, No. 1, pp. 225-238.
    c                 óÂ  •— t        ‰
| �  ||fd|i|¤Ž | j                  j                  t        «      | _        | j                  j                  «       dz   | _        | j                  dz
  | j                  j                  d   z  | _	        | j                  | j                  z
  | _        t        | j                  «      D �ci c]  }|t        |«      “Œ c}| _        | j                  | _        | j                  j                  d   | _        | j                  j#                  «       dk  rd}t%        |«      ‚t'        j(                  t*        «      }t-        | j.                  «      D ]  \  }}	||	   j1                  |«       Œ t+        |j3                  «       «      | _        | j4                  j7                  «        | j4                  D �cg c]  }||   ‘Œ	 c}| _        y c c}w c c}w )Nr
   r   r   z%endog may not contain negative values)r   r   r1   ÚastypeÚintrT   Úk_catr   r   Údf_modelr!   Údf_residr/   ro   Ú_ynames_mapÚJr‹   rS   r   ÚcollectionsÚdefaultdictÚlistr   r   r   ÚkeysÚ_group_labelsÚsortÚ_grp_ix)r0   r1   r   r
   r2   Újr3   Úgrxr:   r–   r<   s             €r=   r   zConditionalMNLogit.__init__   sv  ø€ ä‰ÑØ�4ñ	4Ø!(ð	4Ø,2ò	4ð —Z‘Z×&Ñ&¤sÓ+ˆŒ
à—Z‘Z—^‘^Ó%¨Ñ)ˆŒ
ØŸ™ a™¨4¯9©9¯?©?¸1Ñ+=Ñ=ˆŒØŸ	™	 D§M¡MÑ1ˆŒÜ/4°T·Z±ZÓ/@ÖA¨!˜Aœs 1›v™IÒAˆÔØ—‘ˆŒØ—‘—‘ Ñ#ˆŒà�:‰:�>‰>Ó˜aÒØ9ˆCÜ˜S“/Ð!ä×%Ñ%¤dÓ+ˆÜ˜dŸk™kÓ*ò 	‰DˆAˆqØ�‰F�M‰M˜!Õð	ä! #§(¡(£*Ó-ˆÔØ×Ñ×ÑÔ!Ø(,×(:Ñ(:Ö; 1˜˜A›Ò;ˆ�ùò Bùò <s   Â>GÇGc
           	      óÈ  — |€K| j                   j                  d   }| j                  dz
  }t        j                  j                  ||z  ¬«      }t        j                  j                  | ||||||	¬«      }|j                  j                  | j                   j                  d   df«      |_	        t        | |«      }|j                  t        j                  ¬«       t        |«      S )Nr   )r   rH   éÿÿÿÿ)Úllnull)r   r   rÐ   r   ÚrandomÚnormalÚbaseÚLikelihoodModelrO   rD   Úreshaper   Úset_null_optionsÚnanr   )r0   rI   rJ   rK   rL   rM   rX   rY   rZ   rN   r2   Úqr£   r[   s                 r=   rO   zConditionalMNLogit.fit  sÎ   € ð ÐØ—	‘	—‘ Ñ"ˆAØ—
‘
˜Q‘ˆAÜŸ9™9×+Ñ+°°Q±Ð+Ó7ˆLô ×#Ñ#×'Ñ'ØØ%ØØØ#ØØ%ð (ó 'ˆð —k‘k×)Ñ)¨4¯9©9¯?©?¸1Ñ+=¸rÐ*BÓCˆŒÜ! $¨Ó-ˆð
 	×Ñ¤R§V¡VÐÔ,ä(¨Ó.Ð.r>   c                 ó¨  — | j                   j                  d   }| j                  dz
  }|j                  ||f«      }t	        j
                  t	        j                  |df«      |fd¬«      }t	        j                  | j                   |«      }d}| j                  D ]·  }||d d …f   }t	        j                  |j                  d   t        ¬«      }	| j                  |   }
d}t        j                  |
«      D ]-  }|t	        j                  ||	|f   j                  «       «      z  }Œ/ |||	|
f   j                  «       t	        j                   |«      z
  z  }Œ¹ |S )Nr   ©Úaxisr~   r   ©Údtype)r   r   rÐ   rå   r   ÚconcatenaterŸ   r+   rÛ   ÚarangerÏ   r1   Ú	itertoolsÚpermutationsrš   r&   r¬   )r0   rD   rè   r£   ÚpmatÚlprr�   Úiir¶   Újjr9   ÚdenomÚps                r=   r�   zConditionalMNLogit.loglike?  s!  € à�I‰I�O‰O˜AÑˆØ�J‰J˜‰Nˆà�~‰~˜q !˜fÓ%ˆÜ�~‰~œrŸx™x¨¨A¨Ó/°Ð6¸QÔ?ˆÜ�f‰f�T—Y‘Y Ó%ˆàˆØ—,‘,ò 	3ˆBØ�Bš�E‘
ˆAÜ—‘˜1Ÿ7™7 1™:¬SÔ1ˆBØ—
‘
˜2‘ˆAØˆEÜ×+Ñ+¨AÓ.ò 2�ØœŸ™  2 q '¡
§¡Ó 0Ó1Ñ1‘ð2à�!�R˜�G‘*—.‘.Ó"¤R§V¡V¨E£]Ñ2Ñ2‰Bð	3ð ˆ	r>   c                 óâ  — | j                   j                  d   }| j                  dz
  }|j                  ||f«      }t	        j
                  t	        j                  |df«      |fd¬«      }t	        j                  | j                   |«      }t	        j                  ||f«      }| j                  D �]0  }||d d …f   }t	        j                  |j                  d   t        ¬«      }	| j                  |   }
d}t	        j                  ||f«      }t        j                  |
«      D ]s  }t	        j                  ||	|f   j                  «       «      }||z  }t!        |«      D ]6  \  }}|dk7  sŒ|d d …|dz
  fxx   || j                   ||   d d …f   z  z  cc<   Œ8 Œu t!        |
«      D ]3  \  }}|dk7  sŒ|d d …|dz
  fxx   | j                   ||   d d …f   z  cc<   Œ5 |||z  z  }�Œ3 |j#                  «       S )Nr   rê   r   rì   r~   )r   r   rÐ   rå   r   rî   rŸ   r+   rÛ   rï   rÏ   r1   rð   rñ   rš   r&   r   Úflatten)r0   rD   rè   r£   rò   ró   Úgradrô   r¶   rõ   r9   rö   Údenomgr÷   r–   r5   Úrs                    r=   rB   zConditionalMNLogit.scoreU  sÌ  € à�I‰I�O‰O˜AÑˆØ�J‰J˜‰Nˆà�~‰~˜q !˜fÓ%ˆÜ�~‰~œrŸx™x¨¨A¨Ó/°Ð6¸QÔ?ˆÜ�f‰f�T—Y‘Y Ó%ˆä�x‰x˜˜A˜ÓˆØ—,‘,ó 	#ˆBØ�Bš�E‘
ˆAÜ—‘˜1Ÿ7™7 1™:¬SÔ1ˆBØ—
‘
˜2‘ˆAØˆEÜ—X‘X˜q !˜fÓ%ˆFÜ×+Ñ+¨AÓ.ò D�Ü—F‘F˜1˜b !˜W™:Ÿ>™>Ó+Ó,�Ø˜‘
�Ü% a›Lò D‘D�A�qØ˜A“vØšq ! a¡%˜xÓ(¨A°·	±	¸"¸Q¹%Â¸(Ñ0CÑ,CÑCÔ(ñDðDô " !›ò :‘��1Ø˜“6Øš˜A ™E˜“N d§i¡i°°1±²q°Ñ&9Ñ9”Nð:ð �F˜U‘NÑ"ŠDð#	#ð& �|‰|‹~Ðr>   rx   rz   )	r   r€   r�   r¯   r   rO   r�   rB   rƒ   r„   s   @r=   rÌ   rÌ   ç  s:   ø„ ñõ0<ð6 ØØØØØØØØó#/òJö,r>   rÌ   c                   ó   — e Zd Zy)rW   N)r   r€   r�   r}   r>   r=   rW   rW   v  s   „ Ør>   rW   )r¯   Únumpyr   Ústatsmodels.base.modelrã   rw   Ú#statsmodels.regression.linear_modelÚ
regressionÚlinear_modelÚlmÚstatsmodels.base.wrapperÚwrapperÚwrapÚ#statsmodels.discrete.discrete_modelr   r   rÕ   r(   rð   rä   r   r†   r±   ÚLikelihoodModelResultsrP   rÌ   ÚRegressionResultsWrapperrW   Úpopulate_wrapperr}   r>   r=   ú<module>r     s¯   ðñó ß %Ð %ß 0Ð 0ß 'Ð '÷!ã Û Û ôB˜×,Ñ,ô BôJG%Ð(ô G%ôT<Ð*ô <ô~G˜×4Ñ4ô GôRKÐ*ô Kô^	 × ;Ñ ;ô 	ð €× Ñ Ð/Ð1CÕ Dr>   