U
    Ãmœd(� ã                   @   s  d Z ddlmZ ddlZddlZddlZddlmZm	Z	m
Z
mZmZmZmZ ddlZddlZddlmZ ddlmZ ddlmZ ddlmZmZ ddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&  mZ' dd	l(m)Z)m*Z*m+Z+m,Z, d
dl-m.Z.m/Z/m0Z0m1Z1 zddl2Z2dZ3W n e4k
�r$   dZ3Y nX dZ5dZ6dZ7dZ8dZ9dZ:d
Z;dZ<dd„ Z=dd„ Z>dd„ Z?dÆdd„Z@dd„ ZAG dd„ dƒZBG d d!„ d!eBƒZCG d"d#„ d#eCƒZDG d$d%„ d%ƒZEG d&d'„ d'eDƒZFG d(d)„ d)eDƒZGG d*d+„ d+eDƒZHG d,d-„ d-eDƒZIG d.d/„ d/eDƒZJG d0d1„ d1eDƒZKG d2d3„ d3eDƒZLG d4d5„ d5eDƒZMG d6d7„ d7eDƒZNG d8d9„ d9eDƒZOG d:d;„ d;ƒZPG d<d=„ d=ePƒZQG d>d?„ d?ePƒZRG d@dA„ dAePƒZSejTjUe3 dBdC�G dDdE„ dEƒƒZVG dFdG„ dGƒZWG dHdI„ dIƒZXG dJdK„ dKeXƒZYG dLdM„ dMeXƒZZG dNdO„ dOeXƒZ[G dPdQ„ dQeXƒZ\G dRdS„ dSeXƒZ]G dTdU„ dUeXƒZ^G dVdW„ dWƒZ_G dXdY„ dYe_ƒZ`G dZd[„ d[e`ƒZaG d\d]„ d]e`ƒZbG d^d_„ d_e_ƒZcG d`da„ daeDeEƒZdG dbdc„ dceEƒZeG ddde„ deeDeEƒZfG dfdg„ dgeCƒZgG dhdi„ diƒZhG djdk„ dkeheCƒZiG dldm„ dmeheCƒZjG dndo„ doeheCƒZkG dpdq„ dqeheCƒZlG drds„ dseheCƒZmG dtdu„ dueCƒZnG dvdw„ dwenƒZoG dxdy„ dyenƒZpdzd{„ Zqd|d}„ Zrd~d„ Zsd€d�„ Ztd‚dƒ„ Zud„d…„ Zvd†d‡„ Zwdˆd‰„ ZxdŠd‹„ ZydŒd�„ ZzdŽd�„ Z{d�d‘„ Z|d’d“„ Z}d”d•„ Z~d–d—„ ZG d˜d™„ d™ƒZ€G dšd›„ d›ƒZ�G dœd�„ d�ƒZ‚G dždŸ„ dŸƒZƒG d d¡„ d¡eheCƒZ„G d¢d£„ d£eheCƒZ…G d¤d¥„ d¥eheCƒZ†G d¦d§„ d§eheCƒZ‡G d¨d©„ d©eXƒZˆG dªd«„ d«ƒZ‰G d¬d­„ 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ŠƒZ�dºd»„ Z‘d¼d½„ Z’d¾d¿„ Z“dÀdÁ„ Z”dÂdÃ„ Z•dÄdÅ„ Z–dS )Çzº
Tests for discrete models

Notes
-----
DECIMAL_3 is used because it seems that there is a loss of precision
in the Stata *.dta -> *.csv output, NOT the estimator for the Poisson
tests.
é    )Úassert_index_equalN)Úassert_Úassert_allcloseÚassert_almost_equalÚassert_array_equalÚassert_array_lessÚassert_equalÚassert_raises©Ústats)Únbinom)Ú_iscountÚ_isdummy)Ú
CountModelÚGeneralizedPoissonÚLogitÚMNLogitÚNegativeBinomialÚNegativeBinomialPÚPoissonÚProbit)ÚConvergenceWarningÚPerfectSeparationErrorÚSpecificationWarningÚValueWarningé   )ÚAnesÚ
DiscreteL1ÚRandHIEÚSpectorTFé   é
   é	   é   é   é   c                  C   s,   t jj ¡ } t | j¡| _t | j¡| _| S ©N)ÚsmÚdatasetsÚanes96ÚloadÚnpÚasarrayÚendogÚexog©Údata© r1   úa/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/discrete/tests/test_discrete.pyÚload_anes96E   s    r3   c                  C   s,   t jj ¡ } t | j¡| _t | j¡| _| S r&   )r'   r(   Úspectorr*   r+   r,   r-   r.   r/   r1   r1   r2   Úload_spectorK   s    r5   c                  C   s0   t jj ¡ } t | j¡| _tj| jtd�| _| S )N©Zdtype)	r'   r(   Zrandhier*   r+   r,   r-   r.   Úfloatr/   r1   r1   r2   Úload_randhieR   s    r8   c                 C   sz  |d kr| j }n|}|jj}|j |j¡ d¡}|j |j¡}t||tƒ t	|jt
tfƒr^d S |j |j¡}|j |j¡}t	|tƒsš|d d …d f | }n&|\}	}
t |	d d …d f | |
f¡}t||dd� |j |j¡}|j |j¡}t	|tƒ�s||j  |¡}n`|\}}}||j  |¡}t |j |¡¡}t | d¡¡}t t ||jf¡t ||f¡f¡}t||dd� d S )Nr   ç»½×Ùß|Û=©Úrtol)Úres1Úmodelr.   Z	score_obsÚparamsÚsumÚscorer   Ú	DECIMAL_9Ú
isinstancer   r   Zscore_factorÚtupler+   Úcolumn_stackr   ÚhessianZhessian_factorÚTÚdotZ
atleast_2dZvstack)ÚselfÚresr<   r.   Zjacsumr@   Ús1ZsfÚs2Zsf0Zsf1Zh1ZhfZh2Zhf0Zhf1Zhf2Zh00Zh10Zh11r1   r1   r2   Ú	check_jacY   s8    

ÿrL   c                 C   s‚   |   ¡ }| j  | j¡}|  ¡ }| ¡ }t|t |¡dd� | ¡ }t|t |¡dd� | jdd�}| ¡ }t|t |¡dd� d S )Nr9   r:   Úvar©Úwhich)	Úget_distributionr=   r>   ÚpredictÚmeanr   r+   ZsqueezerM   )rI   ZdistrZdistr1ÚmÚm2ÚvZv2r1   r1   r2   Úcheck_distr†   s    rV   c                   @   s   e Zd Zdd„ ZdS )ÚCheckModelMixinc              	   C   s2   | j j}tjtdd�� |jdd� W 5 Q R X d S )Nzis not supported, use either©ÚmatchZfoo©Úmethod)r<   r=   ÚpytestÚraisesÚ
ValueErrorÚfit_regularized)rH   r=   r1   r1   r2   Ú#test_fit_regularized_invalid_method™   s    z3CheckModelMixin.test_fit_regularized_invalid_methodN)Ú__name__Ú
__module__Ú__qualname__r`   r1   r1   r1   r2   rW   ”   s   rW   c                   @   sÂ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zejjdded�dd„ ƒZdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-S ).ÚCheckModelResultszm
    res2 should be the test results from RModelWrap
    or the results as defined in model_results_data
    c                 C   s   t | jj| jjtƒ d S r&   ©r   r<   r>   Úres2Ú	DECIMAL_4©rH   r1   r1   r2   Útest_params§   s    zCheckModelResults.test_paramsc                 C   s   t | j ¡ | jjdd� d S )Ngñhãˆµø?r:   ©r   r<   Úconf_intrf   rh   r1   r1   r2   Útest_conf_intª   s    zCheckModelResults.test_conf_intc                 C   s   t | jj| jjtƒ d S r&   )r   r<   Útvaluesrf   Úzrg   rh   r1   r1   r2   Ú
test_zstat­   s    zCheckModelResults.test_zstatc                 C   s   t | jj| jjtƒ d S r&   ©r   r<   Úpvaluesrf   rg   rh   r1   r1   r2   Útest_pvalues°   s    zCheckModelResults.test_pvaluesc                 C   s0   t | jdƒst d¡‚t| j ¡ | jjtƒ d S )NÚ
cov_paramszTODO: implement res2.cov_params)Úhasattrrf   r\   Úskipr   r<   rs   rg   rh   r1   r1   r2   Útest_cov_params³   s    

þz!CheckModelResults.test_cov_paramsc                 C   s   t | jj| jjtƒ d S r&   )r   r<   Úllfrf   rg   rh   r1   r1   r2   Útest_llfº   s    zCheckModelResults.test_llfc                 C   s   t | jj| jjtƒ d S r&   )r   r<   Úllnullrf   rg   rh   r1   r1   r2   Útest_llnull½   s    zCheckModelResults.test_llnullc                 C   s   t | jj| jjtƒ d S r&   )r   r<   Úllrrf   Ú	DECIMAL_3rh   r1   r1   r2   Útest_llrÀ   s    zCheckModelResults.test_llrc                 C   s   t | jj| jjtƒ d S r&   )r   r<   Z
llr_pvaluerf   rg   rh   r1   r1   r2   Útest_llr_pvalueÃ   s    þz!CheckModelResults.test_llr_pvalueú-Test has not been implemented for this class.T©ÚreasonÚstrictr]   c                 C   s   t ‚d S r&   ©ÚNotImplementedErrorrh   r1   r1   r2   Útest_normalized_cov_paramsÈ   s    z,CheckModelResults.test_normalized_cov_paramsc                 C   s   t | jj| jjtƒ d S r&   ©r   r<   Úbserf   rg   rh   r1   r1   r2   Útest_bseÍ   s    zCheckModelResults.test_bsec                 C   s(   t | jj| jjƒ t | jj| jjƒ d S r&   )r   r<   Údf_modelrf   Údf_residrh   r1   r1   r2   Útest_dofÐ   s    zCheckModelResults.test_dofc                 C   s   t | jj| jjtƒ d S r&   ©r   r<   Úaicrf   r|   rh   r1   r1   r2   Útest_aicÔ   s    zCheckModelResults.test_aicc                 C   s   t | jj| jjtƒ d S r&   ©r   r<   Úbicrf   r|   rh   r1   r1   r2   Útest_bic×   s    zCheckModelResults.test_bicc                 C   s"   t | jj | jj¡| jjtƒ d S r&   )r   r<   r=   rQ   r>   rf   Zphatrg   rh   r1   r1   r2   Útest_predictÚ   s     ÿzCheckModelResults.test_predictc                 C   s&   t | jjj| jjdd�| jjtƒ d S )NÚlinearrN   )r   r<   r=   rQ   r>   rf   Zyhatrg   rh   r1   r1   r2   Útest_predict_xbÞ   s    ÿ þz!CheckModelResults.test_predict_xbc                 C   s*   | j j | j j¡ ¡ }t|| j jtƒ d S r&   )r<   r=   Z
loglikeobsr>   r?   r   rw   Ú
DECIMAL_14)rH   Zllobssumr1   r1   r2   Útest_loglikeobsã   s    z!CheckModelResults.test_loglikeobsc                 C   s   t | ƒ d S r&   ©rL   rh   r1   r1   r2   Útest_jacè   s    zCheckModelResults.test_jacc                 C   sV   | j  ¡ }| ¡ }t| ¡ ƒ}t| j jtƒsF|dt 	| j j
¡ ksFt‚d|ksRt‚d S )Né   zCovariance Type:)r<   ÚsummaryZas_latexÚlenÚ
splitlinesrB   r=   r   r+   Úsizer>   ÚAssertionError)rH   ÚsummZltxZn_linesr1   r1   r2   Útest_summary_latexë   s    
z$CheckModelResults.test_summary_latexc                 C   s   t | jƒ d S r&   ©rV   r<   rh   r1   r1   r2   Ú
test_distrõ   s    zCheckModelResults.test_distrN)ra   rb   rc   Ú__doc__ri   rl   ro   rr   rv   rx   rz   r}   r~   r\   ÚmarkÚxfailr„   r…   rˆ   r‹   rŽ   r‘   r’   r”   r–   r˜   r    r¢   r1   r1   r1   r2   rd   ¡   s2    ÿ

rd   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zejjdd„ ƒZ	d	S )
ÚCheckBinaryResultsc                 C   s   t | j ¡ | jjƒ d S r&   )r   r<   Ú
pred_tablerf   rh   r1   r1   r2   Útest_pred_tableú   s    z"CheckBinaryResults.test_pred_tablec                 C   s   t | jj| jjtƒ d S r&   )r   r<   Z	resid_devrf   rg   rh   r1   r1   r2   Útest_resid_devý   s    ÿz!CheckBinaryResults.test_resid_devc                 C   s   t | jj| jjtƒ d S r&   )r   r<   Zresid_generalizedrf   rg   rh   r1   r1   r2   Útest_resid_generalized  s     ÿz)CheckBinaryResults.test_resid_generalizedc                 C   s   | j j d S r&   )r<   Zresid_responserh   r1   r1   r2   Útest_resid_response  s    z&CheckBinaryResults.test_resid_responseN)
ra   rb   rc   r¨   r©   rª   r\   r¤   Zsmoker«   r1   r1   r1   r2   r¦   ù   s
   r¦   c                   @   sÐ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2S )3ÚCheckMargEffz9
    Test marginal effects (margeff) and its options
    c                 C   sh   | j  ¡ }t|j| jjtƒ t|j| jjtƒ | 	¡ }|d j
}t||jdd� t|j|jjdfƒ d S )Núdy/dxç‚vIhÂ%<=r:   é   )r<   Úget_margeffr   Úmargeffrf   Zmargeff_nodummy_dydxrg   Ú
margeff_seZmargeff_nodummy_dydx_seÚsummary_frameÚvaluesr   r   Úshaper�   ©rH   ÚmeZme_frameZeffr1   r1   r2   Útest_nodummy_dydxoverall  s    
 ÿ ÿ
