B
    ¤ŠãZP~  ã               @   s6  d dl mZ dddgZd dlZd dlZd dlm  mZ d dl	m  m
Z d dlm  mZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlm Z m!Z!m"Z"m#Z# d d	l$m%Z%m&Z& d d
l'm(Z( dZ)G dd„ deƒZ*G dd„ de*ƒZ+G dd„ de*ƒZ,G dd„ de*ƒZ-G dd„ deƒZ.G dd„ dee.ƒZ/G dd„ dej0ƒZ1e 2e1e.¡ G dd„ dej0ƒZ3e 2e3e/¡ G dd„ deƒZ4G dd„ dee4ƒZ5G dd„ dej0ƒZ6e 2e6e4¡ G dd „ d ej0ƒZ7e 2e7e5¡ G d!d"„ d"eƒZ8G d#d$„ d$ee8ƒZ9G d%d&„ d&ej0ƒZ:e 2e:e8¡ G d'd(„ d(ej0ƒZ;e 2e;e9¡ dS ))é    )ÚdivisionÚZeroInflatedPoissonÚZeroInflatedGeneralizedPoissonÚZeroInflatedNegativeBinomialPN)
ÚDiscreteModelÚ
CountModelÚPoissonÚLogitÚCountResultsÚL1CountResultsÚProbitÚ_discrete_results_docsÚGeneralizedPoissonÚNegativeBinomialP)Ú	zipoissonÚzigenpoissonÚzinegbin)Úapprox_fprimeÚapprox_hessÚapprox_hess_csÚapprox_fprime_cs)Úresettable_cacheÚcache_readonly)ÚConvergenceWarninga  
    exog_infl : array_like or None
        Explanatory variables for the binary inflation model, i.e. for
        mixing probability model. If None, then a constant is used.
    offset : array_like
        Offset is added to the linear prediction with coefficient equal to 1.
    exposure : array_like
        Log(exposure) is added to the linear prediction with coefficient
        equal to 1.
    inflation : string, 'logit' or 'probit'
        The model for the zero inflation, either Logit (default) or Probit
    c                   s®   e Zd Zdejeej dœ Zd*‡ fdd„	Zdd	„ Z	d
d„ Z
d+‡ fdd„	Zejje_d,‡ fdd„	Zejje_dd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd-d(d)„Z‡  ZS ).ÚGenericZeroInflatedaQ  
    Generiz Zero Inflated model for count data

    %(params)s
    %(extra_params)s

    Attributes
    -----------
    endog : array
        A reference to the endogenous response variable
    exog : array
        A reference to the exogenous design.
    exog_infl: array
        A reference to the zero-inflated exogenous design.
    )ÚparamsÚextra_paramsNÚlogitÚnonec       
         sv  t t| ƒj||f|||dœ|—Ž |d krLd| _tj|j| jftjd| _n|| _|j	d | _t
