U
    ÃmœdÔp  ã                   @   s`  d Z ddlmZ ddlmZmZ ddlmZmZm	Z	 ddl
mZ ddlZddlmZmZmZmZ ddlZddlZddlmZ ddlmZmZ ddlm  mZ dd	l m!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(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.G d$d%„ d%e"ƒZ/G d&d'„ d'ƒZ0d(d)„ Z1G d*d+„ d+e0ƒZ2G d,d-„ d-e0ƒZ3G d.d/„ d/e0ƒZ4G d0d1„ d1e0ƒZ5G d2d3„ d3e0ƒZ6G d4d5„ d5e0ƒZ7G d6d7„ d7ƒZ8G d8d9„ d9e8ƒZ9G d:d;„ d;e8ƒZ:G d<d=„ d=e8ƒZ;G d>d?„ d?e8ƒZ<G d@dA„ dAe8ƒZ=dS )BzáTests that use cross-checks for generic methods

Should be easy to check consistency across models
Does not cover tsa

Initial cases copied from test_shrink_pickle

Created on Wed Oct 30 14:01:27 2013

Author: Josef Perktold
é    )Úpytest_warns)Úassert_index_equalÚassert_series_equal)ÚPLATFORM_LINUX32ÚPLATFORM_OSXÚPLATFORM_WIN32)ÚSCIPY_GT_14N)Úassert_Úassert_allcloseÚassert_array_equalÚassert_equal)ÚglmÚols)ÚHessianInversionWarningc                   @   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 )ÚCheckGenericMixinc                 C   sN   d}t j d¡ t j |d¡}t |¡}|| _dt  d¡ | _i | _	d | _
d S )Néô  é) é   g      Ð?)é   é   )ÚnpÚrandomÚseedÚrandnÚsmÚadd_constantÚexogÚonesZxfÚpredict_kwdsÚtransform_index)ÚclsÚnobsÚx© r#   úd/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/base/tests/test_generic_methods.pyÚsetup_class(   s    
zCheckGenericMixin.setup_classc                 C   sÜ   t  | j¡ | j}t t|jƒ¡}| |d ¡}dd„ }| ¡ }t	|j
|jd dd� t|dƒt|ƒkƒ |jdd�}d	}t|t|ƒkƒ |jdd�}|jd
kr¤dnd}|jd
kr¶dnd}	dd|	|ddg}
t|jj|
ƒ d S )Nr   c                 S   s   d| d d| d  f S )Nz[%4.3F      %4.3F]r   é   r#   ©Úalphar#   r#   r$   Ú<lambda>;   s    
ÿz6CheckGenericMixin.test_ttest_tvalues.<locals>.<lambda>g•Ö&è.>©Úrtolgš™™™™™©?gš™™™™™¹?r'   z[0.05       0.95]FzP>|z|zP>|t|ÚzÚtZcoefzstd errzConf. Int. LowzConf. Int. Upp.)ÚsmtZcheck_ttest_tvaluesÚresultsr   ÚeyeÚlenÚparamsÚt_testÚsummaryr
   ÚpvalueÚpvaluesr	   ÚstrÚsummary_frameÚuse_tr   ÚcolumnsÚvalues)ÚselfÚresÚmatÚttZstring_confintZsummÚssZsummfZpvstring_use_tZtstring_use_tÚcolsr#   r#   r$   Útest_ttest_tvalues3   s&     ÿz$CheckGenericMixin.test_ttest_tvaluesc                 C   s   t  | j¡ d S ©N)r.   Zcheck_ftest_pvaluesr/   ©r<   r#   r#   r$   Útest_ftest_pvaluesM   s    z$CheckGenericMixin.test_ftest_pvaluesc                 C   s   t  | j¡ d S rC   )r.   Zcheck_fittedr/   rD   r#   r#   r$   Útest_fittedP   s    zCheckGenericMixin.test_fittedc                 C   s   t  | j¡ d S rC   )r.   Zcheck_predict_typesr/   rD   r#   r#   r$   Útest_predict_typesS   s    z$CheckGenericMixin.test_predict_typesc                 C   s>  t | jjtjƒrt d¡ t | jjtjtjtj	fƒ }|| _
tt| jjjjd ƒƒ}tt| jjjd ƒƒ}dg}|D ]}||= ||= qt|r¤| jjj|d| jjd�}n| jjj|dd�}|  ||¡}t|j| |jddd� t|j| dƒ t|j| |jddd� t|j| dƒ t�rd	nd}|j| }	t|	|j||d� t�sHt�rT|j| }
n
|j| }
t|
|j||d� t|d
ƒ�r¬d}d}t�s�t�r˜d	}d}t|j|j||d� | jjj d¡}|j|f| jŽ}|j|| f| jŽ}t||dd� | jjjd d… }|j|f| jŽ}|j|d d …|f f| jŽ}t||dd� d S )Nz%GEE does not subclass LikelihoodModelr&   r   r   )ÚmaxiterÚstart_params©rH   ç»½×Ùß|Û=©r+   Úatolç:Œ0âŽyE>Úresidgê-�™—q=r*   é   ) Ú
isinstancer/   Úmodelr   ÚGEEÚpytestÚskipÚRLMÚOLSÚWLSÚuse_start_paramsÚlistÚranger   Úshaper2   Z
_fit_zerosÚ_get_constrainedr
   r   Úbser   Útvaluesr   r   r6   Úhasattrr   rO   ÚmeanÚpredictr   )r<   rY   Ú
keep_indexÚkeep_index_pÚ
drop_indexÚiÚres1Úres2ÚtolÚtvals1Úpvals1r+   rM   ÚexÚ
predicted1Ú
predicted2r#   r#   r$   Útest_zero_constrainedV   s`    
ÿÿÿÿ