z%CheckMargEff.test_nodummy_dydxoverallc                 C   s6   | j jdd�}t|j| jjtƒ t|j| jjtƒ d S )NrR   ©Úat)	r<   r°   r   r±   rf   Zmargeff_nodummy_dydxmeanrg   r²   Zmargeff_nodummy_dydxmean_se©rH   r·   r1   r1   r2   Útest_nodummy_dydxmean  s     ÿ ÿz"CheckMargEff.test_nodummy_dydxmeanc                 C   s6   | j jdd�}t|j| jjtƒ t|j| jjtƒ d S )NÚmedianr¹   )	r<   r°   r   r±   rf   Zmargeff_nodummy_dydxmedianrg   r²   Zmargeff_nodummy_dydxmedian_ser»   r1   r1   r2   Útest_nodummy_dydxmedian#  s     ÿ ÿz$CheckMargEff.test_nodummy_dydxmedianc                 C   s6   | j jdd�}t|j| jjtƒ t|j| jjtƒ d S )NÚzeror¹   )r<   r°   r   r±   rf   Zmargeff_nodummy_dydxzerorg   r²   r»   r1   r1   r2   Útest_nodummy_dydxzero*  s     ÿ ÿz"CheckMargEff.test_nodummy_dydxzeroc                 C   s6   | j jdd�}t|j| jjtƒ t|j| jjtƒ d S )NÚdyexrZ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_dyexrg   r²   Zmargeff_nodummy_dyex_ser»   r1   r1   r2   Útest_nodummy_dyexoverall1  s     ÿ ÿz%CheckMargEff.test_nodummy_dyexoverallc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )NrR   rÁ   ©rº   r[   )	r<   r°   r   r±   rf   Zmargeff_nodummy_dyexmeanrg   r²   Zmargeff_nodummy_dyexmean_ser»   r1   r1   r2   Útest_nodummy_dyexmean8  s     ÿ ÿz"CheckMargEff.test_nodummy_dyexmeanc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )Nr½   rÁ   rÃ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_dyexmedianrg   r²   Zmargeff_nodummy_dyexmedian_ser»   r1   r1   r2   Útest_nodummy_dyexmedian?  s     ÿ ÿz$CheckMargEff.test_nodummy_dyexmedianc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )Nr¿   rÁ   rÃ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_dyexzerorg   r²   Zmargeff_nodummy_dyexzero_ser»   r1   r1   r2   Útest_nodummy_dyexzeroF  s     ÿ ÿz"CheckMargEff.test_nodummy_dyexzeroc                 C   s6   | j jdd�}t|j| jjtƒ t|j| jjtƒ d S )NÚeydxrZ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_eydxrg   r²   Zmargeff_nodummy_eydx_ser»   r1   r1   r2   Útest_nodummy_eydxoverallM  s     ÿ ÿz%CheckMargEff.test_nodummy_eydxoverallc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )NrR   rÇ   rÃ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_eydxmeanrg   r²   Zmargeff_nodummy_eydxmean_ser»   r1   r1   r2   Útest_nodummy_eydxmeanT  s     ÿ ÿz"CheckMargEff.test_nodummy_eydxmeanc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )Nr½   rÇ   rÃ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_eydxmedianrg   r²   Zmargeff_nodummy_eydxmedian_ser»   r1   r1   r2   Útest_nodummy_eydxmedian[  s     ÿ ÿz$CheckMargEff.test_nodummy_eydxmedianc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )Nr¿   rÇ   rÃ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_eydxzerorg   r²   Zmargeff_nodummy_eydxzero_ser»   r1   r1   r2   Útest_nodummy_eydxzerob  s     ÿ ÿz"CheckMargEff.test_nodummy_eydxzeroc                 C   s6   | j jdd�}t|j| jjtƒ t|j| jjtƒ d S )NÚeyexrZ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_eyexrg   r²   Zmargeff_nodummy_eyex_ser»   r1   r1   r2   Útest_nodummy_eyexoveralli  s     ÿ ÿz%CheckMargEff.test_nodummy_eyexoverallc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )NrR   rÌ   rÃ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_eyexmeanrg   r²   Zmargeff_nodummy_eyexmean_ser»   r1   r1   r2   Útest_nodummy_eyexmeanp  s     ÿ ÿz"CheckMargEff.test_nodummy_eyexmeanc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )Nr½   rÌ   rÃ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_eyexmedianrg   r²   Zmargeff_nodummy_eyexmedian_ser»   r1   r1   r2   Útest_nodummy_eyexmedianw  s     ÿ ÿz$CheckMargEff.test_nodummy_eyexmedianc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )Nr¿   rÌ   rÃ   )	r<   r°   r   r±   rf   Zmargeff_nodummy_eyexzerorg   r²   Zmargeff_nodummy_eyexzero_ser»   r1   r1   r2   Útest_nodummy_eyexzero~  s     ÿ ÿz"CheckMargEff.test_nodummy_eyexzeroc                 C   s6   | j jdd�}t|j| jjtƒ t|j| jjtƒ d S ©NT©Údummy)	r<   r°   r   r±   rf   Zmargeff_dummy_dydxrg   r²   Zmargeff_dummy_dydx_ser»   r1   r1   r2   Útest_dummy_dydxoverall…  s     ÿ ÿz#CheckMargEff.test_dummy_dydxoverallc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )NrR   T)rº   rÓ   )	r<   r°   r   r±   rf   Zmargeff_dummy_dydxmeanrg   r²   Zmargeff_dummy_dydxmean_ser»   r1   r1   r2   Útest_dummy_dydxmeanŒ  s     ÿ ÿz CheckMargEff.test_dummy_dydxmeanc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )NrÇ   T)r[   rÓ   )	r<   r°   r   r±   rf   Zmargeff_dummy_eydxrg   r²   Zmargeff_dummy_eydx_ser»   r1   r1   r2   Útest_dummy_eydxoverall“  s     ÿ ÿz#CheckMargEff.test_dummy_eydxoverallc                 C   s:   | j jdddd�}t|j| jjtƒ t|j| jjtƒ d S )NrR   rÇ   T)rº   r[   rÓ   )	r<   r°   r   r±   rf   Zmargeff_dummy_eydxmeanrg   r²   Zmargeff_dummy_eydxmean_ser»   r1   r1   r2   Útest_dummy_eydxmeanš  s     ÿ ÿz CheckMargEff.test_dummy_eydxmeanc                 C   s6   | j jdd�}t|j| jjtƒ t|j| jjtƒ d S )NT)Úcount)	r<   r°   r   r±   rf   Zmargeff_count_dydxrg   r²   Zmargeff_count_dydx_ser»   r1   r1   r2   Útest_count_dydxoverall¡  s     ÿ ÿz#CheckMargEff.test_count_dydxoverallc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )NTrR   )rØ   rº   )	r<   r°   r   r±   rf   Zmargeff_count_dydxmeanrg   r²   Zmargeff_count_dydxmean_ser»   r1   r1   r2   Útest_count_dydxmean¨  s     ÿ ÿz CheckMargEff.test_count_dydxmeanc                 C   s8   | j jddd�}t|j| jjtƒ t|j| jjtƒ d S )NT)rØ   rÓ   )	r<   r°   r   r±   rf   Zmargeff_count_dummy_dydxoverallrg   r²   Z"margeff_count_dummy_dydxoverall_ser»   r1   r1   r2   Útest_count_dummy_dydxoverall¯  s     ÿ ÿz)CheckMargEff.test_count_dummy_dydxoverallc                 C   s:   | j jdddd�}t|j| jjtƒ t|j| jjtƒ d S )NTrR   )rØ   rÓ   rº   )	r<   r°   r   r±   rf   Zmargeff_count_dummy_dydxmeanrg   r²   Zmargeff_count_dummy_dydxmean_ser»   r1   r1   r2   Útest_count_dummy_dydxmean¶  s     ÿ ÿz&CheckMargEff.test_count_dummy_dydxmeanN)ra   rb   rc   r£   r¸   r¼   r¾   rÀ   rÂ   rÄ   rÅ   rÆ   rÈ   rÉ   rÊ   rË   rÍ   rÎ   rÏ   rÐ   rÔ   rÕ   rÖ   r×   rÙ   rÚ   rÛ   rÜ   r1   r1   r1   r2   r¬   
  s2   r¬   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestProbitNewtonc                 C   sB   t ƒ }tj|jdd�|_t|j|jƒjddd�| _tj	}|| _
d S ©NF©ÚprependÚnewtonr   ©r[   Údisp©r5   r'   Úadd_constantr.   r   r-   Úfitr<   r   Úprobitrf   ©Úclsr0   rf   r1   r1   r2   Úsetup_classÀ  s
    zTestProbitNewton.setup_classc              	   C   sN   | j jj}| j jj}t t|ƒ¡}tjt	dd�� t
|||d� W 5 Q R X d S )Nzunknown kwargsrX   )Úweights)r<   r=   r-   r.   r+   Úonesr›   r\   Úwarnsr   r   )rH   r-   r.   rn   r1   r1   r2   Útest_init_kwargsÈ  s
    

z!TestProbitNewton.test_init_kwargsN)ra   rb   rc   Úclassmethodrê   rî   r1   r1   r1   r2   rÝ   ¾  s   
rÝ   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestProbitBFGSc                 C   sB   t ƒ }tj|jdd�|_t|j|jƒjddd�| _tj	}|| _
d S ©NFrß   Úbfgsr   râ   rä   rè   r1   r1   r2   rê   Ó  s    ÿzTestProbitBFGS.setup_classN©ra   rb   rc   rï   rê   r1   r1   r1   r2   rð   Ñ  s   rð   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestProbitNMc                 C   sD   t ƒ }tj|jdd�|_tj}|| _t|j|jƒj	dddd�| _
d S )NFrß   Únmr   éô  ©r[   rã   Úmaxiter©r5   r'   rå   r.   r   rç   rf   r   r-   ræ   r<   rè   r1   r1   r2   rê   ß  s     ÿzTestProbitNM.setup_classNró   r1   r1   r1   r2   rô   Ý  s   rô   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestProbitPowellc                 C   sD   t ƒ }tj|jdd�|_tj}|| _t|j|jƒj	dddd�| _
d S )NFrß   Zpowellr   ç:Œ0âŽyE>)r[   rã   Zftolrù   rè   r1   r1   r2   rê   ë  s     ÿzTestProbitPowell.setup_classNró   r1   r1   r1   r2   rú   é  s   rú   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestProbitCGc                 C   s²   t ƒ }tj|jdd�|_tj}|| _ddlm} ||jƒ}||jƒ}t	|j
|ƒjddddd�}| |j¡}t||jd	d
d� t	|j
|jƒj|ddd	dd�| _t| jjd dƒ d S )NFrß   r   )ÚStandardizeTransformZcgéè  rû   )r[   rã   rø   Úgtolçñhãˆµøä>ç�íµ ÷Æ°>©r;   Úatol)Ústart_paramsr[   rø   rÿ   rã   Zfcallséd   )r5   r'   rå   r.   r   rç   rf   Z!statsmodels.tools.transform_modelrý   r   r-   ræ   Ztransform_paramsr>   r   r<   r   Úmle_retvals)ré   r0   rf   rý   ZtransfZexog_stZres1_str  r1   r1   r2   rê   ÷  s6    

ÿ  þÿ  ýzTestProbitCG.setup_classNró   r1   r1   r1   r2   rü   õ  s   rü   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestProbitNCGc                 C   sF   t ƒ }tj|jdd�|_tj}|| _t|j|jƒj	ddddd�| _
d S )NFrß   Zncgr   rû   )r[   rã   ZavextolZwarn_convergencerù   rè   r1   r1   r2   rê     s     þzTestProbitNCG.setup_classNró   r1   r1   r1   r2   r    s   r  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestProbitBasinhoppingc                 C   s\   t ƒ }tj|jdd�|_tj}|| _t|j|jƒj	}t
j d¡ |dddddd	œd
�| _d S )NFrß   r   Úbasinhoppingr   é   zL-BFGS-Brû   )r[   Útol)r[   rã   ÚniterZ	minimizer)r5   r'   rå   r.   r   rç   rf   r   r-   ræ   r+   ÚrandomÚseedr<   ©ré   r0   rf   ræ   r1   r1   r2   rê      s    ÿz"TestProbitBasinhopping.setup_classNró   r1   r1   r1   r2   r    s   r  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestProbitMinimizeDefaultc                 C   sJ   t ƒ }tj|jdd�|_tj}|| _t|j|jƒj	}|ddddd�| _
d S )NFrß   Úminimizer   r
  rû   )r[   rã   r  r  rù   r  r1   r1   r2   rê   .  s    z%TestProbitMinimizeDefault.setup_classNró   r1   r1   r1   r2   r  ,  s   r  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestProbitMinimizeDoglegc                 C   sL   t ƒ }tj|jdd�|_tj}|| _t|j|jƒj	}|dddddd�| _
d S )	NFrß   r  r   r
  rû   Zdogleg)r[   rã   r  r  Ú
min_methodrù   r  r1   r1   r2   rê   :  s    
ÿz$TestProbitMinimizeDogleg.setup_classNró   r1   r1   r1   r2   r  8  s   r  c                   @   s   e Zd Zedd„ ƒZdS )Ú#TestProbitMinimizeAdditionalOptionsc                 C   sJ   t ƒ }tj|jdd�|_tj}|| _t|j|jƒj	ddddddd�| _
d S )	NFrß   r  r   rö   zNelder-Meadç-Cëâ6?)r[   rã   rø   r  ZxatolZfatolrù   rè   r1   r1   r2   rê   G  s     ýz/TestProbitMinimizeAdditionalOptions.setup_classNró   r1   r1   r1   r2   r  E  s   r  c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚCheckLikelihoodModelL1z>
    For testing results generated with L1 regularization
    c                 C   s   t | jj| jjtƒ d S r&   re   rh   r1   r1   r2   ri   V  s    z"CheckLikelihoodModelL1.test_paramsc                 C   s   t | j ¡ | jjtƒ d S r&   )r   r<   rk   rf   rg   rh   r1   r1   r2   rl   Y  s
      ÿz$CheckLikelihoodModelL1.test_conf_intc                 C   s   t | jj| jjtƒ d S r&   r†   rh   r1   r1   r2   rˆ   ]  s    zCheckLikelihoodModelL1.test_bsec                 C   s   t | jj| jjtƒ d S r&   )r   r<   Z