|j	ƒdkrtd| _n|j	d | _|| _|dkr´tt | jj	d ¡| jƒ| _| j| _n:|dkrâtt | jj	d ¡| jƒ| _| j| _ntd| ƒ‚|| _| j| _t
| jƒt
| jƒkrtdƒ‚d	d
„ | jjjD ƒ}	|	t| jƒ | jd d …< tj| jtjd| _| j ddg¡ dg| _ d S )N)ÚoffsetÚexposureÚmissingé   )Údtyper   r   Úprobitz%inflation == %s, which is not handledz[exog and exog_infl have different number ofobservation. `missing` handling is not supportedc             S   s   g | ]}d | ‘qS )z
inflate_%s© )Ú.0Úir%   r%   ú?lib/python3.7/site-packages/statsmodels/discrete/count_model.pyú
<listcomp>`   s    z0GenericZeroInflated.__init__.<locals>.<listcomp>Ú	exog_inflÚ	inflation)!Úsuperr   Ú__init__Ú	k_inflateÚnpÚonesÚsizeÚfloat64r*   ÚshapeÚlenÚk_exogZinflr	   ÚzerosÚ
model_inflÚ_hessian_logitÚ_hessian_inflater   Ú_hessian_probitÚ	TypeErrorr+   Úk_extraÚexogÚ
ValueErrorÚdataZparam_namesÚlistÚ
exog_namesZasarrayZ
_init_keysÚextendZ_null_drop_keys)
ÚselfÚendogr=   r*   r   r+   r    r!   ÚkwargsZ
infl_names)Ú	__class__r%   r(   r-   8   s@    



zGenericZeroInflated.__init__c             C   s   t  |  |¡¡S )a9  
        Loglikelihood of Generic Zero Inflated model

        Parameters
        ----------
        params : array-like
            The parameters of the model.

        Returns
        -------
        loglike : float
            The log-likelihood function of the model evaluated at `params`.
            See notes.

        Notes
        --------
        .. math:: \ln L=\sum_{y_{i}=0}\ln(w_{i}+(1-w_{i})*P_{main\_model})+
            \sum_{y_{i}>0}(\ln(1-w_{i})+L_{main\_model})
            where P - pdf of main model, L - loglike function of main model.

        )r/   ÚsumÚ
loglikeobs)rC   r   r%   r%   r(   Úloglikeg   s    zGenericZeroInflated.loglikec       
      C   sÚ   |d| j … }|| j d… }| j}| j |¡}t |t t¡jdt t¡j ¡}| j	 
|¡}t |dk¡d }t |¡d }tj|tjd}	t || d||  t || ¡  ¡|	|< t d||  ¡||  |	|< |	S )ae  
        Loglikelihood for observations of Generic Zero Inflated model

        Parameters
        ----------
        params : array-like
            The parameters of the model.

        Returns
        -------
        loglike : ndarray
            The log likelihood for each observation of the model evaluated
            at `params`. See Notes

        Notes
        --------
        .. math:: \ln L=\ln(w_{i}+(1-w_{i})*P_{main\_model})+
            \ln(1-w_{i})+L_{main\_model}
            where P - pdf of main model, L - loglike function of main model.

        for observations :math:`i=1,...,n`

        Nr"   r   )r#   )r.   rD   r7   Úpredictr/   ÚclipÚfinfoÚfloatÚepsÚ
model_mainrH   ÚnonzeroÚ
zeros_liker2   ÚlogÚexp)
rC   r   Úparams_inflÚparams_mainÚyÚwÚllf_mainÚzero_idxÚnonzero_idxÚllfr%   r%   r(   rH      s    "
"zGenericZeroInflated.loglikeobsÚbfgsé#   r"   Ú	nonrobustc
          	      s¶   |d krBt | ddƒt | ddƒ }t |¡dkr:|dkr:d }|  ¡ }|d krRdd„ }tt| ƒjf ||||||dœ|
—Ž}|  | |j¡}|  	|¡}|d krši }|j
f |d|	d	œ|—Ž |S )
Nr   r   r    r"   c              W   s   | S )Nr%   )Úxr%   r%   r(   Ú<lambda>´   s    z)GenericZeroInflated.fit.<locals>.<lambda>)Ústart_paramsÚmaxiterÚdispÚmethodÚfull_outputÚcallbackT)Úcov_typeZuse_selfÚuse_t)Úgetattrr/   r1   Ú_get_start_paramsr,   r   ÚfitÚresult_classZ_resultsÚresult_class_wrapperZ_get_robustcov_results)rC   ra   rd   rb   re   rc   rf   rg   Zcov_kwdsrh   rE   r   ZmlefitZzipfitÚresult)rF   r%   r(   rk   ©   s$    
zGenericZeroInflated.fitÚl1Údefined_by_methodr   Úautoç{®Gáz„?ç-Cëâ6?ç¸…ëQ¸ž?c                s>  t  |¡dkr0|dkr0| j| j }|t  |¡ }| j| j }| jrdt  |¡dkrd|d | j|  … n|}|d krât| ddƒt| ddƒ }t  |¡dkr¢|dkr¢d }| jjf ||||d||||	|
|dœ|—Žj	}t  
t  | j¡|¡}tt| ƒjf |||||||||	|
|dœ|—Ž}|dkr(|  | |¡}ntd| ƒ‚|  |¡S )Nr"   r   r   r    )ra   rd   rb   re   rc   rf   ÚalphaÚ	trim_modeÚauto_trim_tolÚsize_trim_tolÚqc_tol)ro   Zl1_cvxopt_cpz+argument method == %s, which is not handled)r/   r1   r5   r.   r0   r<   ri   rO   Úfit_regularizedr   Úappendr,   r   Úresult_class_regr;   Úresult_class_reg_wrapper)rC   ra   rd   rb   re   rc   rf   ru   rv   rw   rx   ry   rE   Zk_paramsZextraZalpha_pr   ZcntfitZdiscretefit)rF   r%   r(   rz   Ç   s4    &

z#GenericZeroInflated.fit_regularizedc             C   sº  |d| j … }|| j d… }| j}| j |¡}t |t t¡jdt t¡j ¡}| j	 
|¡}| j	 |¡}|  |¡}t |dk¡d }	t |¡d }
| j	 |¡}tj| jjd | jftjd}tj| jtjd}||	 jd||	 t ||	 ¡   j||	dd…f< ||
 ||
dd…f< | jdkr”| j|	 j||	  d||	   dt ||	 ¡  t ||	 ¡ j||	dd…f< | j|
 j||
  j ||
dd…f< n| jdkr¬t|| jƒS t ||f¡S )aŠ  
        Generic Zero Inflated model score (gradient) vector of the log-likelihood

        Parameters
        ----------
        params : array-like
            The parameters of the model

        Returns
        -------
        score : ndarray, 1-D
            The score vector of the model, i.e. the first derivative of the
            loglikelihood function, evaluated at `params`
        Nr"   r   )r#   r   r$   )r.   rD   r7   rJ   r/   rK   rL   rM   rN   rO   Ú	score_obsrH   rP   r6   r=   r3   r5   r2   rQ   r*   ÚTrS   r+   r   Zhstack)rC   r   rT   rU   rV   rW   Ú
score_mainrX   r[   rY   rZ   ÚmuZdldpZdldwr%   r%   r(   r~   í   s0    "
*0
zGenericZeroInflated.score_obsc             C   s   |   |¡ d¡S )Nr   )r~   rG   )rC   r   r%   r%   r(   Úscore  s    zGenericZeroInflated.scorec             C   s   d S )Nr%   )rC   r   r%   r%   r(   Ú_hessian_main   s    z!GenericZeroInflated._hessian_mainc             C   s.  |d | j … }|| j d … }| j}| j |¡}t |t t¡jdt t¡j ¡}| j	 
|¡}| j	 |¡}|  |¡}t |dk¡d }	t |¡d }
t | j | j| j  f¡}t |¡}xþt| j ƒD ]ð}xêt|ddƒD ]Ú}| j|	|f | j|	|f  ||	 d||	   dt ||	 ¡ dd||	    t ||	 ¡ ||	 ||	 d  dt ||	 ¡ d    ||	 d    ¡ | j|
|f | j|
|f  ||
  d||
    ¡  |||f< qÒW qÀW xtt| j ƒD ]f}x^t| jƒD ]P}||	|f ||	  d||	   | j|	|f  ||	   ¡  |||| j  f< qÐW qÀW |S )Nr"   r   éÿÿÿÿé   )r.   rD   r7   rJ   r/   rK   rL   rM   rN   rO   r~   rH   rP   r6   r5   rS   Úranger*   rG   )rC   r   rT   rU   rV   rW   r€   rX   r[   rY   rZ   Úhess_arrÚpmfr'   Újr%   r%   r(   r8   #  s,    "

lFVz"GenericZeroInflated._hessian_logitc             C   s   d S )Nr%   )rC   r   r%   r%   r(   r:   J  s    z#GenericZeroInflated._hessian_probitc             C   s    |   |¡}|  |¡}|dks$|dkr0t|| jƒS | j| j }t ||f¡}||d| j…dd…f< ||| jd…| jd…f< tj| j| j dd}|j	| ||< |S )a‹  
        Generic Zero Inflated model Hessian matrix of the loglikelihood

        Parameters
        ----------
        params : array-like
            The parameters of the model

        Returns
        -------
        hess : ndarray, (k_vars, k_vars)
            The Hessian, second derivative of loglikelihood function,
            evaluated at `params`

        Notes
        -----
        Nr"   )Úk)
rƒ   r9   r   rI   r5   r.   r/   r6   Ztriu_indicesr   )rC   r   Zhess_arr_mainZhess_arr_inflZdimr‡   Ztri_idxr%   r%   r(   ÚhessianM  s    

zGenericZeroInflated.hessianÚmeanc             C   s"  |dkr| j }|dkr| j}|dkr2t| ddƒ}n
t |¡}|dkrHd}|d| j… }|| jd… }d| j ||¡ }	t ||d| j j	d … ¡| | }
| j
j }| j
j}t| j
ddgƒ}t| j
ddgƒ}|| j
_ t |j	d ¡| j
_|| j
_|| j
_| j
 |¡}|| j
_ || j
_t|ƒdkr6|d dkr6| j
`n|| j
_t|ƒdkrb|d dkrb| j
`n|| j
_d|	 |	t |¡  }|dkr˜|	t |
¡ S |dkr¬t |
¡S |d	krº|
S |d
krÚ|	t |
¡ d|  S |dkrè|S |dkrö|	S |dkr|  |||||¡S td| ƒ‚dS )aH  
        Predict response variable of a count model given exogenous variables.

        Parameters
        ----------
        params : array-like
            The parameters of the model
        exog : array, optional
            A reference to the exogenous design.
            If not assigned, will be used exog from fitting.
        exog_infl : array, optional
            A reference to the zero-inflated exogenous design.
            If not assigned, will be used exog from fitting.
        offset : array, optional
            Offset is added to the linear prediction with coefficient equal to 1.
        exposure : array, optional
            Log(exposure) is added to the linear prediction with coefficient
            equal to 1. If exposure is specified, then it will be logged by the method.
            The user does not need to log it first.
        which : string, optional
            Define values that will be predicted.
            'mean', 'mean-main', 'linear', 'mean-nonzero', 'prob-zero, 'prob', 'prob-main'
            Default is 'mean'.

        Notes
        -----
        Nr    r   r"   r   ZnorŒ   z	mean-mainÚlinearzmean-nonzeroz	prob-zeroz	prob-mainZprobzwhich = %s is not available)r=   r*   ri   r/   rR   r.   r7   rJ   Údotr3   rO   rD   r6   r   r    rH   r4   rS   Ú_predict_probr>   )rC   r   r=   r*   r    r   ÚwhichrT   rU   Z	prob_mainZlin_predZtmp_exogZ	tmp_endogZ
tmp_offsetZtmp_exposurer[   Z	prob_zeror%   r%   r(   rJ   q  s\    
$







zGenericZeroInflated.predict)NNr   Nr   )	Nr\   r]   r"   r"   Nr^   NN)Nro   rp   r"   r"   Nr   rq   rr   rs   rt   )NNNNrŒ   )Ú__name__Ú
__module__Ú__qualname__ÚbaseÚ_model_params_docÚ_doc_zi_paramsÚ_missing_param_docÚ__doc__r-   rI   rH   rk   r   rz   r~   r‚   rƒ   r8   r:   r‹   rJ   Ú__classcell__r%   r%   )rF   r(   r   &   s.    .*  
   !
0'$ r   c                   sL   e Zd Zdejeej dœ Zd‡ fdd„	Zdd	„ Z	d
d„ Z
dd„ Z‡  ZS )r   aQ  
    Poisson Zero Inflated model for count data

    %(params)s
    %(extra_params)s

    Attributes
    -----------
    endog : array
        A reference to the endogenous response variable
    exog : array
        A reference to the exogenous design.
    exog_infl: array
        A reference to the zero-inflated exogenous design.
    )r   r   Nr   r   c       	         s^   t t| ƒj||f|||||dœ|—Ž t| j| j||d| _t| _t	| _
t| _t| _t| _d S )N)r   r+   r*   r    r!   )r   r    )r,   r   r-   r   rD   r=   rO   r   ÚdistributionÚZeroInflatedPoissonResultsrl   Ú!ZeroInflatedPoissonResultsWrapperrm   ÚL1ZeroInflatedPoissonResultsr|   Ú#L1ZeroInflatedPoissonResultsWrapperr}   )	rC   rD   r=   r*   r   r    r+   r!   rE   )rF   r%   r(   r-   â  s    
zZeroInflatedPoisson.__init__c          	   C   sv  |d | j … }|| j d … }| j}| j |¡}t |t t¡jdt t¡j ¡}|  	|¡}t 
|dk¡d }t 
|¡d }| j |¡}	t | j| jf¡}
d|| t |	| ¡d   }xºt| jƒD ]¬}x¦t|ddƒD ]–}| j||f | j||f  |	|  || d  d| || |	|  t |	| ¡ |d     ¡ |	| | j||f  | j||f   ¡  |
||f< qÔW qÂW |
S )Nr"   r   r„   r…   )r.   rD   r7   rJ   r/   rK   rL   rM   rN   r‚   rP   rO   r6   r5   rS   r†   r=   rG   )rC   r   rT   rU   rV   rW   r‚   rY   rZ   r   r‡   Zcoeffr'   r‰   r%   r%   r(   rƒ   ñ  s$    "
4$&z!ZeroInflatedPoisson._hessian_mainc             C   sì   |d | j … }|| j d … }t t dt | j¡d ¡¡}t|jƒdk rnd}	t | j 	||¡¡d d …d f }
nd}	| j 	||¡d d …d f }
t 
|
t t¡jdt t¡j ¡}
| jj	|||dd d …d f }| j |||
¡}|	rè|d S |S )Nr   r"   r…   TF)r   )r.   r/   Ú
atleast_2dÚarangeÚmaxrD   r4   r3   r7   rJ   rK   rL   rM   rN   rO   rš   rˆ   )rC   r   r=   r*   r    r   rT   rU   ÚcountsÚ	transformrW   r   rn   r%   r%   r(   r     s    "
z!ZeroInflatedPoisson._predict_probc             C   s.   | j jdddj}t t | j¡d |¡}|S )Nr   Únm)rc   rd   gš™™™™™¹?)rO   rk   r   r/   r{   r0   r.   )rC   ra   r%   r%   r(   rj   "  s    z%ZeroInflatedPoisson._get_start_params)NNNr   r   )r‘   r’   r“   r”   r•   r–   r—   r˜   r-   rƒ   r   rj   r™   r%   r%   )rF   r(   r   Ð  s    c                   sT   e Zd Zdejed ej dœ Zd‡ fdd	„	Z‡ fd
d„Z	dd„ Z
dd„ Z‡  ZS )r   a¢  
    Zero Inflated Generalized Poisson model for count data

    %(params)s
    %(extra_params)s

    Attributes
    ----------
    endog : array
        A reference to the endogenous response variable
    exog : array
        A reference to the exogenous design.
    exog_infl: array
        A reference to the zero-inflated exogenous design.
    p: scalar
        P denotes parametrizations for ZIGP regression.
    zŽp : float
        dispersion power parameter for the GeneralizedPoisson model.  p=1 for
        ZIGP-1 and p=2 for ZIGP-2. Default is p=2
    )r   r   Nr   r…   r   c	       
         sˆ   t t| ƒj||f|||||dœ|	—Ž t| j| j|||d| _t| _|  j	d7  _	|  j
d7  _
| j d¡ t| _t| _t| _t| _d S )N)r   r+   r*   r    r!   )r   r    Úpr"   ru   )r,   r   r-   r   rD   r=   rO   r   rš   r5   r<   rA   r{   Ú%ZeroInflatedGeneralizedPoissonResultsrl   Ú,ZeroInflatedGeneralizedPoissonResultsWrapperrm   Ú'L1ZeroInflatedGeneralizedPoissonResultsr|   Ú.L1ZeroInflatedGeneralizedPoissonResultsWrapperr}   )
rC   rD   r=   r*   r   r    r+   r¥   r!   rE   )rF   r%   r(   r-   @  s     
z'ZeroInflatedGeneralizedPoisson.__init__c                s"   t t| ƒ ¡ }| jjd |d< |S )Nr"   r¥   )r,   r   Ú_get_init_kwdsrO   Úparameterization)rC   Úkwds)rF   r%   r(   rª   S  s    z-ZeroInflatedGeneralizedPoisson._get_init_kwdsc             C   sð   |d | j … }|| j d … }| jj}t t dt | j¡d ¡¡}	t|j	ƒdk rvd}
t | j
 ||¡¡d d …d f }nd}
| j
 ||¡d d …d f }t dd¡||dk< | jj||||dd d …d f }| j |	||d ||¡}|
rì|d S |S )	Nr   r"   r…   TFg      ð?)r    r   r„   )r.   rO   r«   r/   rŸ   r    r¡   rD   r4   r3   r7   rJ   Z	nextafterrš   rˆ   )rC   r   r=   r*   r    r   rT   rU   r¥   r¢   r£   rW   r   rn   r%   r%   r(   r   X  s    
z,ZeroInflatedGeneralizedPoisson._predict_probc          	   C   sP   t  ¡ 2 t jdtd t| j| j| jdjddj	}W d Q R X t
 |d¡}|S )NÚignore)Úcategory)r*   r   )rc   gš™™™™™¹?)ÚwarningsÚcatch_warningsÚsimplefilterr   r   rD   r=   r*   rk   r   r/   r{   )rC   ra   r%   r%   r(   rj   m  s    

z0ZeroInflatedGeneralizedPoisson._get_start_params)NNNr   r…   r   )r‘   r’   r“   r”   r•   r–   r—   r˜   r-   rª   r   rj   r™   r%   r%   )rF   r(   r   (  s    c                   sT   e Zd Zdejed ej dœ Zd‡ fdd	„	Z‡ fd
d„Z	dd„ Z
dd„ Z‡  ZS )r   aã  
    Zero Inflated Generalized Negative Binomial model for count data

    %(params)s
    %(extra_params)s

    Attributes
    -----------
    endog : array
        A reference to the endogenous response variable
    exog : array
        A reference to the exogenous design.
    exog_infl: array
        A reference to the zero-inflated exogenous design.
    p: scalar
        P denotes parametrizations for ZINB regression. p=1 for ZINB-1 and
    p=2 for ZINB-2. Default is p=2
    zp : float
        dispersion power parameter for the NegativeBinomialP model.  p=1 for
        ZINB-1 and p=2 for ZINM-2. Default is p=2
    )r   r   Nr   r…   r   c	       
         sˆ   t t| ƒj||f|||||dœ|	—Ž t| j| j|||d| _t| _|  j	d7  _	|  j
d7  _
| j d¡ t| _t| _t| _t| _d S )N)r   r+   r*   r    r!   )r   r    r¥   r"   ru   )r,   r   r-   r   rD   r=   rO   r   rš   r5   r<   rA   r{   Ú#ZeroInflatedNegativeBinomialResultsrl   Ú*ZeroInflatedNegativeBinomialResultsWrapperrm   Ú%L1ZeroInflatedNegativeBinomialResultsr|   Ú,L1ZeroInflatedNegativeBinomialResultsWrapperr}   )
rC   rD   r=   r*   r   r    r+   r¥   r!   rE   )rF   r%   r(   r-     s     
z&ZeroInflatedNegativeBinomialP.__init__c                s   t t| ƒ ¡ }| jj|d< |S )Nr¥   )r,   r   rª   rO   r«   )rC   r¬   )rF   r%   r(   rª   ¢  s    z,ZeroInflatedNegativeBinomialP._get_init_kwdsc             C   sø   |d | j … }|| j d … }| jj}t dt | j¡d ¡}	t|jƒdk rpd}
t 	| j
 ||¡¡d d …d f }nd}
| j
 ||¡d d …d f }t |t t¡jdt t¡j ¡}| jj||||dd d …d f }| j |	||d ||¡}|
rô|d S |S )Nr   r"   r…   TF)r    r   r„   )r.   rO   r«   r/   r    r¡   rD   r4   r3   rŸ   r7   rJ   rK   rL   rM   rN   rš   rˆ   )rC   r   r=   r*   r    r   rT   rU   r¥   r¢   r£   rW   r   rn   r%   r%   r(   r   §  s    "
z+ZeroInflatedNegativeBinomialP._predict_probc          	   C   sL   t  ¡ & t jdtd | jjdddj}W d Q R X t t 	| j
¡|¡}|S )Nr­   )r®   r   r¤   )rc   rd   )r¯   r°   r±   r   rO   rk   r   r/   r{   r6   r.   )rC   ra   r%   r%   r(   rj   ¼  s
    
z/ZeroInflatedNegativeBinomialP._get_start_params)NNNr   r…   r   )r‘   r’   r“   r”   r•   r–   r—   r˜   r-   rª   r   rj   r™   r%   r%   )rF   r(   r   v  s    c               @   s0   e Zd Zedddœ Zedd„ ƒZdd
d„ZdS )r›   z)A results class for Zero Inflated PoissonÚ )Úone_line_descriptionÚ
extra_attrc             C   s<   | j dd}d|   ¡ t | j dd¡  }d|t |¡  S )Nr   )r   r"   )rJ   r/   rS   )rC   r   rW   r%   r%   r(   Ú_dispersion_factorÉ  s    z-ZeroInflatedPoissonResults._dispersion_factorÚoverallÚdydxNFc             C   s   t dƒ‚dS )zhGet marginal effects of the fitted model.

        Not yet implemented for Zero Inflated Models
        z&not yet implemented for zero inflationN)ÚNotImplementedError)rC   Úatrd   ÚatexogÚdummyÚcountr%   r%   r(   Úget_margeffÏ  s    z&ZeroInflatedPoissonResults.get_margeff)rº   r»   NFF)r‘   r’   r“   r   r˜   r   r¹   rÁ   r%   r%   r%   r(   r›   Ä  s   
 r›   c               @   s   e Zd ZdS )r   N)r‘   r’   r“   r%   r%   r%   r(   r   Ø  s   r   c               @   s   e Zd ZdS )rœ   N)r‘   r’   r“   r%   r%   r%   r(   rœ   Ü  s   rœ   c               @   s   e Zd ZdS )rž   N)r‘   r’   r“   r%   r%   r%   r(   rž   â  s   rž   c               @   s0   e Zd Zedddœ Zedd„ ƒZdd
d„ZdS )r¦   z5A results class for Zero Inflated Generalized Poissonr¶   )r·   r¸   c             C   s^   | j jj}| j| j jd … d }t | jdd¡}d|  ¡ |  }d|||   d ||  S )Nr„   r   )r   r"   r…   )ÚmodelrO   r«   r   r.   r/   rS   rJ   )rC   r¥   ru   r   rW   r%   r%   r(   r¹   í  s
    
z8ZeroInflatedGeneralizedPoissonResults._dispersion_factorrº   r»   NFc             C   s   t dƒ‚dS )zhGet marginal effects of the fitted model.

        Not yet implemented for Zero Inflated Models
        z&not yet implemented for zero inflationN)r¼   )rC   r½   rd   r¾   r¿   rÀ   r%   r%   r(   rÁ   õ  s    z1ZeroInflatedGeneralizedPoissonResults.get_margeff)rº   r»   NFF)r‘   r’   r“   r   r˜   r   r¹   rÁ   r%   r%   r%   r(   r¦   è  s   
 r¦   c               @   s   e Zd ZdS )r¨   N)r‘   r’   r“   r%   r%   r%   r(   r¨   þ  s   r¨   c               @   s   e Zd ZdS )r§   N)r‘   r’   r“   r%   r%   r%   r(   r§     s   r§   c               @   s   e Zd ZdS )r©   N)r‘   r’   r“   r%   r%   r%   r(   r©   
  s   r©   c               @   s0   e Zd Zedddœ Zedd„ ƒZdd
d„ZdS )r²   z?A results class for Zero Inflated Genaralized Negative Binomialr¶   )r·   r¸   c             C   s^   | j jj}| j| j jd … d }t | jdd¡}d|  ¡ |  }d|||d    ||  S )Nr„   r   )r   r"   )rÂ   rO   r«   r   r.   r/   rS   rJ   )rC   r¥   ru   r   rW   r%   r%   r(   r¹     s
    
z6ZeroInflatedNegativeBinomialResults._dispersion_factorrº   r»   NFc             C   s   t dƒ‚dS )zhGet marginal effects of the fitted model.

        Not yet implemented for Zero Inflated Models
        z&not yet implemented for zero inflationN)r¼   )rC   r½   rd   r¾   r¿   rÀ   r%   r%   r(   rÁ     s    z/ZeroInflatedNegativeBinomialResults.get_margeff)rº   r»   NFF)r‘   r’   r“   r   r˜   r   r¹   rÁ   r%   r%   r%   r(   r²     s   
 r²   c               @   s   e Zd ZdS )r´   N)r‘   r’   r“   r%   r%   r%   r(   r´   '  s   r´   c               @   s   e Zd ZdS )r³   N)r‘   r’   r“   r%   r%   r%   r(   r³   ,  s   r³   c               @   s   e Zd ZdS )rµ   N)r‘   r’   r“   r%   r%   r%   r(   rµ   3  s   rµ   )<Z
__future__r   Ú__all__r¯   Znumpyr/   Zstatsmodels.base.modelr”   rÂ   Zstatsmodels.base.wrapperÚwrapperZwrapZ#statsmodels.regression.linear_modelZ
regressionZlinear_modelZlmZ#statsmodels.discrete.discrete_modelr   r   r   r	   r
   r   r   r   r   r   Zstatsmodels.distributionsr   r   r   Zstatsmodels.tools.numdiffr   r   r   r   Zstatsmodels.tools.decoratorsr   r   Zstatsmodels.tools.sm_exceptionsr   r–   r   r   r   r   r›   r   ZRegressionResultsWrapperrœ   Zpopulate_wrapperrž   r¦   r¨   r§   r©   r²   r´   r³   rµ   r%   r%   r%   r(   Ú<module>   sd   0   -XNN