z'CheckGenericMixin.test_zero_constrainedc                 C   sb   | j j}|j}| ¡ }||j|jd d …|f f|Ž}| jrR|j| j j| dd�}n|jdd�}|S )Nr   )rI   rH   rJ   )	r/   rR   Ú	__class__Ú_get_init_kwdsÚendogr   rY   Úfitr2   )r<   rc   rd   Úmod2Úmod_clsÚ	init_kwdsÚmodr=   r#   r#   r$   r]   —   s    ÿz"CheckGenericMixin._get_constrainedc              
   C   s”  t | jjtjƒrt d¡ t | jjtjtjtj	tj
fƒ }|| _tt| jjjjd ƒƒ}tt| jjjd ƒƒ}g }|D ]}||= ||= qvtt| jjjd ƒƒ}| jj}|j}| ¡ }t |j|jf¡}	||j|	f|Ž}
tt| jjjjd ƒƒ}tt| jjjjd ƒƒ}|	jd }d}t|
dƒ�rJ|
jdk�rJ|tt|||
j ƒƒ7 }|
j}t |
tj
ƒ�r\tnd }ddg}|D �] }|dk�r”t | jjtjƒ�r” d S |�rJt || ¡}| jjd }| jjd  ¡ }| jd k	�ræt || j ¡|| j< |||< t|ƒ� |
j|||dd	�}W 5 Q R X |dk�r t|ƒ� | jjj |||dd	�}W 5 Q R X nVt|ƒ�. t | jjtjƒ�rp|
 ¡ }n|
j|d
�}W 5 Q R X |dk�r | jjj |d
�}|dk�r°| j}t|dƒ�r4t!|j"jd |jd ƒ d|jk�r4|j"jd }t#||jd ddd� t!|jd |jd ƒ t#|jd |jd ddd� t#|j| |jdd� t#|j| ddd� t#|j$| |j$dd� t#|j$| ddd� |j%| }t#||j%dd� t&�s®t'�rº|j(| }n
|j(| }t#||j(ddd� t|dƒ�röt#|j)|j)ddd� |jj *d¡}	|j+|	f| j,Ž}|j+|	| f| j,Ž}t#||ddd� |jjd d… }	t-| di ƒ}|j+|	f|Ž}|j+|	d d …|f f|Ž}t#||ddd� �qld S )NzNot completely generic yetr&   r   Úk_extraZ	nonrobustÚHC0Z	optimizerrI   )Úcov_typerI   ÚmethodÚdisp©rz   Úmle_settingsrK   g#B’¡œÇ;rL   g�íµ ÷Æ°>r*   rN   gH¯¼šò×j>g ÂëþKH´9rO   çñhãˆµøä>g•dyáý¥=rP   Úpredict_kwds_5).rQ   r/   rR   r   rS   rT   rU   rV   rW   rX   ÚGLMrY   rZ   r[   r   r\   r2   rp   rq   r   Zcolumn_stackrr   r`   rx   r   Zzerosr~   Úcopyr   Úexpr   Z_fit_collinearrs   r   Zresults_constrainedr
   r^   r_   r   r   r6   rO   ra   rb   r   Úgetattr)r<   rY   rc   rd   re   rf   rt   ru   rv   rl   rw   Zk_varsrx   Zwarn_clsZ	cov_typesrz   rI   r{   Úsprg   rh   Zspcrj   rk   rm   rn   Úkwdsr#   r#   r$   Útest_zero_collinear¤   sÈ    
ÿ

ÿ
 þ


 þ



ÿ þ
ÿ
 þ

z%CheckGenericMixin.test_zero_collinearN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr%   rB   rE   rF   rG   ro   r]   r‡   r#   r#   r#   r$   r   &   s   