nnz_paramsrf   rg   rh   r1   r1   r2   Útest_nnz_params`  s
      ÿz&CheckLikelihoodModelL1.test_nnz_paramsc                 C   s   t | jj| jjtƒ d S r&   rŒ   rh   r1   r1   r2   rŽ   d  s
      ÿzCheckLikelihoodModelL1.test_aicc                 C   s   t | jj| jjtƒ d S r&   r�   rh   r1   r1   r2   r‘   h  s
      ÿzCheckLikelihoodModelL1.test_bicN)
ra   rb   rc   r£   ri   rl   rˆ   r  rŽ   r‘   r1   r1   r1   r2   r  R  s   r  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestProbitL1c              	   C   s^   t ƒ }tj|jdd�|_t ddddg¡}t|j|jƒjd|dd	d
ddd�| _	t
j}|| _d S )NTrß   çš™™™™™¹?çš™™™™™É?g333333Ó?r!   Úl1r   Úautoç{®Gáz”?r9   rþ   )r[   Úalpharã   Ú	trim_modeÚauto_trim_tolÚaccrø   )r5   r'   rå   r.   r+   Úarrayr   r-   r_   r<   r   rç   rf   )ré   r0   r  rf   r1   r1   r2   rê   o  s         þzTestProbitL1.setup_classc                 C   s   t | j ¡ | jjtƒ d S r&   ©r   r<   rs   rf   rg   rh   r1   r1   r2   rv   z  s
      ÿzTestProbitL1.test_cov_paramsN©ra   rb   rc   rï   rê   rv   r1   r1   r1   r2   r  m  s   

r  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestMNLogitL1c                 C   sz   t ƒ }|j}tj|dd�}t |j|¡}dt |jd |j	f¡ }d|dd d …f< |j
d|dd	d
dd�| _tj}|| _d S )NFrß   ç      $@r   r   éÿÿÿÿr  r  r  r9   )r[   r  r  r   r!  rã   )r3   r.   r'   rå   r   r-   r+   rì   ÚJÚKr_   r<   r   Úmnlogitrf   )ré   Z	anes_dataZ	anes_exogZ
mlogit_modr  rf   r1   r1   r2   rê   �  s         þzTestMNLogitL1.setup_classNró   r1   r1   r1   r2   r%    s   r%  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestLogitL1c              	   C   sf   t ƒ }tj|jdd�|_dt ddddg¡ | _t|j|jƒj	d| jddd	d
dd�| _
tj}|| _d S )NTrß   r$   ç        ç      ð?r  r   r�   r   r9   rþ   )r[   r  rã   r  Zsize_trim_tolr!  rø   )r5   r'   rå   r.   r+   r"  r  r   r-   r_   r<   r   Úlogitrf   rè   r1   r1   r2   rê   ’  s         þzTestLogitL1.setup_classc                 C   s   t | j ¡ | jjtƒ d S r&   r#  rh   r1   r1   r2   rv   �  s
      ÿzTestLogitL1.test_cov_paramsNr$  r1   r1   r1   r2   r+  �  s   

r+  ú1Skipped test_cvxopt since cvxopt is not available)r�   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )Ú
TestCVXOPTc                 C   sZ   t st d¡ tjj ¡ | _t 	| jj
¡| j_
t 	| jj¡| j_tj| jjdd�| j_d S )Nr/  Trß   )Ú
has_cvxoptr\   ru   r'   r(   r4   r*   r0   r+   r,   r-   r.   rå   ©ré   r1   r1   r2   rê   ¦  s    
zTestCVXOPT.setup_classc              	   C   sz   dt  ddddg¡ | _t| jj| jjƒjd| jddddd	�}t| jj| jjƒjd
| jdddddd�}t|j	|j	t
ƒ d S )Nç      @r   r   r-  r  r9   rþ   r  ©r[   r  rã   r!  rø   r  Zl1_cvxopt_cpç{®Gáz„?)r[   r  rã   Zabstolr  r   rø   )r+   r"  r  r   r0   r-   r.   r_   r   r>   rg   )rH   Z	res_slsqpZ
res_cvxoptr1   r1   r2   Útest_cvxopt_versus_slsqp¯  s&        þ     þz#TestCVXOPT.test_cvxopt_versus_slsqpN)ra   rb   rc   rï   rê   r6  r1   r1   r1   r2   r0  ¢  s   
r0  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestSweepAlphaL1c                 C   s^   t ƒ }tj|jdd�|_t|j|jƒ| _t ddddgddddgddddgg¡| _	t
j| _d S )NTrß   r  çš™™™™™Ù?ç      à?r   )r5   r'   rå   r.   r   r-   r=   r+   r"  Úalphasr   Zsweepr<   ©ré   r0   r1   r1   r2   rê   ½  s    


þÿzTestSweepAlphaL1.setup_classc              	   C   sR   t dƒD ]D}| j|d d …f }| jjd|ddddd�}t|j| jj| tƒ qd S )Nr$   r  r   r9   Úoffrþ   )r[   r  rã   r!  r  rø   )Úranger:  r=   r_   r   r>   r<   rg   )rH   Úir  rf   r1   r1   r2   Útest_sweep_alphaÈ  s        þz!TestSweepAlphaL1.test_sweep_alphaN)ra   rb   rc   rï   rê   r?  r1   r1   r1   r2   r7  »  s   

r7  c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚCheckL1CompatabilityzÀ
    Tests compatability between l1 and unregularized by setting alpha such
    that certain parameters should be effectively unregularized, and others
    should be ignored by the model.
    c                 C   sV   | j }t| jjd |… | jjd |… tƒ | jjjjd }td| jj||… tƒ d S )Nr   r   )	rS   r   Ú	res_unregr>   Úres_regrg   r=   r.   rµ   )rH   rS   Úkvarsr1   r1   r2   ri   ×  s      ÿz CheckL1Compatability.test_paramsc                 C   sB   | j }t| j ¡ d |…d |…f | j ¡ d |…d |…f tƒ d S r&   )rS   r   rA  rs   rB  Ú	DECIMAL_1)rH   rS   r1   r1   r2   rv   à  s    ýz$CheckL1Compatability.test_cov_paramsc                 C   s(   t | jj| jjƒ t | jj| jjƒ d S r&   )r   rA  r‰   rB  rŠ   rh   r1   r1   r2   Útest_dfè  s    zCheckL1Compatability.test_dfc                 C   sÒ   | j }| j}t| ddƒ}| j t t| jjƒ¡¡}| j	 t || ¡¡}t
|jd |… |jd |… tƒ t
|jd |… |jd |… tƒ t
tj|j| ƒ t|jd |… |jd |… dd� t
tj|j| ƒ d S )NÚk_extrar   gú~j¼t“h?©r  )rS   rC  ÚgetattrrA  Út_testr+   Úeyer›   r>   rB  r   Úeffectr|   ÚsdÚnanr   Útvalue)rH   rS   rC  ÚextraÚt_unregÚt_regr1   r1   r2   Útest_t_testì  s      "z CheckL1Compatability.test_t_testc                 C   s€   | j }| j}t| ddƒ}| j t t| jjƒ¡d |… ¡}| j	 t || ¡d |… ¡}t
|j|jddd� t|j|jtƒ d S )NrF  r   giUMuÿ>çü©ñÒMbP?r  )rS   rC  rH  rA  Úf_testr+   rJ  r›   r>   rB  r   Zfvaluer   Úpvaluer|   )rH   rS   rC  rO  Zf_unregZf_regr1   r1   r2   Útest_f_testù  s    "z CheckL1Compatability.test_f_testc                 C   s    | j }tt| jjt |¡ƒ d S r&   )rC  r	   r^   rB  rT  r+   rJ  )rH   rC  r1   r1   r2   Útest_bad_r_matrix  s    z&CheckL1Compatability.test_bad_r_matrixN)
ra   rb   rc   r£   ri   rv   rE  rR  rV  rW  r1   r1   r1   r2   r@  Ñ  s   	
r@  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestPoissonL1Compatabilityc                 C   s¼   d| _ d| _tƒ }|j t¡ t|jƒd¡}tj	|dd�}|d d …d | j…f }t 
|j|¡}|jddd�| _dt|jƒ t | j ¡ }d	|d | j…< t 
|j|¡jd
|ddddd�| _d S )Nr!   é   r'  Trß   rá   Frâ   r   r  r9   éÐ  r  r4  )rC  rS   r8   r.   Úviewr7   Úreshaper›   r'   rå   r   r-   ræ   rA  r+   rì   r_   rB  )ré   Ú	rand_dataÚ	rand_exogÚexog_no_PSIÚ	mod_unregr  r1   r1   r2   rê   
  s$        þz&TestPoissonL1Compatability.setup_classNró   r1   r1   r1   r2   rX    s   rX  c                   @   s   e Zd Zedd„ ƒZdS )Ú#TestNegativeBinomialL1Compatabilityc                 C   sê   d| _ d| _tƒ }|j t¡ t|jƒd¡}|| d¡ | 	d¡ }t
j|dd�}|d d …d | j…f }t
 |j|¡}|jddd	�| _dt|jƒ t | j d
 ¡ }d|d | j…< d|d< t
 |j|¡}|jd|ddddd�| _d
| _d S )Nr!   rY  r'  r   Trß   rá   Frâ   r   r  r9   rZ  r  r4  )rC  rS   r8   r.   r[  r7   r\  r›   rR   Ústdr'   rå   r   r-   ræ   rA  r+   rì   r_   rB  rF  ©ré   r]  r^  Zrand_exog_str_  r`  r  Úmod_regr1   r1   r2   rê     s,        þz/TestNegativeBinomialL1Compatability.setup_classNró   r1   r1   r1   r2   ra    s   ra  c                   @   s   e Zd Zedd„ ƒZdS )Ú&TestNegativeBinomialGeoL1Compatabilityc                 C   sÔ   d| _ d| _tƒ }|j t¡ t|jƒd¡}tj	|dd�}|d d …d | j…f }tj
|j|dd�}|jdd	d
�| _dt|jƒ t | j ¡ }d|d | j…< tj
|j|dd�}|jd|d	dddd�| _t|jdƒ d S )Nr!   rY  r'  Trß   Ú	geometric©Úloglike_methodrá   Frâ   r   r  r9   rZ  r  r4  )rC  rS   r8   r.   r[  r7   r\  r›   r'   rå   r   r-   ræ   rA  r+   rì   r_   rB  r   rh  )ré   r]  r^  r_  r`  r  rd  r1   r1   r2   rê   9  s0    
ÿ
ÿ    þz2TestNegativeBinomialGeoL1Compatability.setup_classNró   r1   r1   r1   r2   re  7  s   re  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestLogitL1Compatabilityc                 C   sŒ   d| _ d| _tƒ }tj|jdd�|_t ddddg¡}t|j	|jƒj
d|ddd	d
d�| _|jd d …d | j…f }t|j	|ƒjddd�| _d S ©Nr#   r$   Trß   r   r!   r  çVçž¯Ò<rZ  r  r4  ©rã   r  )rC  rS   r5   r'   rå   r.   r+   r"  r   r-   r_   rB  ræ   rA  ©ré   r0   r  r_  r1   r1   r2   rê   S  s        þz$TestLogitL1Compatability.setup_classNró   r1   r1   r1   r2   ri  Q  s   ri  c                   @   s4   e Zd Zedd„ ƒZdd„ Zej d¡dd„ ƒZ	dS )	ÚTestMNLogitL1Compatabilityc                 C   s�   d| _ d| _tƒ }tj|jdd�|_t ddddg¡}t|j	|jƒj
d|ddd	d
d�| _|jd d …d | j…f }t|j	|ƒjddddd�| _d S )Nr#   r$   Trß   r   r!   r  rk  rZ  r  r4  rò   rþ   ©rã   rÿ   r[   rø   )rC  rS   r5   r'   rå   r.   r+   r"  r   r-   r_   rB  ræ   rA  rm  r1   r1   r2   rê   e  s(        þ   ÿz&TestMNLogitL1Compatability.setup_classc                 C   sŽ   | j }| j}| j t |¡¡}| j t |¡¡}t|j|jd |… t	ƒ t|j
|j
d |… t	ƒ ttj|j
| ƒ t|j|jd |… t	ƒ d S r&   )rS   rC  rA  rI  r+   rJ  rB  r   rK  r|   rL  rM  rN  )rH   rS   rC  rP  rQ  r1   r1   r2   rR  t  s    z&TestMNLogitL1Compatability.test_t_testzSkipped test_f_test for MNLogitc                 C   s   d S r&   r1   rh   r1   r1   r2   rV  ~  s    z&TestMNLogitL1Compatability.test_f_testN)
ra   rb   rc   rï   rê   rR  r\   r¤   ru   rV  r1   r1   r1   r2   rn  c  s
   


rn  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestProbitL1Compatabilityc                 C   sŒ   d| _ d| _tƒ }tj|jdd�|_t ddddg¡}t|j	|jƒj
d|ddd	d
d�| _|jd d …d | j…f }t|j	|ƒjddd�| _d S rj  )rC  rS   r5   r'   rå   r.   r+   r"  r   r-   r_   rB  ræ   rA  rm  r1   r1   r2   rê   …  s        þz%TestProbitL1Compatability.setup_classNró   r1   r1   r1   r2   rp  ƒ  s   rp  c                   @   s   e Zd ZdZdd„ ZdS )Ú	CompareL1zƒ
    For checking results for l1 regularization.
    Assumes self.res1 and self.res2 are two legitimate models to be compared.
    c                 C   sì   t | jj| jjtƒ t | j ¡ | j ¡ tƒ t | j ¡ | j ¡ tƒ t | jj| jjtƒ t | j ¡ | j ¡ tƒ t | jj	| jj	tƒ t | jj
| jj
tƒ t | jj| jjtƒ t | jj| jjtƒ t | jj| jjtƒ t| jjd dkƒ d S )NÚ	convergedT)r   r<   r>   rf   rg   rs   rk   rq   r§   r‡   rw   r�   r�   r   r  rh   r1   r1   r2   Útest_basic_results™  s"    ÿÿÿzCompareL1.test_basic_resultsN)ra   rb   rc   r£   rs  r1   r1   r1   r2   rq  ”  s   rq  c                   @   s   e Zd ZdZdd„ ZdS )ÚCompareL11Dz?
    Check t and f tests.  This only works for 1-d results
    c                 C   sZ   t  t| jj ¡ ƒ¡}t| j |¡j| j	 |¡jt
ƒ t| j |¡j| j	 |¡jt
ƒ d S r&   )r+   rJ  r›   r<   r>   Zravelr   rI  rU  rf   rg   rT  )rH   Zrestrictmatr1   r1   r2   Ú
test_tests¯  s     ÿ ÿzCompareL11D.test_testsN)ra   rb   rc   r£   ru  r1   r1   r1   r2   rt  «  s   rt  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestL1AlphaZeroLogitc              	   C   sZ   t ƒ }tj|jdd�|_t|j|jƒjdddddddd	�| _t|j|jƒjddd
�| _	d S ©NTrß   r  r   rk  rþ   r  r5  ©r[   r  rã   r!  rø   r  r   rl  )
r5   r'   rå   r.   r   r-   r_   r<   ræ   rf   r;  r1   r1   r2   rê   º  s         þz TestL1AlphaZeroLogit.setup_classc              	   C   s2   | j jjdddddddd�}t|jd d	kƒ d S )
Nr  r   rk  r   r  r5  rx  rr  F)r<   r=   r_   r   r  )rH   rI   r1   r1   r2   Útest_convergedÃ  s         þz#TestL1AlphaZeroLogit.test_convergedN)ra   rb   rc   rï   rê   ry  r1   r1   r1   r2   rv  ·  s   
rv  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestL1AlphaZeroProbitc              	   C   sZ   t ƒ }tj|jdd�|_t|j|jƒjdddddddd	�| _t|j|jƒjddd
�| _	d S rw  )
r5   r'   rå   r.   r   r-   r_   r<   ræ   rf   r;  r1   r1   r2   rê   Ï  s         þz!TestL1AlphaZeroProbit.setup_classNró   r1   r1   r1   r2   rz  Ì  s   rz  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestL1AlphaZeroMNLogitc              	   C   s^   t ƒ }tj|jdd�|_t|j|jƒjdddddddd	�| _t|j|jƒjddd
dd�| _	d S )NFrß   r  r   rk  rþ   r  r5  rx  rò   ro  )
r3   r'   rå   r.   r   r-   r_   r<   ræ   rf   r;  r1   r1   r2   rê   Û  s         þþz"TestL1AlphaZeroMNLogit.setup_classNró   r1   r1   r1   r2   r{  Ù  s   r{  c                   @   sH   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚTestLogitNewtonc                 C   sB   t ƒ }tj|jdd�|_t|j|jƒjddd�| _tj	}|| _
d S rÞ   )r5   r'   rå   r.   r   r-   ræ   r<   r   r.  rf   rè   r1   r1   r2   rê   é  s
    zTestLogitNewton.setup_classc                 C   s   t | jj| jjdƒ d S ©Nr
  ©r   r<   Zresid_pearsonrf   rh   r1   r1   r2   Útest_resid_pearsonñ  s     ÿz"TestLogitNewton.test_resid_pearsonc                 C   s<   | j jdddœd�}t|j| jjtƒ t|j| jjtƒ d S )Nç       @r-  ©r   r%   ©Úatexog©	r<   r°   r   r±   rf   Zmargeff_nodummy_atexog1rg   r²   Zmargeff_nodummy_atexog1_ser»   r1   r1   r2   Útest_nodummy_exog1õ  s     ÿ ÿz"TestLogitNewton.test_nodummy_exog1c                 C   s>   | j jdddœdd�}t|j| jjtƒ t|j| jjtƒ d S )Nç      5@r   ©r   r%   rR   ©rƒ  rº   ©	r<   r°   r   r±   rf   Zmargeff_nodummy_atexog2rg   r²   Zmargeff_nodummy_atexog2_ser»   r1   r1   r2   Útest_nodummy_exog2ü  s     ÿ ÿz"TestLogitNewton.test_nodummy_exog2c                 C   s>   | j jdddœdd�}t|j| jjtƒ t|j| jjtƒ d S )Nr€  r-  r�  T©rƒ  rÓ   ©	r<   r°   r   r±   rf   Zmargeff_dummy_atexog1rg   r²   Zmargeff_dummy_atexog1_ser»   r1   r1   r2   Útest_dummy_exog1  s     ÿ ÿz TestLogitNewton.test_dummy_exog1c                 C   s@   | j jdddœddd�}t|j| jjtƒ t|j| jjtƒ d S )Nr†  r   r‡  rR   T©rƒ  rº   rÓ   ©	r<   r°   r   r±   rf   Zmargeff_dummy_atexog2rg   r²   Zmargeff_dummy_atexog2_ser»   r1   r1   r2   Útest_dummy_exog2
  s    ÿ ÿ ÿz TestLogitNewton.test_dummy_exog2c                 C   sâ   d}d}d}d}dd l m  m} | j ¡ }| jjj}t |d| f¡}t |d| f¡}	dddddg}
t 	|
¡d d	… }|j
||	||d d
�}t|j|dd� t|j|ƒ t|j|dd� t|jj|dfƒ t|j d¡|
ƒ d S )Nr
  g·'8ú?gÿ!ýöuàä?r$   r   r   rY  r¯   r'  )Zsort_varZbinsÚdfg•dyáý¥=r:   giUMu?rG  r%   )Z statsmodels.stats.diagnostic_genr   Zdiagnostic_genr<   rQ   r=   r-   r+   rD   ZcumsumZtest_chisquare_binningr   Ú	statisticr   r‘  rU  Zfreqsrµ   r?   )rH   Zn_groupsÚchi2rU  r‘  ZdiaZfittedÚenÚcountsÚexpectedZgroup_sizesÚindicesrI   r1   r1   r2   Útest_diagnostic  s(    


 ÿzTestLogitNewton.test_diagnosticN)ra   rb   rc   rï   rê   r  r…  rŠ  r�  r�  r˜  r1   r1   r1   r2   r|  ç  s   
r|  c                   @   s@   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚTestLogitNewtonPrependc                 C   s^   t ƒ }tj|jdd�|_t|j|jƒjddd�| _tj	}|| _
t t t| jjƒ¡d¡| _d S )NTrß   rá   r   râ   r   )r5   r'   rå   r.   r   r-   ræ   r<   r   r.  rf   r+   ZrollÚaranger›   r>   Úslicerè   r1   r1   r2   rê   0  s    z"TestLogitNewtonPrepend.setup_classc                 C   s   t | jj| jjdƒ d S r}  r~  rh   r1   r1   r2   r  9  s     ÿz)TestLogitNewtonPrepend.test_resid_pearsonc                 C   s<   | j jdddœd�}t|j| jjtƒ t|j| jjtƒ d S )Nr€  r-  ©r   r$   r‚  r„  r»   r1   r1   r2   r…  =  s     ÿ ÿz)TestLogitNewtonPrepend.test_nodummy_exog1c                 C   s>   | j jdddœdd�}t|j| jjtƒ t|j| jjtƒ d S )Nr†  r   ©r%   r$   rR   rˆ  r‰  r»   r1   r1   r2   rŠ  D  s     ÿ ÿz)TestLogitNewtonPrepend.test_nodummy_exog2c                 C   s>   | j jdddœdd�}t|j| jjtƒ t|j| jjtƒ d S )Nr€  r-  rœ  Tr‹  rŒ  r»   r1   r1   r2   r�  K  s     ÿ ÿz'TestLogitNewtonPrepend.test_dummy_exog1c                 C   s@   | j jdddœddd�}t|j| jjtƒ t|j| jjtƒ d S )Nr†  r   r�  rR   TrŽ  r�  r»   r1   r1   r2   r�  R  s    ÿ ÿ ÿz'TestLogitNewtonPrepend.test_dummy_exog2N)
ra   rb   rc   rï   rê   r  r…  rŠ  r�  r�  r1   r1   r1   r2   r™  ,  s   
r™  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestLogitBFGSc                 C   sB   t ƒ }tj|jdd�|_tj}|| _t|j|jƒj	ddd�| _
d S rñ   )r5   r'   rå   r.   r   r.  rf   r   r-   ræ   r<   rè   r1   r1   r2   rê   ]  s
    zTestLogitBFGS.setup_classNró   r1   r1   r1   r2   rž  [  s   rž  c                       sX   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Ze	j
jddd�‡ fdd„ƒZ‡  ZS )ÚTestPoissonNewtonc                 C   s>   t ƒ }tj|jdd�}t|j|ƒjddd�| _tj	}|| _
d S rÞ   )r8   r'   rå   r.   r   r-   ræ   r<   r   Úpoissonrf   ©ré   r0   r.   rf   r1   r1   r2   rê   h  s
    zTestPoissonNewton.setup_classc                 C   s2   | j  ¡ }t|j| jjtƒ t|j| jjtƒ d S r&   )	r<   r°   r   r±   rf   Zmargeff_nodummy_overallrg   r²   Zmargeff_nodummy_overall_ser»   r1   r1   r2   Útest_margeff_overallp  s    
 ÿ ÿz&TestPoissonNewton.test_margeff_overallc                 C   s6   | j jdd�}t|j| jjtƒ t|j| jjtƒ d S rÑ   )	r<   r°   r   r±   rf   Zmargeff_dummy_overallrg   r²   Zmargeff_dummy_overall_ser»   r1   r1   r2   Útest_margeff_dummy_overallw  s     ÿ ÿz,TestPoissonNewton.test_margeff_dummy_overallc                 C   s   t | jj| jjdƒ d S )Nr%   )r   r<   Úresidrf   rh   r1   r1   r2   Ú
test_resid~  s    zTestPoissonNewton.test_residc                 C   sT   t j t j t¡¡}t j |dd¡}tj|dd�}| j 	¡ d d… }t
||dƒ d S )NÚresultszpredict_prob_poisson.csvú,)Ú	delimiterr  é   )ÚosÚpathÚdirnameÚabspathÚ__file__Újoinr+   Zloadtxtr<   Zpredict_probr   )rH   Úcur_dirr«  Z	probs_resÚprobsr1   r1   r2   Útest_predict_prob�  s
    z#TestPoissonNewton.test_predict_probú+res2.cov_params is a zero-dim array of NoneT©r�   r‚   c                    s   t t| ƒ ¡  d S r&   )ÚsuperrŸ  rv   rh   ©Ú	__class__r1   r2   rv   Š  s    z!TestPoissonNewton.test_cov_params)ra   rb   rc   rï   rê   r¢  r£  r¥  r²  r\   r¤   r¥   rv   Ú__classcell__r1   r1   r¶  r2   rŸ  f  s   
	ÿrŸ  c                   @   s&   e Zd Zejjdded�dd„ ƒZdS )ÚCheckNegBinMixinz.pvalues do not match, in some cases wrong sizeTr€   c                 C   s   t | jj| jjtƒ d S r&   rp   rh   r1   r1   r2   rr   “  s    þzCheckNegBinMixin.test_pvaluesN)ra   rb   rc   r\   r¤   r¥   rž   rr   r1   r1   r1   r2   r¹  �  s
    ÿr¹  c                   @   sX   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestNegativeBinomialNB2Newtonc                 C   s@   t ƒ }tj|jdd�}t|j|dƒjddd�| _tj	}|| _
d S )NFrß   Únb2rá   r   râ   ©r8   r'   rå   r.   r   r-   ræ   r<   r   Únegativebinomial_nb2_bfgsrf   r¡  r1   r1   r2   rê   �  s
    z)TestNegativeBinomialNB2Newton.setup_classc                 C   s   t | jj| jjtƒ d S r&   ©r   r<   r‡   rf   r|   rh   r1   r1   r2   rˆ   ¦  s    z&TestNegativeBinomialNB2Newton.test_bsec                 C   s   t | jj| jjtƒ d S r&   re   rh   r1   r1   r2   ri   ©  s    z)TestNegativeBinomialNB2Newton.test_paramsc                 C   s4   | j j t| j j| jjtƒ t| j j| jjtƒ d S r&   ©r<   r‡   r   Úlnalpharf   rg   Úlnalpha_std_errrh   r1   r1   r2   Ú
test_alpha¬  s    ÿ ÿz(TestNegativeBinomialNB2Newton.test_alphac                 C   s   t | j ¡ | jjtƒ d S r&   ©r   r<   rk   rf   r|   rh   r1   r1   r2   rl   ³  s    ÿz+TestNegativeBinomialNB2Newton.test_conf_intc                 C   s    t | jjd d… | jjtƒ d S ©Nr'  ©r   r<   rq   rf   Ú	DECIMAL_2rh   r1   r1   r2   ro   ·  s    ÿz(TestNegativeBinomialNB2Newton.test_zstatc                 C   s(   t | jjd d… | jjd d… tƒ d S ©Nr!   ©r   r<   Úfittedvaluesrf   r|   rh   r1   r1   r2   Útest_fittedvalues»  s     ÿz/TestNegativeBinomialNB2Newton.test_fittedvaluesc                 C   s0   t | j ¡ d d… t | jjd d… ¡tƒ d S rÇ  ©r   r<   rQ   r+   Úexprf   rÉ  r|   rh   r1   r1   r2   r’   ¿  s     ÿz*TestNegativeBinomialNB2Newton.test_predictc                 C   s.   t | jjdd�d d… | jjd d… tƒ d S ©Nr“   rN   r!   ©r   r<   rQ   rf   rÉ  r|   rh   r1   r1   r2   r”   Ã  s     ÿz-TestNegativeBinomialNB2Newton.test_predict_xbN©ra   rb   rc   rï   rê   rˆ   ri   rÂ  rl   ro   rÊ  r’   r”   r1   r1   r1   r2   rº  ›  s   
rº  c                   @   sl   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Ze	j
jdded�dd„ ƒZe	j
jdded�dd„ ƒZdS )ÚTestNegativeBinomialNB1Newtonc                 C   sF   t ƒ }tj|jdd�}t|j|dƒ}|jdddd�| _tj	}|| _
d S )NFrß   Únb1rá   r  r   ©r[   rø   rã   ©r8   r'   rå   r.   r   r-   ræ   r<   r   Únegativebinomial_nb1_bfgsrf   )ré   r0   r.   r=   rf   r1   r1   r2   rê   Ê  s    z)TestNegativeBinomialNB1Newton.setup_classc                 C   s   t | jj| jjtƒ d S r&   ©r   r<   rm   rf   rn   rD  rh   r1   r1   r2   ro   Ó  s    z(TestNegativeBinomialNB1Newton.test_zstatc                 C   s4   | j j t| j j| jjdƒ t| j j| jjtƒ d S ©Nr$   ©r<   r‡   r   rÀ  rf   rÁ  rg   rh   r1   r1   r2   Útest_lnalphaÖ  s     ÿz*TestNegativeBinomialNB1Newton.test_lnalphac                 C   s   t | jj| jjtƒ d S r&   re   rh   r1   r1   r2   ri   Ü  s    z)TestNegativeBinomialNB1Newton.test_paramsc                 C   s   t | j ¡ | jjtƒ d S r&   ©r   r<   rk   rf   rÆ  rh   r1   r1   r2   rl   ß  s    ÿz+TestNegativeBinomialNB1Newton.test_conf_intr   Tr€   c                 C   s   t ‚d S r&   rƒ   rh   r1   r1   r2   r’   å  s    z*TestNegativeBinomialNB1Newton.test_predictc                 C   s   t ‚d S r&   rƒ   rh   r1   r1   r2   r”   ê  s    z-TestNegativeBinomialNB1Newton.test_predict_xbN©ra   rb   rc   rï   rê   ro   rØ  ri   rl   r\   r¤   r¥   r„   r’   r”   r1   r1   r1   r2   rÐ  È  s    
 ÿ
 ÿrÐ  c                   @   sX   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestNegativeBinomialNB2BFGSc                 C   sB   t ƒ }tj|jdd�}t|j|dƒjdddd�| _tj	}|| _
d S )NFrß   r»  rò   r   rþ   r÷   r¼  r¡  r1   r1   r2   rê   ò  s     þz'TestNegativeBinomialNB2BFGS.setup_classc                 C   s   t | jj| jjtƒ d S r&   r¾  rh   r1   r1   r2   rˆ   ý  s    z$TestNegativeBinomialNB2BFGS.test_bsec                 C   s   t | jj| jjtƒ d S r&   re   rh   r1   r1   r2   ri      s    z'TestNegativeBinomialNB2BFGS.test_paramsc                 C   s4   | j j t| j j| jjtƒ t| j j| jjtƒ d S r&   r¿  rh   r1   r1   r2   rÂ    s    ÿ ÿz&TestNegativeBinomialNB2BFGS.test_alphac                 C   s   t | j ¡ | jjtƒ d S r&   rÃ  rh   r1   r1   r2   rl   
  s    ÿz)TestNegativeBinomialNB2BFGS.test_conf_intc                 C   s    t | jjd d… | jjtƒ d S rÄ  rÅ  rh   r1   r1   r2   ro     s    ÿz&TestNegativeBinomialNB2BFGS.test_zstatc                 C   s(   t | jjd d… | jjd d… tƒ d S rÇ  rÈ  rh   r1   r1   r2   rÊ    s     ÿz-TestNegativeBinomialNB2BFGS.test_fittedvaluesc                 C   s0   t | j ¡ d d… t | jjd d… ¡tƒ d S rÇ  rË  rh   r1   r1   r2   r’     s     ÿz(TestNegativeBinomialNB2BFGS.test_predictc                 C   s.   t | jjdd�d d… | jjd d… tƒ d S rÍ  rÎ  rh   r1   r1   r2   r”     s     ÿz+TestNegativeBinomialNB2BFGS.test_predict_xbNrÏ  r1   r1   r1   r2   rÛ  ð  s   

rÛ  c                   @   sl   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Ze	j
jdded�dd„ ƒZe	j
jdded�dd„ ƒZdS )ÚTestNegativeBinomialNB1BFGSc                 C   sB   t ƒ }tj|jdd�}t|j|dƒjdddd�| _tj	}|| _
d S )NFrß   rÑ  rò   r  r   rÒ  rÓ  r¡  r1   r1   r2   rê   !  s    þz'TestNegativeBinomialNB1BFGS.setup_classc                 C   s   t | jj| jjtƒ d S r&   rÕ  rh   r1   r1   r2   ro   +  s    z&TestNegativeBinomialNB1BFGS.test_zstatc                 C   s4   | j j t| j j| jjdƒ t| j j| jjtƒ d S rÖ  r×  rh   r1   r1   r2   rØ  .  s     ÿz(TestNegativeBinomialNB1BFGS.test_lnalphac                 C   s   t | jj| jjtƒ d S r&   re   rh   r1   r1   r2   ri   4  s    z'TestNegativeBinomialNB1BFGS.test_paramsc                 C   s   t | j ¡ | jjtƒ d S r&   rÙ  rh   r1   r1   r2   rl   7  s    ÿz)TestNegativeBinomialNB1BFGS.test_conf_intr   Tr€   c                 C   s   t ‚d S r&   rƒ   rh   r1   r1   r2   r’   =  s    z(TestNegativeBinomialNB1BFGS.test_predictc                 C   s   t ‚d S r&   rƒ   rh   r1   r1   r2   r”   B  s    z+TestNegativeBinomialNB1BFGS.test_predict_xbNrÚ  r1   r1   r1   r2   rÜ    s    
	 ÿ
 ÿrÜ  c                   @   sp   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú!TestNegativeBinomialGeometricBFGSc                 C   sD   t ƒ }tj|jdd�}t|j|dƒ}|jddd�| _tj	}|| _
d S )NFrß   rf  rò   r   râ   )r8   r'   rå   r.   r   r-   ræ   r<   r   Znegativebinomial_geometric_bfgsrf   ©ré   r0   r.   Úmodrf   r1   r1   r2   rê   N  s    z-TestNegativeBinomialGeometricBFGS.setup_classc                 C   s   t | jj| jjtƒ d S r&   rŒ   rh   r1   r1   r2   rŽ   Y  s    z*TestNegativeBinomialGeometricBFGS.test_aicc                 C   s   t | jj| jjtƒ d S r&   r�   rh   r1   r1   r2   r‘   \  s    z*TestNegativeBinomialGeometricBFGS.test_bicc                 C   s   t | j ¡ | jjtƒ d S r&   rÃ  rh   r1   r1   r2   rl   _  s    ÿz/TestNegativeBinomialGeometricBFGS.test_conf_intc                 C   s(   t | jjd d… | jjd d… tƒ d S rÇ  rÈ  rh   r1   r1   r2   rÊ  c  s     ÿz3TestNegativeBinomialGeometricBFGS.test_fittedvaluesc                 C   s0   t | j ¡ d d… t | jjd d… ¡tƒ d S rÇ  rË  rh   r1   r1   r2   r’   g  s     ÿz.TestNegativeBinomialGeometricBFGS.test_predictc                 C   s   t | jj| jjtƒ d S r&   )r   r<   r>   rf   r|   rh   r1   r1   r2   ri   k  s    z-TestNegativeBinomialGeometricBFGS.test_paramsc                 C   s.   t | jjdd�d d… | jjd d… tƒ d S rÍ  rÎ  rh   r1   r1   r2   r”   n  s     ÿz1TestNegativeBinomialGeometricBFGS.test_predict_xbc                 C   s   t | jj| jjtƒ d S r&   rÕ  rh   r1   r1   r2   ro   r  s    z,TestNegativeBinomialGeometricBFGS.test_zstatc                 C   s   t | jj| jjtƒ d S r&   )r   r<   rw   rf   rD  rh   r1   r1   r2   rx   u  s    z*TestNegativeBinomialGeometricBFGS.test_llfc                 C   s   t | jj| jjtƒ d S r&   )r   r<   r{   rf   rÆ  rh   r1   r1   r2   r}   x  s    z*TestNegativeBinomialGeometricBFGS.test_llrc                 C   s   t | jj| jjtƒ d S r&   r¾  rh   r1   r1   r2   rˆ   {  s    z*TestNegativeBinomialGeometricBFGS.test_bseN)ra   rb   rc   rï   rê   rŽ   r‘   rl   rÊ  r’   ri   r”   ro   rx   r}   rˆ   r1   r1   r1   r2   rÝ  H  s   

rÝ  c                       sŠ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
ejjddd�‡ fdd„ƒZejjdded�‡ fdd„ƒZ‡  ZS )ÚCheckMNLogitBaseZeroc                 C   sz   | j  ¡ }t|j| jjdƒ t|j| jjdƒ | ¡ }|d j	j
|jjdd�}t||jdd� t|jt |j¡dfƒ d S )Nr¯   r­   ÚF)Úorderr®   r:   )r<   r°   r   r±   rf   Zmargeff_dydx_overallr²   Zmargeff_dydx_overall_ser³   r´   r\  rµ   r   r   r+   r�   r¶   r1   r1   r2   r¢  �  s    
z)CheckMNLogitBaseZero.test_margeff_overallc                 C   s6   | j jdd�}t|j| jjdƒ t|j| jjdƒ d S )NrR   r¹   rY  )r<   r°   r   r±   rf   Zmargeff_dydx_meanr²   Zmargeff_dydx_mean_ser»   r1   r1   r2   Útest_margeff_meanŠ  s    z&CheckMNLogitBaseZero.test_margeff_meanc                 C   sª   | j }|j d }t |j|f¡}tj|dd�}t|j|ƒjddd�}|j	dd�}t
|j| jjd	ƒ t
|j| jjd	ƒ |j	dd
d�}t
|j| jjdƒ t
|j| jjd	ƒ d S )NÚvoteFrß   rá   r   râ   TrÒ   r¯   rÇ   )rÓ   r[   r
  )r0   r+   rD   r.   r'   rå   r   r-   ræ   r°   r   r±   rf   Zmargeff_dydx_dummy_overallr²   Zmargeff_dydx_dummy_overall_seZmargeff_eydx_dummy_overallZmargeff_eydx_dummy_overall_se)rH   r0   rä  r.   rI   r·   r1   r1   r2   Útest_margeff_dummy�  s*    
ÿ ÿÿ ÿz'CheckMNLogitBaseZero.test_margeff_dummyc                 C   s   t | jjj| jjƒ d S r&   )r   r<   r=   r(  rf   rh   r1   r1   r2   Útest_j   s    zCheckMNLogitBaseZero.test_jc                 C   s   t | jjj| jjƒ d S r&   )r   r<   r=   r)  rf   rh   r1   r1   r2   Útest_k£  s    zCheckMNLogitBaseZero.test_kc                 C   s(   t | j d d ¡d ddddddgƒ d S )Nr   zy=1zy=2zy=3zy=4zy=5zy=6)r   r<   Z_get_endog_namerh   r1   r1   r2   Útest_endog_names¦  s    ÿz%CheckMNLogitBaseZero.test_endog_namesc              °  C   s   dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd�g°}t | j ¡  d¡|ƒ t | j ¡  d¡t |¡ƒ dddd	d	d
dgdddd	d	dd
gdddd	d	ddgd
ddd	d	ddgdddd	d	ddgdddd	d	ddgdddd	d	ddgg}t | j ¡ |ƒ d S )Nr¯   r   r   r
  r%   g     €_@g     €D@r€  r,  g      (@g      3@g     @S@g     @R@r3  g      .@g     €B@g     €E@g      @g      "@r-  g      @r&  ç      4@g      6@ç      9@g      ?@g     ÀQ@g      2@g     €a@)r   r<   rQ   Zargmaxr§   r?   r+   Úbincount)rH   Úpredr1   r1   r2   r¨   ª  sP   *                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Ô-úz$CheckMNLogitBaseZero.test_pred_tablec                 C   s   t | jj| jjƒ d S r&   )r   r<   Zresid_misclassifiedrf   r¤  rh   r1   r1   r2   r¥  é  s    zCheckMNLogitBaseZero.test_residr³  Tr´  c                    s   t t| ƒ ¡  d S r&   )rµ  rà  rv   rh   r¶  r1   r2   rv   ì  s    z$CheckMNLogitBaseZero.test_cov_paramsr   r€   c                    s   t ƒ  ¡  d S r&   )rµ  r¢   rh   r¶  r1   r2   r¢   ñ  s    zCheckMNLogitBaseZero.test_distr)ra   rb   rc   r¢  rã  rå  ræ  rç  rè  r¨   r¥  r\   r¤   r¥   rv   r„   r¢   r¸  r1   r1   r¶  r2   rà    s"   	?ÿ ÿrà  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestMNLogitNewtonBaseZeroc                 C   sH   t ƒ  | _}|j}tj|dd�}t|j|ƒjddd�| _t	j
}|| _d S rÞ   )r3   r0   r.   r'   rå   r   r-   ræ   r<   r   Úmnlogit_basezerorf   r¡  r1   r1   r2   rê   ø  s    z%TestMNLogitNewtonBaseZero.setup_classNró   r1   r1   r1   r2   rí  ÷  s   rí  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestMNLogitLBFGSBaseZeroc              	   C   sX   t ƒ  | _}|j}tj|dd�}t|j|ƒ}|jdddddd|jd	�| _	t
j}|| _d S )
NFrß   Zlbfgsr   iPÃ  é(   r9   g      @)r[   rã   rø   rS   ZpgtolZfactrÚloglike_and_score)r3   r0   r.   r'   rå   r   r-   ræ   rñ  r<   r   rî  rf   )ré   r0   r.   Zmymodelrf   r1   r1   r2   rê     s    
  ûz$TestMNLogitLBFGSBaseZero.setup_classNró   r1   r1   r1   r2   rï    s   rï  c                  C   sV   dd„ } t j ddd¡}t j ddd¡}t|t |¡ƒ}|jdd� |jd| d	� d S )
Nc                  W   s   dS )Nr   r1   )Úargsr1   r1   r2   Úcallb  s    z(test_mnlogit_basinhopping.<locals>.callbr   r  rþ   r$   r	  rZ   )r[   Úcallback)r+   r  Úrandintr   r'   rå   ræ   )ró  ÚxÚyr=   r1   r1   r2   Útest_mnlogit_basinhopping  s    rø  c               	   C   s  t j t j t¡¡} t j | ddddd¡}t j |¡}tjt j |d¡ddd�}|d d …d	f }|d d …d d	…f }||d
k }||d
k }tj	|dd�}t
||ƒ}d|_tt|jdd� d|_t t¡� |jddd�}W 5 Q R X t|jd  ƒ |jdddd� d S )Nz..ZgenmodÚtestsr¦  ziris.csvr§  r   )r¨  Zskip_headerr'  r%   Trß   rþ   )rø   Fé2   )rã   rø   rr  rò   r÷   )rª  r«  r¬  r­  r®  r¯  r+   Z
genfromtxtr'   rå   r   Zraise_on_perfect_predictionr	   r   ræ   r\   rí   r   r   r  )r°  Ziris_dirZirisr÷  ÚXrß  rI   r1   r1   r2   Útest_perfect_prediction   s&    ÿ
rü  c                  C   sª   t ƒ } tj| jdd�}t | j|¡jddd�}| ¡ }| |¡}t||ƒ |j|ddd�}t||ƒ |j|ddd�}td| |ƒ |j|t	 
d¡dd�}td| |ƒ d S )	NTrß   rá   r   râ   r   )ÚoffsetÚexposurer%   )r8   r'   rå   r.   r   r-   ræ   rQ   r   r+   Úlog)r0   r.   rI   Zpred1Úpred2Zpred3r1   r1   r2   Útest_poisson_predict9  s    


r  c               	   C   s’   d} t j d¡ t j | d¡}tj|dd�}t j t  | d¡¡¡}t 	||¡}t
 t¡� |jt  d¡ dd	d
�}W 5 Q R X t|jd  ƒ d S )Ni'  i) r$   Trß   r   r#   rá   r   ©r  r[   rã   rr  )r+   r  r  Úrandnr'   rå   r   rÌ  r?   r   r\   rí   r   ræ   rì   r   r  )Únobsrö  Zy_countrß  rI   r1   r1   r2   Útest_poisson_newtonJ  s    "r  c               	   C   sÎ   t ƒ } | j}|d d …d d…f }tj|dd�}t | j|¡jddd�}d | ¡  	¡  
d¡dd … ¡}tj tj t¡¡}tj |d	d
¡}t|ddd��}| ¡ }W 5 Q R X tj ||d d… ¡ | ¡  d S )Nr'  Trß   rá   r   râ   Ú
r"   r¦  zmn_logit_summary.txtÚrzutf-8)Úencoding)r3   r.   r'   rå   r   r-   ræ   r¯  rš   Úas_textÚsplitrª  r«  r¬  r­  r®  ÚopenÚreadr+   Útestingr   Zsummary2)r0   r.   r<   Zsmryr°  Ztest_case_fileÚfdZ	test_caser1   r1   r2   Útest_issue_339Y  s     r  c                  C   s‚   t ƒ } | j}|d d …d d…f }tj|dd�}t | j|¡jddd�}|d }tj 	| 
|¡jd¡ tj 	| 
|d  ¡jd¡ d S )Nr'  Trß   rá   r   râ   )r   rY  )r3   r.   r'   rå   r   r-   ræ   r+   r  r   rQ   rµ   )r0   r.   r<   rö  r1   r1   r2   Útest_issue_341l  s    r  c                	   C   sº   t jtdd�� tj ¡  W 5 Q R X t jtdd��  tjjtjjjdd�d� W 5 Q R X t 	¡ � t 
d¡ tjjdd� W 5 Q R X t  t¡�" tjjtjjjdd�dd� W 5 Q R X d S )Nz4Negative binomial dispersion parameter alpha not setrX   r-  )r  )ÚlinkÚerror)r  r  )r\   rí   ÚUserWarningr'   Zfamiliesr   Úlinksr   ÚwarningsÚcatch_warningsÚsimplefilterÚFutureWarningr1   r1   r1   r2   Ú*test_negative_binomial_default_alpha_paramx  s    $

ÿr  c                  C   sž   t j d¡} t jjdddd�| d d …df< t jjdddd�| d d …df< t jjdddd�| d d …d	f< t jjd
ddd�| d d …df< t| ƒ}t|ddgƒ d S )N©rú  r!   r   r!   rú  ©r�   r%   r¯   r   r#   éöÿÿÿ)r+   r  rõ  r   r   ©rû  Z	count_indr1   r1   r2   Útest_iscount‡  s    r  c                  C   sž   t j d¡} t jjdddd�| d d …df< t jjdddd�| d d …df< t jjdddd�| d d …d	f< t jjd
ddd�| d d …df< t| ƒ}t|d	dgƒ d S )Nr  r   r!   rú  r  r%   r   r¯   r#   r  )r+   r  rõ  r   r   r  r1   r1   r2   Útest_isdummy‘  s    r  c                  C   sN   ddddddg} t j dd¡}ttt| |ƒ ddddddg} ttt| |ƒ d S )Nr   r%   r¯   r   r9  )r+   r  r  r	   r^   r   r   )r÷  rû  r1   r1   r2   Útest_non_binary›  s
    r   c                  C   s  t jj ¡ } | j tttdƒdƒƒ¡| d< t j	| j
dd�}t  | j|¡}|jdd�}|j}| ¡ }| |jd d…d d …f ¡}| d }d |_t  ||¡}t d	d
 | j
j¡ | j¡}|jdd�}|j}	| ¡ }t|	|dd� | | j
jd d…d d …f ¡}
t|
|dd� d S )NrY  ÚABCDEFGr-   Trß   r   ©rã   r
  zPID ~ z + r9   r:   )r'   r(   r)   Úload_pandasr-   ÚreplaceÚdictÚzipr=  rå   r.   r   ræ   r>   rš   rQ   ÚilocÚnameÚsmfr*  r¯  Úcolumnsr0   r   )Údtar.   rß  rI   r>   rš   Z	predictedZendognrf   Zparams_fZpredicted_fr1   r1   r2   Útest_mnlogit_factor£  s$    r,  c                  C   s’   t jj ¡ } | j tttdƒdƒƒ¡| d< t j	| j
dd�}t  | j|¡}|jdd�}| d  d¡| d< t  | j|¡}|jdd�}t|j|jƒ d S )	NrY  r!  r-   Trß   r   r"  Úcategory)r'   r(   r)   r#  r-   r$  r%  r&  r=  rå   r.   r   ræ   Úastyper   r>   )r+  r.   rß  rI   Zres_catr1   r1   r2   Útest_mnlogit_factor_categorical¼  s    r/  c                  C   s°   ddddgdddt jgdgd t jjdd�ddddgd	œ} t | ¡}tjd
||d d�}tt	|j
ƒt jkdd� t t jjdd�¡}d|jd< tttj|j|ddg |d� d S )Nr   r%   r!   é•   r$   r#   r  ç      ø?©ÚFooÚBarÚconstantrþ  rö  ú	Foo ~ Barrþ  ©r0   rþ  zExposure is not ndarray)Úmsgr
  )r$   r4  r5  r4  )rþ  )r+   rM  r  ÚuniformÚpdÚ	DataFramer)  r   r   Útyperþ  ZndarrayZSeriesÚlocr	   r^   r'   r   r3  )Údr‘  Úmod1rþ  r1   r1   r2   Útest_formula_missing_exposureÈ  s     
þ

ÿr@  c            
      C   sÖ   dd l } ddddgddddgdgd t d¡gd ddddgd	œ}|  |¡}tjd
||d d�}t ddg¡}|j|dd�}|ddg j}t 	||¡d }t
||ƒ |j|t d¡gd dd�}|d }	t
||	ƒ d S )Nr   r   r%   r!   r0  r$   r#   r1  r2  r6  rþ  r7  r8  r“   rN   r5  r4  )rþ  rO   )Úpandasr+   rÌ  r;  r   Zfrom_formular"  rQ   r´   rG   r   )
r:  r>  r‘  r?  r>   rì  rû  r–  r   Z	expected2r1   r1   r2   Útest_predict_with_exposureÚ  s$     
þ
ÿ
rB  c                  C   s–   d} t  | ¡}d|ddg< t|t  | ¡ƒjdd�}t  ddgddgg¡}t| ¡ |ƒ t|t  | ¡ƒjdd�}t  ddgddgg¡}t| ¡ |ƒ d S )	Nr!   r   r$   r   r"  g       @r,  r€  )	r+   Úzerosr   rì   ræ   r"  r   r§   r   )r  r÷  rI   r–  r1   r1   r2   Útest_binary_pred_table_zerosø  s    
rD  c                   @   sx   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestGeneralizedPoisson_p2c                 C   sJ   t ƒ }tj|jdd�|_t|j|jdd�}|jddd�| _tj	}|| _
d S ©NFrß   r%   ©Úprá   r   râ   ©r8   r'   rå   r.   r   r-   ræ   r<   r   Zgeneralizedpoisson_gp2rf   )ré   r0   rß  rf   r1   r1   r2   rê   
  s    z%TestGeneralizedPoisson_p2.setup_classc                 C   s   t | jj| jjdd� d S ©Nr   rG  ©r   r<   r‡   rf   rh   r1   r1   r2   rˆ     s    z"TestGeneralizedPoisson_p2.test_bsec                 C   s   t | jj| jjdd� d S rJ  ©r   r<   r>   rf   rh   r1   r1   r2   ri     s    z%TestGeneralizedPoisson_p2.test_paramsc                 C   s,   t | jj| jjƒ t | jj| jjdd� d S rJ  ©r   r<   rÀ  rf   rÁ  rh   r1   r1   r2   rÂ    s
     ÿz$TestGeneralizedPoisson_p2.test_alphac                 C   s   t | j ¡ | jjdd� d S ©NrS  rG  rj   rh   r1   r1   r2   rl     s    ÿz'TestGeneralizedPoisson_p2.test_conf_intc                 C   s   t | jj| jjƒ d S r&   ©r   r<   r�   rf   rh   r1   r1   r2   rŽ   "  s    z"TestGeneralizedPoisson_p2.test_aicc                 C   s   t | jj| jjƒ d S r&   ©r   r<   r�   rf   rh   r1   r1   r2   r‘   %  s    z"TestGeneralizedPoisson_p2.test_bicc                 C   s   t | jj| jjƒ d S r&   ©r   r<   r‰   rf   rh   r1   r1   r2   rE  (  s    z!TestGeneralizedPoisson_p2.test_dfc                 C   s   t | jj| jjƒ d S r&   ©r   r<   rw   rf   rh   r1   r1   r2   rx   +  s    z"TestGeneralizedPoisson_p2.test_llfc                 C   sN   | j jt t| j jƒ¡d d… dd�}t|j| jj	ƒ t|j
| jjdd� d S )NéþÿÿÿT)Zscalarrk  rG  )r<   Z	wald_testr+   rJ  r›   r>   r   r’  rf   Zwald_statisticrU  Zwald_pvalue)rH   Úresultr1   r1   r2   Ú	test_wald.  s
    ÿz#TestGeneralizedPoisson_p2.test_waldc                 C   s0   t  | jjj¡}| j |¡}t| jj|jƒ d S r&   ©	r+   Úidentityr<   r>   r�   rI  r   rm   rN  ©rH   Zunit_matrixrI  r1   r1   r2   Útest_t4  s    z TestGeneralizedPoisson_p2.test_tc                 C   s   t | ƒ d S r&   r—   rh   r1   r1   r2   r˜   9  s    z"TestGeneralizedPoisson_p2.test_jacc                 C   s   t | jƒ d S r&   r¡   rh   r1   r1   r2   r¢   <  s    z$TestGeneralizedPoisson_p2.test_distrN)ra   rb   rc   rï   rê   rˆ   ri   rÂ  rl   rŽ   r‘   rE  rx   rU  rY  r˜   r¢   r1   r1   r1   r2   rE    s   
rE  c                   @   sX   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú"TestGeneralizedPoisson_transparamsc                 C   sF   t ƒ }tj|jdd�|_t|j|jdd�jddd�| _tj	}|| _
d S rF  rI  rè   r1   r1   r2   rê   C  s     ÿz.TestGeneralizedPoisson_transparams.setup_classc                 C   s   t | jj| jjdd� d S rJ  rK  rh   r1   r1   r2   rˆ   L  s    z+TestGeneralizedPoisson_transparams.test_bsec                 C   s   t | jj| jjdd� d S rJ  rL  rh   r1   r1   r2   ri   O  s    z.TestGeneralizedPoisson_transparams.test_paramsc                 C   s,   t | jj| jjƒ t | jj| jjdd� d S rJ  rM  rh   r1   r1   r2   rÂ  R  s
     ÿz-TestGeneralizedPoisson_transparams.test_alphac                 C   s   t | j ¡ | jjdd� d S rN  rj   rh   r1   r1   r2   rl   W  s    ÿz0TestGeneralizedPoisson_transparams.test_conf_intc                 C   s   t | jj| jjƒ d S r&   rO  rh   r1   r1   r2   rŽ   [  s    z+TestGeneralizedPoisson_transparams.test_aicc                 C   s   t | jj| jjƒ d S r&   rP  rh   r1   r1   r2   r‘   ^  s    z+TestGeneralizedPoisson_transparams.test_bicc                 C   s   t | jj| jjƒ d S r&   rQ  rh   r1   r1   r2   rE  a  s    z*TestGeneralizedPoisson_transparams.test_dfc                 C   s   t | jj| jjƒ d S r&   rR  rh   r1   r1   r2   rx   d  s    z+TestGeneralizedPoisson_transparams.test_llfN)ra   rb   rc   rï   rê   rˆ   ri   rÂ  rl   rŽ   r‘   rE  rx   r1   r1   r1   r2   rZ  @  s   
rZ  c                   @   sP   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestGeneralizedPoisson_p1c                 C   sD   t ƒ | _tj| jjdd�| j_t| jj| jjdd�jddd�| _d S )NFrß   r   rG  rá   r   râ   )	r8   r0   r'   rå   r.   r   r-   ræ   r<   r2  r1   r1   r2   rê   k  s      ÿ ÿz%TestGeneralizedPoisson_p1.setup_classc                 C   sh   t  | jj| jj¡ | jjd d… ¡}t j| jj| jjdd� t	| jjd d… ƒdg ¡}t
||ƒ d S )Nr'  r   rG  r   )r'   r   r0   r-   r.   Zlogliker<   r>   r   Úlistr   )rH   Zpoisson_llfZgenpoisson_llfr1   r1   r2   rx   r  s     ÿþ  ÿþz"TestGeneralizedPoisson_p1.test_llfc                 C   st   t  | jj| jj¡ | jjd d… ¡}t j| jj| jjdd� t	| jjd d… ƒdg ¡}t
|d d… |dd� d S )Nr'  r   rG  r   g•Ö&è.>rG  )r'   r   r0   r-   r.   r@   r<   r>   r   r\  r   ©rH   Zpoisson_scoreZgenpoisson_scorer1   r1   r2   Ú
test_score{  s     ÿþ  ÿþz$TestGeneralizedPoisson_p1.test_scorec                 C   s|   t  | jj| jj¡ | jjd d… ¡}t j| jj| jjdd� t	| jjd d… ƒdg ¡}t
|d d…d d…f |dd� d S )Nr'  r   rG  r   r9   rG  )r'   r   r0   r-   r.   rE   r<   r>   r   r\  r   r]  r1   r1   r2   Útest_hessian„  s     ÿþ  ÿþz&TestGeneralizedPoisson_p1.test_hessianc                 C   s0   t  | jjj¡}| j |¡}t| jj|jƒ d S r&   rV  rX  r1   r1   r2   rY  �  s    z TestGeneralizedPoisson_p1.test_tc                 C   s
  | j j}t t| j jƒ¡}d|dd …< |j|d dd�}|j|d dd�}|j|d dd�}t|j| j jdd� t|j| j jd	d� t| j jd d… d
  	¡ dd	d� t|jd d… d
  	¡ dd	d� t|jd d… d
  	¡ dd	d� t|jd d… d
  	¡ dd	d� d S )Nr   rS  r5  )r  rã   r  rþ   ç-Cëâ6
?rG  r   r%   gŽ.™ú�?r:   g¤ØIŠú�?g'¤’~Û…?gìM5®rK7?)
r<   r=   r+   rì   r›   r>   r_   r   r‡   rR   )rH   r=   r  Zres_reg1Zres_reg2Zres_reg3r1   r1   r2   Útest_fit_regularized’  s0     ÿ ÿ ÿ ÿz.TestGeneralizedPoisson_p1.test_fit_regularizedc                 C   s*   | j j ¡ }td|kƒ t|d dƒ d S ©NrH  r   ©r<   r=   Z_get_init_kwdsr   r   ©rH   Úkwdsr1   r1   r2   Útest_init_kwdsª  s    z(TestGeneralizedPoisson_p1.test_init_kwdsc                 C   s   t | jƒ d S r&   r¡   rh   r1   r1   r2   r¢   ¯  s    z$TestGeneralizedPoisson_p1.test_distrN)ra   rb   rc   rï   rê   rx   r^  r_  rY  ra  rf  r¢   r1   r1   r1   r2   r[  h  s   
			r[  c                   @   sH   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )Ú&TestGeneralizedPoisson_underdispersionc                 C   s¦   dddg| _ tj d¡ d}t |df¡}d|d |d …df< t | | j d d… ¡¡}tjj	j
|| j d dt|ƒd�| _tj| j|dd	�}|jd
ddddd�| _d S )Nr   ç      à¿gš™™™™™©¿éÒ  éÈ   r%   r'  r  rG  rõ   r  éˆ  r   )r[   Zxtolrø   Zmaxfunrã   )Úexpected_paramsr+   r  r  rì   rÌ  rG   r'   ÚdistributionsÚgenpoisson_pÚrvsr›   r-   r   ræ   rI   )ré   r  r.   Úmu_trueZmodel_gpr1   r1   r2   rê   µ  s     
  ÿ
 ÿz2TestGeneralizedPoisson_underdispersion.setup_classc                 C   sp   | j }|jj}t| ¡ ddd� t| ¡ ddd� t|j| jddd� t|j	d d	kƒ t|j	d
 ddd� d S )Ng¸…ëQ¸ö?rS  r:   gaTR' ‰ô?gìQ¸…ë±?r  ©r  r;   rr  TZfoptgëƒ6³ö?r5  )
rI   r=   r-   r   rR   rM   r>   rl  r   r  )rH   rI   r-   r1   r1   r2   Ú
test_basicÃ  s    z1TestGeneralizedPoisson_underdispersion.test_basicc                 C   sx   | j }|jj|jddd�}t|j |j¡t t|jƒ¡dd� t|j |j¡t t|jƒ¡dd� t|j|jdd� d S )Nrá   r   r  r5  rG  r9   r  )	rI   r=   ræ   r>   r   r@   r+   rC  r›   )rH   rI   rf   r1   r1   r2   Útest_newtonÏ  s     ÿ ÿz2TestGeneralizedPoisson_underdispersion.test_newtonc                 C   sP   t | j ¡  ¡ | j ¡ ddd� t | j ¡  ¡ | jj ¡  | j ¡ ddd� d S )Nr  rq  r  )r   rI   rQ   rR   r-   Z_dispersion_factorrM   rh   r1   r1   r2   Útest_mean_varÙ  s     ÿ  þz4TestGeneralizedPoisson_underdispersion.test_mean_varc           	      C   sÜ   | j }|jj}t | t¡¡}|jdd�}tj	j
 t d¡d d …d f | ¡ |jd d¡j}t||ddd� | d¡}|d  |jd | ¡  7  < t| ¡ | ¡ d	d
� ddlm} | ||¡}t|d d … ddd
� d S )NÚprobrN   r¯   r'  r   r9   r  r   r®   r:   r
   )g;ÆÜ›A£á?gP1/¥#¯ï?r5  )rI   r=   r-   r+   rë  r.  ÚintrQ   r'   rm  rn  Úpmfrš  r>   rF   r   r?   rµ   Úscipyr   Z	chisquare)	rH   rI   r-   ÚfreqÚprZpr2r–  r   r“  r1   r1   r2   r²  á  s$      ÿ
ÿz8TestGeneralizedPoisson_underdispersion.test_predict_probc                 C   s   t | | jd� d S )N)rI   )rL   rI   rh   r1   r1   r2   r˜   ÷  s    z/TestGeneralizedPoisson_underdispersion.test_jacc                 C   s   t | jƒ d S r&   )rV   rI   rh   r1   r1   r2   r¢   ú  s    z1TestGeneralizedPoisson_underdispersion.test_distrN)ra   rb   rc   rï   rê   rr  rs  rt  r²  r˜   r¢   r1   r1   r1   r2   rg  ³  s   

rg  c                   @   sX   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestNegativeBinomialPNB2Newtonc                 C   sF   t ƒ }tj|jdd�}t|j|dd�}|jddd�| _tj	}|| _
d S rF  ©r8   r'   rå   r.   r   r-   ræ   r<   r   r½  rf   rÞ  r1   r1   r2   rê      s    z*TestNegativeBinomialPNB2Newton.setup_classc                 C   s   t | jj| jjddd� d S ©NrS  rq  rK  rh   r1   r1   r2   rˆ   
  s     ÿz'TestNegativeBinomialPNB2Newton.test_bsec                 C   s   t | jj| jjdd� d S ©NgH¯¼šò×z>rG  rL  rh   r1   r1   r2   ri     s    ÿz*TestNegativeBinomialPNB2Newton.test_paramsc                 C   s4   | j j t| j j| jjƒ t| j j| jjdd� d S r~  ©r<   r‡   r   rÀ  rf   rÁ  rh   r1   r1   r2   rÂ    s    þz)TestNegativeBinomialPNB2Newton.test_alphac                 C   s   t | j ¡ | jjddd� d S r}  rj   rh   r1   r1   r2   rl     s     ÿz,TestNegativeBinomialPNB2Newton.test_conf_intc                 C   s$   t | jjd d… | jjddd� d S ©Nr'  ç{®Gázt?rq  ©r   r<   rq   rf   rh   r1   r1   r2   ro     s     ÿz)TestNegativeBinomialPNB2Newton.test_zstatc                 C   s&   t | jjd d… | jjd d… ƒ d S rÇ  ©r   r<   rÉ  rf   rh   r1   r1   r2   rÊ  !  s    ÿz0TestNegativeBinomialPNB2Newton.test_fittedvaluesc                 C   s.   t | j ¡ d d… t | jjd d… ¡ƒ d S rÇ  ©r   r<   rQ   r+   rÌ  rf   rÉ  rh   r1   r1   r2   r’   %  s    ÿz+TestNegativeBinomialPNB2Newton.test_predictc                 C   s,   t | jjdd�d d… | jjd d… ƒ d S rÍ  ©r   r<   rQ   rf   rÉ  rh   r1   r1   r2   r”   )  s    ÿz.TestNegativeBinomialPNB2Newton.test_predict_xbNrÏ  r1   r1   r1   r2   r{  þ  s   
	r{  c                   @   sH   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚTestNegativeBinomialPNB1Newtonc                 C   sH   t ƒ }tj|jdd�}t|j|dd�}|jdddd�| _tj	}|| _
d S )	NFrß   r   rG  rá   r  r   rÒ  ©r8   r'   rå   r.   r   r-   ræ   r<   r   rÔ  rf   rÞ  r1   r1   r2   rê   0  s    z*TestNegativeBinomialPNB1Newton.setup_classc                 C   s   t | jj| jjddd� d S ©Nr�  rq  ©r   r<   rm   rf   rn   rh   r1   r1   r2   ro   9  s     ÿz)TestNegativeBinomialPNB1Newton.test_zstatc                 C   s0   | j j t| j j| jjƒ t| j j| jjƒ d S r&   r  rh   r1   r1   r2   rØ  =  s
    ÿz+TestNegativeBinomialPNB1Newton.test_lnalphac                 C   s   t | jj| jjƒ d S r&   rL  rh   r1   r1   r2   ri   C  s    z*TestNegativeBinomialPNB1Newton.test_paramsc                 C   s   t | j ¡ | jjddd� d S r}  rj   rh   r1   r1   r2   rl   F  s     ÿz,TestNegativeBinomialPNB1Newton.test_conf_intc                 C   s4   t | j ¡ d d… t | jjd d… ¡ddd� d S ©Nr!   rS  rq  r„  rh   r1   r1   r2   r’   L  s
     þz+TestNegativeBinomialPNB1Newton.test_predictc                 C   s2   t | jjdd�d d… | jjd d… ddd� d S ©Nr“   rN   r!   rS  rq  r…  rh   r1   r1   r2   r”   Q  s
     þz.TestNegativeBinomialPNB1Newton.test_predict_xbN)ra   rb   rc   rï   rê   ro   rØ  ri   rl   r’   r”   r1   r1   r1   r2   r†  .  s   
r†  c                   @   sX   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestNegativeBinomialPNB2BFGSc                 C   sD   t ƒ }tj|jdd�}t|j|dd�jdddd�| _tj	}|| _
d S )	NFrß   r%   rG  rò   r   rþ   r÷   r|  r¡  r1   r1   r2   rê   Y  s     þz(TestNegativeBinomialPNB2BFGS.setup_classc                 C   s   t | jj| jjddd� d S r}  rK  rh   r1   r1   r2   rˆ   d  s     ÿz%TestNegativeBinomialPNB2BFGS.test_bsec                 C   s   t | jj| jjddd� d S r}  rL  rh   r1   r1   r2   ri   h  s     ÿz(TestNegativeBinomialPNB2BFGS.test_paramsc                 C   s<   | j j t| j j| jjddd� t| j j| jjddd� d S )Nr   rq  r  rh   r1   r1   r2   rÂ  l  s     ÿ þz'TestNegativeBinomialPNB2BFGS.test_alphac                 C   s   t | j ¡ | jjddd� d S r}  rj   rh   r1   r1   r2   rl   t  s     ÿz*TestNegativeBinomialPNB2BFGS.test_conf_intc                 C   s$   t | jjd d… | jjddd� d S r€  r‚  rh   r1   r1   r2   ro   x  s     ÿz'TestNegativeBinomialPNB2BFGS.test_zstatc                 C   s,   t | jjd d… | jjd d… ddd� d S )Nr!   r  rq  rƒ  rh   r1   r1   r2   rÊ  |  s
     þz.TestNegativeBinomialPNB2BFGS.test_fittedvaluesc                 C   s4   t | j ¡ d d… t | jjd d… ¡ddd� d S rŠ  r„  rh   r1   r1   r2   r’   �  s
     þz)TestNegativeBinomialPNB2BFGS.test_predictc                 C   s2   t | jjdd�d d… | jjd d… ddd� d S r‹  r…  rh   r1   r1   r2   r”   †  s
     þz,TestNegativeBinomialPNB2BFGS.test_predict_xbNrÏ  r1   r1   r1   r2   rŒ  W  s   

rŒ  c                   @   sx   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestNegativeBinomialPNB1BFGSc                 C   sD   t ƒ }tj|jdd�}t|j|dd�jdddd�| _tj	}|| _
d S )	NFrß   r   rG  rò   r  r   rÒ  r‡  r¡  r1   r1   r2   rê   Ž  s    þz(TestNegativeBinomialPNB1BFGS.setup_classc                 C   s   t | jj| jjddd� d S rˆ  rK  rh   r1   r1   r2   rˆ   ˜  s     ÿz%TestNegativeBinomialPNB1BFGS.test_bsec                 C   s   t | jj| jjddd� d S ©Nr9  rq  rO  rh   r1   r1   r2   rŽ   œ  s     ÿz%TestNegativeBinomialPNB1BFGS.test_aicc                 C   s   t | jj| jjddd� d S rŽ  rP  rh   r1   r1   r2   r‘      s     ÿz%TestNegativeBinomialPNB1BFGS.test_bicc                 C   s   t | jj| jjddd� d S r}  rR  rh   r1   r1   r2   rx   ¤  s     ÿz%TestNegativeBinomialPNB1BFGS.test_llfc                 C   s   t | jj| jjddd� d S r}  rR  rh   r1   r1   r2   r}   ¨  s     ÿz%TestNegativeBinomialPNB1BFGS.test_llrc                 C   s   t | jj| jjddd� d S rŽ  r‰  rh   r1   r1   r2   ro   ¬  s     ÿz'TestNegativeBinomialPNB1BFGS.test_zstatc                 C   s4   t | jj| jjddd� t | jj| jjddd� d S r}  rM  rh   r1   r1   r2   rØ  °  s     ÿ þz)TestNegativeBinomialPNB1BFGS.test_lnalphac                 C   s   t | jj| jjddd� d S ©Nçš™™™™™©?rq  rL  rh   r1   r1   r2   ri   ·  s     ÿz(TestNegativeBinomialPNB1BFGS.test_paramsc                 C   s   t | j ¡ | jjddd� d S r�  rj   rh   r1   r1   r2   rl   »  s     ÿz*TestNegativeBinomialPNB1BFGS.test_conf_intc                 C   s4   t | j ¡ d d… t | jjd d… ¡ddd� d S )Nr!   r�  rq  r„  rh   r1   r1   r2   r’   Á  s
     þz)TestNegativeBinomialPNB1BFGS.test_predictc                 C   s2   t | jjdd�d d… | jjd d… ddd� d S )Nr“   rN   r!   r�  rq  r…  rh   r1   r1   r2   r”   Æ  s
     þz,TestNegativeBinomialPNB1BFGS.test_predict_xbc                 C   s*   | j j ¡ }td|kƒ t|d dƒ d S rb  rc  rd  r1   r1   r2   rf  Ë  s    z+TestNegativeBinomialPNB1BFGS.test_init_kwdsN)ra   rb   rc   rï   rê   rˆ   rŽ   r‘   rx   r}   ro   rØ  ri   rl   r’   r”   rf  r1   r1   r1   r2   r�  Œ  s   
	r�  c                   @   s   e Zd Zedd„ ƒZdS )Ú$TestNegativeBinomialPL1Compatabilityc                 C   s
  d| _ d| _tƒ }t |j¡|_tj|jtd�|_|j t¡ 	t
|jƒd¡}|| d¡ | d¡ }tj|dd�}|d d …d | j…f }t |j|¡}|jddd	�| _dt
|jƒ t | j d
 ¡ }d|d | j…< d|d< t |j|¡}|jd|ddddd�| _d
| _d S )Nr!   rY  r6   r'  r   Trß   rá   râ   r   r  Fr9   rZ  r  r4  )rC  rS   r8   r+   r,   r-   r.   r7   r[  r\  r›   rR   rb  r'   rå   r   ræ   rA  rì   r_   rB  rF  rc  r1   r1   r2   rê   Ò  s0        þz0TestNegativeBinomialPL1Compatability.setup_classNró   r1   r1   r1   r2   r‘  Ñ  s   r‘  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú TestNegativeBinomialPPredictProbc                 C   s  ddg}t j d¡ d}t  |df¡}d|d |d …df< t  | |¡¡}d}d| | }|||  }tj||t|ƒd�}t	 
||¡jd	d
�}	|	 ¡ }
d| |
 }|||
  }|	jdd�}t|t t  d¡d d …d f ||¡jddd� |	j|d	dg dd�}t||d	dg ddd� d S )Nr   rh  ri  rj  r%   r�  r-  r  r   r"  ru  rN   r©  r5  rq  r'  )r.   rO   r9   rk  r  ©r+   r  r  rì   rÌ  rG   r   ro  r›   r'   r   ræ   rQ   r   rw  rš  rF   )rH   rl  r  r.   rp  r  r�   ru  r-   rI   Úmur±  Zprobs_exr1   r1   r2   Útest_predict_prob_p1î  s,      þz5TestNegativeBinomialPPredictProb.test_predict_prob_p1c                 C   sä   ddg}t j d¡ d}t  |df¡}d|d |d …df< t  | |¡¡}d}d| }|||  }tj||t|ƒd�}t	j
||dd	�jd
d�}	|	 ¡ }
d| }|||
  }t|	jdd�t t  d¡d d …d f ||¡jddd� d S )Nr   rh  ri  rj  r%   r�  r-  r  rG  r   r"  ru  rN   r©  r5  rq  r“  )rH   rl  r  r.   rp  r  r�   ru  r-   rI   r”  r1   r1   r2   Útest_predict_prob_p2	  s&      þz5TestNegativeBinomialPPredictProb.test_predict_prob_p2N)ra   rb   rc   r•  r–  r1   r1   r1   r2   r’  ì  s   r’  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )Ú	CheckNullc              	   C   sT   t  dddddddg¡}t|ƒ}t  t  |¡|f¡}t  dd	d
ddddg¡}||fS )Nré  rê  g      >@g     €A@g      D@g     €F@g      I@iÕ  iŒ  iÆ  iµ  i@  iâ  iª  )r+   r"  r›   rD   rì   )ré   rö  r  r.   r-   r1   r1   r2   Ú	_get_data!	  s
    zCheckNull._get_datac                 C   sb   | j j| jdd�}d|j_|j}|j}t||jdd� | j}t||jdd� t|j	|j	dd� d S )Nr   ©r  rã   Tr  r:   r`  )
r=   ræ   r  Z_resultsZ_attach_nullmodelry   Úres_nullr   rw   r>   )rH   rI   Zllf0Z	res_null0Z	res_null1r1   r1   r2   rz   )	  s    zCheckNull.test_llnullN)ra   rb   rc   rï   r˜  rz   r1   r1   r1   r2   r—  	  s   
r—  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestPoissonNullc                 C   sJ   |   ¡ \}}t||ƒ| _t||d d …df ƒjdgdd�| _ddg| _d S )Nr   g      !@r™  )r˜  r   r=   ræ   rš  r  ©ré   r-   r.   r1   r1   r2   rê   9	  s    $zTestPoissonNull.setup_classNró   r1   r1   r1   r2   r›  7	  s   r›  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestNegativeBinomialNB1Nullc                 C   sj   |   ¡ \}}t||dd�| _t||d d …df dd�| _| jjddgddddd	�| _t d
ddg¡| _d S )NrÑ  rg  r   r©  rþ   rò   rû   é,  ©r  r[   rÿ   rø   rã   çð0í›ûë@ç?$�°¥”?ç     Œ›@©	r˜  r   r=   Ú
model_nullræ   rš  r+   r"  r  rœ  r1   r1   r2   rê   D	  s    ÿ  þz'TestNegativeBinomialNB1Null.setup_classNró   r1   r1   r1   r2   r�  B	  s   r�  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestNegativeBinomialNB2Nullc                 C   sj   |   ¡ \}}t||dd�| _t||d d …df dd�| _| jjddgddddd	�| _t d
ddg¡| _d S )Nr»  rg  r   r©  r9  rò   r  rž  rŸ  çÑ#¾ò$ @ç7Ë<$BD†?çÿkiê,Ü?r£  rœ  r1   r1   r2   rê   S	  s    ÿ  þz'TestNegativeBinomialNB2Null.setup_classNró   r1   r1   r1   r2   r¥  Q	  s   r¥  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestNegativeBinomialNBP2Nullc                 C   sj   |   ¡ \}}t||dd�| _t||d d …df dd�| _| jjddgddddd	�| _t d
ddg¡| _d S )Nr%   rG  r   r©  r   rò   r  rž  rŸ  r¦  r§  r¨  ©	r˜  r   r=   r¤  ræ   rš  r+   r"  r  rœ  r1   r1   r2   rê   a	  s      þz(TestNegativeBinomialNBP2Null.setup_classc                 C   sD   | j j| j j }}t||dd�}| ¡ }| j  ¡ }t||dd� d S )Nr»  rg  çê-�™—q=r:   ©r=   r-   r.   r   Z_get_start_params_nullr   ©rH   r-   r.   Z	model_nb2Zsp1Zsp0r1   r1   r2   Útest_start_nullk	  s
    