Ar   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericOLSc                 C   sF   | j }tj d¡ | d¡tj |jd ¡ }t || j ¡ 	¡ | _
d S ©Nr   r&   r   )r   r   r   r   Úsumr   r\   r   rW   rs   r/   ©r<   r"   Úyr#   r#   r$   Úsetup_method)  s    zTestGenericOLS.setup_methodN©rˆ   r‰   rŠ   r‘   r#   r#   r#   r$   rŒ   '  s   rŒ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestGenericOLSOneExogc                 C   sJ   | j d d …df }tj d¡ |tj |jd ¡ }t ||¡ ¡ | _	d S )Nr&   r   r   )
r   r   r   r   r   r\   r   rW   rs   r/   r�   r#   r#   r$   r‘   4  s    z"TestGenericOLSOneExog.setup_methodc                 C   s   t  d¡ d S )Nz/Override since cannot remove the only regressor)rT   rU   rD   r#   r#   r$   ro   ;  s    
z+TestGenericOLSOneExog.test_zero_constrainedN)rˆ   r‰   rŠ   r‘   ro   r#   r#   r#   r$   r“   1  s   r“   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericWLSc                 C   sT   | j }tj d¡ | d¡tj |jd ¡ }tj|| j t 	t
|ƒ¡d� ¡ | _d S )Nr   r&   r   )Úweights)r   r   r   r   rŽ   r   r\   r   rX   r   r1   rs   r/   r�   r#   r#   r$   r‘   C  s    zTestGenericWLS.setup_methodNr’   r#   r#   r#   r$   r”   A  s   r”   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericPoissonc                 C   sf   | j }tj d¡ tj t | d¡| ¡  ¡¡}t 	||¡}t 
ddddg¡}|j|ddd	�| _d S )
Nr   r&   çc<s¤mè?çÞò&ùðÐï?ç` ŽCð?çZ9(
ð?Úbfgsr   ©rI   r{   r|   )r   r   r   r   Úpoissonrƒ   rŽ   ra   r   ÚPoissonÚarrayrs   r/   )r<   r"   Úy_countrR   rI   r#   r#   r$   r‘   M  s     ÿzTestGenericPoisson.setup_methodNr’   r#   r#   r#   r$   r–   K  s   r–   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericPoissonOffsetc                 C   s²   | j }|jd }tj d¡ tj t | d¡| ¡  ¡¡}t	j
||dt |¡ t |¡d�}t dddd	g¡}|j|d
dd�| _tdt d¡ t d¡d�| _tddd�| _d S )Nr   r   r&   ç{®Gáz„?)ÚoffsetÚexposurer—   r˜   r™   rš   r›   rœ   rP   ©r¤   r£   )r   r\   r   r   r   r�   rƒ   rŽ   ra   r   rž   r   rŸ   rs   r/   Údictr€   r   ©r<   r"   r!   r    rR   rI   r#   r#   r$   r‘   [  s    
 ÿÿz%TestGenericPoissonOffset.setup_methodNr’   r#   r#   r#   r$   r¡   Y  s   r¡   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericNegativeBinomialc                 C   sŽ   t j d¡ tjj ¡ }t  |j¡|_t  |j	¡|_	tj
|jdd�}t |j	|¡}t  dddddd	d
ddddg¡}|j|ddd�| _d| _d S )Nr   F)ÚprependgJt¿Øµœ­¿giÚ‹‰IÑ¿gÆ}Eñ	¥?g0õon~‰£¿gøL›a/Ñ?g†9ƒ·îƒ£?gi�©¦¿gZû–”‰�?gØðÓ<pcÆ?g}Ø[Då?g!4'Ôx®ô?r   r   )rI   r|   rH   éÿÿÿÿ)r   r   r   r   ZdatasetsZrandhieÚloadZasarrayr   rr   r   ÚNegativeBinomialrŸ   rs   r/   r   )r<   Údatar   rw   rI   r#   r#   r$   r‘   n  s"         þz(TestGenericNegativeBinomial.setup_methodNr’   r#   r#   r#   r$   r¨   l  s   r¨   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericLogitc              	   C   sž   | j }|jd }tj d¡ tj |¡ddt | d¡| ¡  ¡  k  	t
¡}t ||¡}t ddddg¡}tjtd	d
�� |j|dddd�| _W 5 Q R X d S )Nr   r   ç      ð?r&   gd·b=}ç¿gu€7í$ð¿gG‰†ZHï¿gÜzd€›î¿z"Keyword arguments have been passed)Úmatchr›   r   )rI   r{   r|   ri   )r   r\   r   r   r   Zrandrƒ   rŽ   ra   ZastypeÚintr   ZLogitrŸ   rT   ZwarnsÚFutureWarningrs   r/   )r<   r"   r!   Zy_binrR   rI   r#   r#   r$   r‘     s    
2ÿ  ÿzTestGenericLogit.setup_methodNr’   r#   r#   r#   r$   r®   }  s   r®   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericRLMc                 C   sF   | j }tj d¡ | d¡tj |jd ¡ }t || j ¡ 	¡ | _
d S r�   )r   r   r   r   rŽ   r   r\   r   rV   rs   r/   r�   r#   r#   r$   r‘   �  s    zTestGenericRLM.setup_methodNr’   r#   r#   r#   r$   r³   Ž  s   r³   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericGLMc                 C   sF   | j }tj d¡ | d¡tj |jd ¡ }t || j ¡ 	¡ | _
d S r�   )r   r   r   r   rŽ   r   r\   r   r�   rs   r/   r�   r#   r#   r$   r‘   š  s    zTestGenericGLM.setup_methodNr’   r#   r#   r#   r$   r´   ˜  s   r´   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericGLMPoissonOffsetc                 C   sº   | j }|jd }tj d¡ tj t | d¡| ¡  ¡¡}t	j
||t	j ¡ dt |¡ t |¡d�}t dddd	g¡}|j|d
dd�| _tdt d¡ t d¡d�| _tddd�| _d S )Nr   r   r&   r¢   )Úfamilyr£   r¤   r—   r˜   r™   rš   r›   rœ   rP   r¥   )r   r\   r   r   r   r�   rƒ   rŽ   ra   r   r�   Úfamiliesrž   r   rŸ   rs   r/   r¦   r€   r   r§   r#   r#   r$   r‘   ¤  s    
 þÿz(TestGenericGLMPoissonOffset.setup_methodNr’   r#   r#   r#   r$   rµ   ¢  s   rµ   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericGEEPoissonc                 C   s”   | j }tj d¡ tj t | d¡| ¡  ¡¡}tjjdd|j	d d�}t 
ddddg¡}tj ¡ }tj ¡ }tj|| j |||d�j|d	�| _d S )
Nr   r&   r   r   ©Úsizeç        r¯   ©r¶   Ú
cov_struct)rI   ©r   r   r   r   r�   rƒ   rŽ   ra   Úrandintr\   rŸ   r   r½   ZIndependencer·   rž   rS   rs   r/   ©r<   r"   r    ÚgroupsrI   Úvir¶   r#   r#   r$   r‘   ¸  s     

ÿÿz"TestGenericGEEPoisson.setup_methodNr’   r#   r#   r#   r$   r¸   ¶  s   r¸   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericGEEPoissonNaivec                 C   sž   | j }tj d¡ tj t | d¡| d¡ d¡ ¡¡}tjjdd|j	d d�}t 
ddddg¡}tj ¡ }tj ¡ }tj|| j |||d�j|d	d
�| _d S )Nr   r&   r   r   r¹   r»   r¯   r¼   Znaive©rI   rz   r¾   rÀ   r#   r#   r$   r‘   É  s    (

ÿþz'TestGenericGEEPoissonNaive.setup_methodNr’   r#   r#   r#   r$   rÃ   Ç  s   rÃ   c                   @   s   e Zd Zdd„ ZdS )ÚTestGenericGEEPoissonBCc                 C   s¢   | j }tj d¡ tj t | d¡| d¡ d¡ ¡¡}tjjdd|j	d d�}t 
ddddg¡}tj ¡ }tj ¡ }tj|| j |||d�}|j|d	d
�| _d S )Nr   r&   r   r   r¹   r»   r¯   r¼   Zbias_reducedrÄ   r¾   )r<   r"   r    rÁ   rI   rÂ   r¶   rw   r#   r#   r$   r‘   Ü  s    (

ÿz$TestGenericGEEPoissonBC.setup_methodNr’   r#   r#   r#   r$   rÅ   Ú  s   rÅ   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚCheckAnovaMixinc                 C   sH   dd l m  m  m} | ¡ }| ¡  |j dddg¡| _|  ¡  d S )Nr   r&   r   )	Ú"statsmodels.stats.tests.test_anovaÚstatsÚtestsÚ
test_anovaÚ
TestAnova3r%   r­   ÚdropÚ
initialize)r    ÚttmodÚtestr#   r#   r$   r%   ò  s
    zCheckAnovaMixin.setup_classc           
   	   C   sˆ   | j }|jdddgdd�}t t|jƒ¡}|d }|ddg }|d	 }|d
dg }|dd… }|d	d
dg }	t|||||||	|gƒ d S )NFÚDurationÚWeightT©Úskip_singleZcombine_termsÚscalarr   r   r   r&   r   rP   é   ©r=   Úwald_test_termsr   r0   r1   r2   Úcompare_waldres)
r<   r=   Úwar0   Zc_constÚc_wÚc_dÚc_dwÚc_weightÚ
c_durationr#   r#   r$   Útest_combinedü  s    zCheckAnovaMixin.test_combinedc                 C   sP   | j }|jddd�}t t|jƒ¡}|ddg }|ddg }t||||gƒ d S )NT)rÓ   rÔ   r   r   r   rP   rÖ   )r<   r=   rÙ   r0   rÚ   rÜ   r#   r#   r$   Útest_categories	  s    zCheckAnovaMixin.test_categoriesN)rˆ   r‰   rŠ   r‹   r%   rß   rà   r#   r#   r#   r$   rÆ   ð  s   
	rÆ   c                 C   s6  t |ƒD ]À\}}| j|dd�}t|jj|df |jƒ t|jj|df |jƒ |jdkrb|jd nd}t	|jj|df |ƒ t|j| |jƒ t|j
| |jƒ t	|j| |ƒ | jrt	|j| | jƒ q|j}| j�rt	|jdƒ t	|d dƒ t	|d dƒ n(t	|jdƒ t	|d dƒ t	|d d	ƒ | ¡  d S )
NT)rÔ   r   r&   r   ÚFzP>FZchi2zP>chi2)Ú	enumerateZ	wald_testr
   Útabler;   Z	statisticr5   Úndimr\   r   r6   Údf_constraintsr9   Zdf_denomZdf_residÚ	col_namesÚdistributionr8   )r=   rÙ   Z
constrastsrf   ÚcÚwtZdfræ   r#   r#   r$   rØ     s(    rØ   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestWaldAnovaOLSc                 C   s   t d| jƒ}|jdd�| _d S ©Nú0np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)F)r9   ©r   r­   rs   r=   ©r    rw   r#   r#   r$   rÍ   2  s    zTestWaldAnovaOLS.initializec           
      C   s¶   | j jj}| j jjj}t |¡}t ||¡ 	¡ }|j
dddgdd�}t t|jƒ¡}dd„ |D ƒ}|dd	… }|d
ddg }t|||||g ƒ d
gt|ƒ ddg }	t|j|	ƒ d S )NFrÐ   rÑ   TrÒ   c                 S   s   g | ]}|‘qS r#   r#   )Ú.0Úrowr#   r#   r$   Ú
<listcomp>D  s     z3TestWaldAnovaOLS.test_noformula.<locals>.<listcomp>r   rÕ   r&   r   rP   r   )r=   rR   rr   r­   Z	orig_exogÚpdZ	DataFramer   rW   rs   r×   r   r0   r1   r2   rØ   r   rå   )
r<   rr   r   r=   rÙ   r0   Zc_singlerÝ   rÞ   rå   r#   r#   r$   Útest_noformula7  s    

þzTestWaldAnovaOLS.test_noformulaN)rˆ   r‰   rŠ   r‹   rÍ   ró   r#   r#   r#   r$   rê   0  s   
rê   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestWaldAnovaOLSFc                 C   s   t d| jƒ}| ¡ | _d S )Nrì   rí   rî   r#   r#   r$   rÍ   Q  s    zTestWaldAnovaOLSF.initializec                 C   sv   | j d d…  ¡ }tj|jd< | j |¡}| j |dd … ¡}t|j|jƒ t	|jdd … |ƒ t
|jd tjƒ d S )NrP   )r   r&   r&   r   )r­   r‚   r   ÚnanÚilocr=   rb   r   Úindexr   r   r;   )r<   rl   rm   rn   r#   r#   r$   Útest_predict_missingV  s    z&TestWaldAnovaOLSF.test_predict_missingN)rˆ   r‰   rŠ   r‹   rÍ   rø   r#   r#   r#   r$   rô   O  s   
rô   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestWaldAnovaGLMc                 C   s   t d| jƒ}|jdd�| _d S rë   )r   r­   rs   r=   rî   r#   r#   r$   rÍ   c  s    zTestWaldAnovaGLM.initializeN©rˆ   r‰   rŠ   r‹   rÍ   r#   r#   r#   r$   rù   a  s   rù   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestWaldAnovaPoissonc                 C   s,   ddl m} | d| j¡}|jdd�| _d S )Nr   ©rž   ú&Days ~ C(Duration, Sum)*C(Weight, Sum)ry   r}   )Ú#statsmodels.discrete.discrete_modelrž   Úfrom_formular­   rs   r=   )r    rž   rw   r#   r#   r$   rÍ   k  s    zTestWaldAnovaPoisson.initializeNrú   r#   r#   r#   r$   rû   i  s   rû   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestWaldAnovaNegBinc                 C   s0   ddl m} d}|j|| jdd�}| ¡ | _d S )Nr   ©r¬   rý   Znb2©Zloglike_method©rþ   r¬   rÿ   r­   rs   r=   ©r    r¬   Zformularw   r#   r#   r$   rÍ   u  s    
ÿzTestWaldAnovaNegBin.initializeNrú   r#   r#   r#   r$   r   s  s   r   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestWaldAnovaNegBin1c                 C   s4   ddl m} d}|j|| jdd�}|jdd�| _d S )Nr   r  rý   Znb1r  ry   r}   r  r  r#   r#   r$   rÍ   �  s    
ÿzTestWaldAnovaNegBin1.initializeNrú   r#   r#   r#   r$   r    s   r  c                   @   s   e Zd Zdd„ ZdS )ÚCheckPairwisec                 C   sL   | j }| | j¡}| | j¡}|j}t|jd d …d d…f j| 	¡ jƒ d S )NrÕ   )
r=   r3   ÚconstraintsÚt_test_pairwiseÚ	term_nameÚresult_framer
   rö   r;   r8   )r<   r=   r?   ÚpwZpw_framer#   r#   r$   Útest_default�  s    ÿzCheckPairwise.test_defaultN)rˆ   r‰   rŠ   r  r#   r#   r#   r$   r  ‹  s   r  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestTTestPairwiseOLSc                 C   st   ddl m} dd lm  m  m} | ¡ }| ¡  |j 	dddg¡| _|d| jƒ}| 
¡ | _d| _ddd	g| _d S )
Nr   ©r   r&   r   z(np.log(Days+1) ~ C(Duration) + C(Weight)ú	C(Weight)úC(Weight)[T.2]úC(Weight)[T.3]úC(Weight)[T.3] - C(Weight)[T.2]©Ústatsmodels.formula.apir   rÇ   rÈ   rÉ   rÊ   rË   r%   r­   rÌ   rs   r=   r	  r  ©r    r   rÎ   rÏ   rw   r#   r#   r$   r%   š  s    
þz TestTTestPairwiseOLS.setup_classc                 C   sÎ   | j j| jdd ¡ d�}| j j| jddd�}t|jjd d …d d…f j|jjd d …d d…f jdd� t|jjd d …d	f jd
gd ƒ t|jjd d …d	f jdd
dgƒ t|jj	jt
jdddgtd�ƒ d S )NZhommelzA B C)r{   Zfactor_labelsr¢   )r{   r(   é   rK   r*   rª   Tr   FzB-AzC-AzC-B)Zdtype)r=   r  r	  Úsplitr
   r
  rö   r;   r   r÷   r   rŸ   Úobject)r<   Zpw1Zpw2r#   r#   r$   Ú
test_alphaª  s&    ÿÿ ÿÿÿ
ÿzTestTTestPairwiseOLS.test_alphaN)rˆ   r‰   rŠ   r‹   r%   r  r#   r#   r#   r$   r  ˜  s   
r  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestTTestPairwiseOLS2c                 C   st   ddl m} dd lm  m  m} | ¡ }| ¡  |j 	dddg¡| _|d| jƒ}| 
¡ | _d| _ddd	g| _d S )
Nr   r  r&   r   z(np.log(Days+1) ~ C(Weight) + C(Duration)r  r  r  r  r  r  r#   r#   r$   r%   ¼  s    
þz!TestTTestPairwiseOLS2.setup_classN©rˆ   r‰   rŠ   r‹   r%   r#   r#   r#   r$   r  º  s   r  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestTTestPairwiseOLS3c                 C   st   ddl m} dd lm  m  m} | ¡ }| ¡  |j 	dddg¡| _|d| jƒ}| 
¡ | _d| _ddd	g| _d S )
Nr   r  r&   r   z,np.log(Days+1) ~ C(Weight) + C(Duration) - 1r  zC(Weight)[2] - C(Weight)[1]zC(Weight)[3] - C(Weight)[1]zC(Weight)[3] - C(Weight)[2]r  r  r#   r#   r$   r%   Ï  s    
þz!TestTTestPairwiseOLS3.setup_classNr  r#   r#   r#   r$   r  Í  s   r  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestTTestPairwiseOLS4c                 C   st   ddl m} dd lm  m  m} | ¡ }| ¡  |j 	dddg¡| _|d| jƒ}| 
¡ | _d| _ddd	g| _d S )
Nr   r  r&   r   z6np.log(Days+1) ~ C(Weight, Treatment(2)) + C(Duration)zC(Weight, Treatment(2))z-C(Weight, Treatment(2))[T.1]z;C(Weight, Treatment(2))[T.3] - C(Weight, Treatment(2))[T.1]zC(Weight, Treatment(2))[T.3]r  r  r#   r#   r$   r%   â  s    
þz!TestTTestPairwiseOLS4.setup_classNr  r#   r#   r#   r$   r  à  s   r  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestTTestPairwisePoissonc                 C   sz   ddl m} dd lm  m  m} | ¡ }| ¡  |j 	dddg¡| _| 
d| j¡}|jdd�| _d| _d	d
dg| _d S )Nr   rü   r&   r   zDays ~ C(Duration) + C(Weight)ry   r}   r  r  r  r  )rþ   rž   rÇ   rÈ   rÉ   rÊ   rË   r%   r­   rÌ   rÿ   rs   r=   r	  r  )r    rž   rÎ   rÏ   rw   r#   r#   r$   r%   õ  s    þz$TestTTestPairwisePoisson.setup_classNr  r#   r#   r#   r$   r  ó  s   r  )>Ú__doc__Zstatsmodels.compat.pytestr   Zstatsmodels.compat.pandasr   r   Zstatsmodels.compat.platformr   r   r   Zstatsmodels.compat.scipyr   Únumpyr   Znumpy.testingr	   r
   r   r   Zpandasrò   rT   Zstatsmodels.apiÚapir   r  r   r   Zstatsmodels.tools._testingZtoolsZ_testingr.   Zstatsmodels.tools.sm_exceptionsr   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  r  r#   r#   r#   r$   Ú<module>   sT     



$
"