z,TestNegativeBinomialNBP2Null.test_start_nullN©ra   rb   rc   rï   rê   r®  r1   r1   r1   r2   r©  _	  s   
	r©  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestNegativeBinomialNBP1Nullc                 C   sj   |   ¡ \}}t||dd�| _t||d d …df dd�| _| jjddgddddd	�| _t d
ddg¡| _d S )Nr-  rG  r   r   r©  rò   r  rž  rŸ  r   r¡  r¢  rª  rœ  r1   r1   r2   rê   u	  s      þz(TestNegativeBinomialNBP1Null.setup_classc                 C   sD   | j j| j j }}t||dd�}| ¡ }| j  ¡ }t||dd� d S )NrÑ  rg  r«  r:   r¬  r­  r1   r1   r2   r®  	  s
    
z,TestNegativeBinomialNBP1Null.test_start_nullNr¯  r1   r1   r1   r2   r°  s	  s   
	r°  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGeneralizedPoissonNullc                 C   sj   |   ¡ \}}t||dd�| _t||d d …df dd�| _| jjddgddddd	�| _t d
ddg¡| _d S )Nr1  rG  r   gÍÌÌÌÌÌ @r   rò   rû   rž  rŸ  g”‚ÑY$¥@g®^ý§?gØ3� 7Iì?)	r˜  r   r=   r¤  ræ   rš  r+   r"  r  rœ  r1   r1   r2   rê   ‰	  s      þz&TestGeneralizedPoissonNull.setup_classNró   r1   r1   r1   r2   r±  ‡	  s   r±  c                  C   sv  d} t  d¡}d|d | d …df< t  | d¡¡}t j |¡}t||ƒjt  ddg¡dd�}|j	}t
t|dƒdkƒ |jd	d
� |j	}t|jjd t  | ¡ ¡dd� t|jjd dƒ t||ƒ |jd	dgdd� |j	}t|jjd dgdd� t|jjd dƒ | ¡  t
d|jkƒ t|jd |ƒ t
d|jkƒ t|jd |ƒ |jdd� t
d|jkƒ t|jd dƒ d S )Nr!   )é   r%   r   r%   r   r™  Z
res_llnullFT)Úattach_resultsr  r9   r:   Z	optimizerrò   r9  rõ   )r³  r  r[   Z	prsquaredry   iç  )ry   )r+   rì   rÌ  r?   r  r   r   ræ   rÿ  ry   r   rt   Zset_null_optionsr   rš  Úmle_settingsrR   r   rš   Ú_cache)r  r.   r”  r-   rI   Zllnull0Zllnr1   r1   r2   Útest_null_options”	  s<    
 ÿ
ÿr¶  c                  C   sä  t j t j t¡¡} t j | dd¡}t |¡}dg}|| ||  ¡  ||  	¡  }|d j
}t ||  ¡ ¡}d }tddd�}t|||d�}	|	jf d	d
i|—Ž}
t|||d�}	|	jd
|d�}t|jd d d… |
jdd� t|jd |ƒ t| ¡  ¡ | ¡ dd� tddd�}t|||dd�}	|	jd
|d�}t|jd d d… |
jdd� t|jd |ƒ t| ¡  ¡ | ¡ dd� t|||dd�}	|	jd
d|d�}t|jd d d… |
jdd� t|jd |ƒ t| ¡  ¡ | ¡ dd� d S )Nr¦  z
sm3533.csvÚppÚnumrõ   rk  )r[   rø   )rý  rã   r   )rã   Úoptim_kwds_prelimr  r'  r  r:   r¹  r  r%   )rý  rH  r1  rj  )rã   rø   r¹  )rª  r«  r¬  r­  r®  r¯  r:  Zread_csvrR   rb  r´   r'   rå   Úcopyr%  r   ræ   r   r   r´  r>   r   rQ   r   r   )r°  Úfilepathr‘  Úfeaturesrû  r÷  r.   rý  r¹  r=   Zres_poirI   r1   r1   r2   Útest_optim_kwds_prelimº	  sB    
 
ÿÿÿr½  c                  C   sÆ   t ƒ } t d¡ tj| j| jdd�}t dddddd	d
dddg
¡}|j	|dd�}t
|jdƒ t ddddddddddg
¡}|jd|dd�}t|jdkƒ |j	|dd�}t
|j|jƒ t
|j|jƒ d S )Nr  r»  rg  g‘XŒüò¬¿gB¼ÇüP'Ë¿g)myþ|¶?gVÖ6Åã¢ž¿gŠq£m¡PÍ?g¢�²çË¯?ghh±?gÓ,ñüy…µ?g‘Ë¨Çð·Ç?gI"$ üÜõ?r   r™  r©  g|~!<Ú¨¿g«SíìŽ9Ã¿gäí1&7iµ?gm“ÄqdŸ¿go’î ²„Æ?gáT÷
}°?g$&ÜÐ9�?r,  g,[Òîãêõ?r  )r  r  rã   )r8   r  r  r'   r   r-   r.   r+   r"  ræ   r   r‰   r_   r   rŠ   )r0   r=   r>   r<   Z
reg_paramsrf   Zres3r1   r1   r2   Ú"test_unchanging_degrees_of_freedomì	  s2    
    þ    ÿr¾  c               	   C   sl   t  dddddgdddddgdœ¡} tjtdd�� tjd| d	� ¡ }W 5 Q R X | ¡  	¡ }d
|ksht
‚d S )Nr,  gš™™™™™ñ?r   r   )ÚAÚBz+endog contains values are that not int-likerX   zA ~ B)Úformular0   zA=1.1)r:  r;  r\   rí   r   r)  r*  ræ   rš   r	  rž   )r‘  rT  rŸ   r1   r1   r2   Útest_mnlogit_float_name
  s    $ÿrÂ  c                  C   sÄ   t jj ¡ } t j| jdd�}t  | j|¡jddd�}| 	¡ }| 
¡ }t t |¡¡}|jd d …df |jd d …df  dtj d¡  }t||ƒ t|j|jƒ t|j|jƒ t|jtjƒsÀt‚d S )	NFrß   rá   r   râ   r   r%   g333333ï?)r'   r(   r)   r#  rå   r.   r   r-   ræ   rs   rk   r+   ÚsqrtZdiagr'  r   ZnormZppfr   r   Úindexr*  rB   r:  Z
MultiIndexrž   )r0   r.   r<   ZcovÚciÚseZse2r1   r1   r2   Útest_cov_confint_pandas
  s    4
rÇ  c            
      C   sÐ   t ƒ } tj| jdd�}t | j|¡jdd�}t | 	¡ j
d ¡}| |¡}| |¡}tjj ¡ } tj| jdd�}t | j¡t |¡ }}t ||¡jdd�}| |¡}| |¡}	t|j|jƒ t|j|	jƒ d S )NFrß   r   r"  )r3   r'   rå   r.   r   r-   ræ   r+   rì   rs   rµ   rI  rT  r(   r)   r*   r,   r   rK  r’  )
r0   r.   r<   r  Út1Úf1r-   rf   Út2Úf2r1   r1   r2   rR  
  s    



rR  )N)—r£   Zstatsmodels.compat.pandasr   rª  r  Únumpyr+   Znumpy.testingr   r   r   r   r   r   r	   rA  r:  r\   rx  r   Zscipy.statsr   Zstatsmodels.apiÚapir'   Z%statsmodels.discrete.discrete_marginsr   r   Z#statsmodels.discrete.discrete_modelr   r   r   r   r   r   r   r   Zstatsmodels.formula.apirÁ  r)  Zstatsmodels.tools.sm_exceptionsr   r   r   r   Zresults.results_discreter   r   r   r   Zcvxoptr1  ÚImportErrorr•   Z
DECIMAL_10rA   rg   r|   rÆ  rD  Z	DECIMAL_0r3   r5   r8   rL   rV   rW   rd   r¦   r¬   rÝ   rð   rô   rú   rü   r  r  r  r  r  r  r  r%  r+  r¤   Zskipifr0  r7  r@  rX  ra  re  ri  rn  rp  rq  rt  rv  rz  r{  r|  r™  rž  rŸ  r¹  rº  rÐ  rÛ  rÜ  rÝ  rà  rí  rï  rø  rü  r  r  r  r  r  r  r  r   r,  r/  r@  rB  rD  rE  rZ  r[  rg  r{  r†  rŒ  r�  r‘  r’  r—  r›  r�  r¥  r©  r°  r±  r¶  r½  r¾  rÂ  rÇ  rR  r1   r1   r1   r2   Ú<module>   sì   
$	(


-X 57 E/*-(/)7x

9(KK0)5E3&2	