U
    Ãmœd£4  ã                   @   sÚ   d Z ddlZddl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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G dd„ dƒZdS )z=
Created on Mon May 05 17:29:56 2014

Author: Josef Perktold
é    N)Úassert_allclose)ÚOLSÚGLS)ÚTheilGLSc                   @   s@   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zej	j
d	d
„ ƒZdS )ÚTestTheilTextilec                 C   s  t j t j t¡¡}t j |dd¡}tj|dd�| _d 	¡ }t
 d 	¡ t¡ dd¡}|d d …d	f }t
 |d d …d
d …f t
 |jd ¡f¡}t
 d	ddgdd	dgg¡}d	dg}t
 ddgddgg¡}	t|||||	d�}
|
jddd�| _d| jjd< d	dlm} |j| _d S )NÚresultsztheil_textile_predict.csvú,)Úsepzyear	lconsump	lincome	lpricea_          1923	1.99651	1.98543	2.00432
        1924	1.99564	1.99167	2.00043
        1925	2	2	2
        1926	2.04766	2.02078	1.95713
        1927	2.08707	2.02078	1.93702
        1928	2.07041	2.03941	1.95279
        1929	2.08314	2.04454	1.95713
        1930	2.13354	2.05038	1.91803
        1931	2.18808	2.03862	1.84572
        1932	2.18639	2.02243	1.81558
        1933	2.20003	2.00732	1.78746
        1934	2.14799	1.97955	1.79588
        1935	2.13418	1.98408	1.80346
        1936	2.22531	1.98945	1.72099
        1937	2.18837	2.0103	1.77597
        1938	2.17319	2.00689	1.77452
        1939	2.2188	2.0162	1.78746éÿÿÿÿé   é   é   r   gffffffæ¿g
×£p=
—?g{®Gáz„¿)Úq_matrixÚsigma_priorú
data-priorT)Úcov_typeZuse_tg{”:é(?Úscale)Úresults_theil_textile)ÚosÚpathÚdirnameÚabspathÚ__file__ÚjoinÚpdZread_csvÚres_predictÚsplitÚnpÚarrayÚfloatZreshapeÚcolumn_stackÚonesÚshaper   ÚfitÚres1Ú_cacher   r   Úres2)ÚclsZcur_dirÚfilepathÚnamesÚdataÚendogÚexogÚr_matrixZr_meanZcov_rÚmodZ	resmodule© r/   ú`/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/regression/tests/test_theil.pyÚsetup_class   s,    
ÿ
ï ï*zTestTheilTextile.setup_classc           
      C   s  | j jd d …d d…f j}|\}}}}}}t| jj|dd� d}d}d}t| jj| |dd� t| jj| |dd� | j ¡ }	t|	d d …df |dd� t|	d d …df |dd� t| jj	| j j
dd� | jj| j j }tt | jj| ¡| j jdd� t| jj| jd	 d
d� d S )Né   ç�íµ ÷ÆÀ>©Úrtolgd64¬yï?g_Ôlß)ï?r   r   g{®Gáz„?Úfittedvaluesg    „×‡A)Úatol)r&   Zparams_tableÚTr   r$   ÚparamsÚbseÚtvaluesZconf_intÚrsquaredÚr2Údf_residZdf_rr   ÚsqrtZ	mse_residZrmser6   r   )
ÚselfÚptZparams2Zbse2Ztvalues2Zpvalues2Zci_lowZci_uppÚ	corr_factÚcir/   r/   r0   Ú
test_basicF   s*    
 ÿ ÿzTestTheilTextile.test_basicc                 C   s^   | j  ¡ }tt |d ¡| jjdd� tt |d ¡| jjdd� | j  ¡ }t|ddd� d S )Nr   r3   r4   r   gCcn(B:æ?)	r$   Ztest_compatibilityr   r   Zsqueezer&   ÚcompatZpvalueZ
share_data)r@   ZtcÚfracr/   r/   r0   Ú
test_otherd   s
    

zTestTheilTextile.test_otherc                 C   sT   t | jjj| jjjƒ ¡ }| jjjddd�}t|j|jdd� t|j|jdd� d S )Nr   r   )Z
pen_weightr   g»½×Ùß|Û=r4   )	r   r$   Úmodelr+   r,   r#   r   r9   r:   )r@   Úres_olsZ	res_theilr/   r/   r0   Útest_no_penalizationr   s    z%TestTheilTextile.test_no_penalizationc              	   C   s$   t  t¡� | j ¡  W 5 Q R X d S )N)ÚpytestZwarnsÚUserWarningr$   Úsummary)r@   r/   r/   r0   Útest_summaryx   s    zTestTheilTextile.test_summaryN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr1   rD   rG   rJ   rK   ÚmarkZsmokerN   r/   r/   r/   r0   r      s   
.r   c                   @   s(   e Zd ZddiZedd„ ƒZdd„ ZdS )ÚCheckEquivalenceMixinÚdefault)ç-Cëâ6?g#B’¡œÇ;c                 C   sn   t j d¡ d\}}dt  dddddg¡ }t j ||¡}d|d d …df< t  ||¡dt j |¡  }||fS )Ni@ )éÈ   é   ç      à?çš™™™™™¹?r   r   r   )r   ÚrandomÚseedr   ÚrandnÚdot)r'   ÚnobsÚk_varsÚbetaÚxÚyr/   r/   r0   Ú
get_sample‚   s    z CheckEquivalenceMixin.get_samplec                 C   sê   dddddddg}dd	d
g}dd l }|  |¡}t| ddƒsD| |¡ |D ]l}t| j|ƒ}t| j|ƒ}t |¡dks‚|d t|ƒ… }| j 	|| jd ¡\}}	d| }
t
||||	|
d� qHt
| jj| jjddd� t
| jj| jjddd� d S )Nr9   r<   r>   Zdf_modelZllfZaicÚbicr:   r;   Úpvaluesr   Úskip_inferenceFr   rU   zattribute: )r5   r7   Úerr_msgçü©ñÒMbP?rV   )r5   r7   )ÚcopyÚgetattrÚextendr$   r&   r   ÚsizeÚlenÚtolÚgetr   r6   Zresid)r@   Zattributes_fitZattributes_inferencerj   Ú
attributesZattÚr1r=   r5   r7   Úmessager/   r/   r0   Útest_attributesŒ   s4      ÿ


 ÿ ÿz%CheckEquivalenceMixin.test_attributesN)rO   rP   rQ   ro   rR   rd   rt   r/   r/   r/   r0   rT   ~   s   
	rT   c                   @   s   e Zd Zedd„ ƒZdS )Ú
TestTheil1c                 C   sR   |   ¡ \}}t||ddddgd�}| d¡| _t||d d …d d…f ƒ ¡ | _d S )Nr   ç      ð?©r   é@ é   ©rd   r   r#   r$   r   r&   ©r'   rc   rb   Úmod1r/   r/   r0   r1   ®   s    zTestTheil1.setup_classN©rO   rP   rQ   rR   r1   r/   r/   r/   r0   ru   «   s   ru   c                   @   s   e Zd Zedd„ ƒZdS )Ú
TestTheil2c                 C   sB   |   ¡ \}}t||ddddgd�}| d¡| _t||ƒ ¡ | _d S )Nr   rv   rw   rz   r{   r/   r/   r0   r1   ¸   s    zTestTheil2.setup_classNr}   r/   r/   r/   r0   r~   µ   s   r~   c                   @   s   e Zd Zedd„ ƒZdS )Ú
TestTheil3c                 C   s`   d| _ |  ¡ \}}t ||f¡}t ddd¡}t|||d�}|jddd�| _t||ƒ ¡ | _	d S )NTrX   é
   ©r-   ri   r   ©r   )
rg   rd   r   r    Úeyer   r#   r$   r   r&   )r'   rc   rb   Zxdr-   r|   r/   r/   r0   r1   Ä   s    zTestTheil3.setup_classNr}   r/   r/   r/   r0   r   À   s   r   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestTheilGLSc                 C   sv   |   ¡ \}}t|ƒ}t |¡|d k d }t|||ddddgd�}| d¡| _t||d d …d d…f |d� ¡ | _d S )	Nr   rY   r   rv   )Úsigmar   rx   ry   )r…   )	rd   rn   r   Úaranger   r#   r$   r   r&   )r'   rc   rb   r_   Úweightsr|   r/   r/   r0   r1   Ó   s    zTestTheilGLS.setup_classNr}   r/   r/   r/   r0   r„   Ð   s   r„   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestTheilLinRestrictionc                 C   sª   |   ¡ \}}|d d …d d…f  ¡ }|d d …df  |d d …df 7  < t||d d …d d…f dddggd�}| d¡| _t||ƒ ¡ | _dd	d
œ}| | j¡ || _d S )Nr   r   ry   r   r
   r�   rx   )rV   gH¯¼šò×Š>)gü©ñÒMb@?r   )rf   r;   )	rd   rj   r   r#   r$   r   r&   Úupdatero   )r'   rc   rb   Úx2r|   ro   r/   r/   r0   r1   à   s    $&ÿz#TestTheilLinRestriction.setup_classNr}   r/   r/   r/   r0   rˆ   Ý   s   rˆ   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestTheilLinRestrictionApproxc                 C   s¾   |   ¡ \}}|d d …d d…f  ¡ }|d d …df  |d d …df 7  < t||d d …d d…f dddggd�}| d¡| _t||ƒ ¡ | _dd l}| | j¡}dd	d
dœ}| |¡ || _d S )Nr   r   ry   r   r
   r�   éd   )g333333Ã?r   )gš™™™™™©?r   )g{®Gáz”?ri   )rU   r9   rf   )	rd   rj   r   r#   r$   r   r&   ro   r‰   )r'   rc   rb   rŠ   r|   rj   ro   Ztol2r/   r/   r0   r1   õ   s    $&þ
z)TestTheilLinRestrictionApprox.setup_classNr}   r/   r/   r/   r0   r‹   ò   s   r‹   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚTestTheilPanelc           	      C   s´   d}d}|| }d}ddl m} ||||dd�}d|j |¡ |_td	|jƒ | ¡ }t 	|j
d d …d
d …f |jd d …d f t |¡kf¡}|| _|| _|| _
t||ƒ ¡ | _d S )Ni,  rX   ry   r   )ÚPanelSampleiÉ  )r\   r   r\   r   )Z&statsmodels.sandbox.panel.random_panelrŽ   Zrandom_stater]   Zgroup_meansÚprintr\   Zgenerate_panelr   r    r,   Úgroupsr†   Údgpr+   r   r#   rI   )	r'   r_   Znobs_iÚn_groupsr`   rŽ   r‘   rc   rb   r/   r/   r0   r1     s     ÿzTestTheilPanel.setup_classc              @   C   s²  | j }| j}| jj| jj }}t |d ¡d| t |d |d f¡  }tjt 	|d |f¡|f }t 	|d ¡}d|d d …|d f< d}t
|||||d�}	|	 ¡ }
t ddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBg>¡}t|
j|ƒ |	jdCdD�}|	jdEdD�}|	jdFdD�}|	jdGdD�}t||dHdI� t|dJdKdI� t|dLdKdI� t|dMdKdI� t|dNdKdI� d S )ONr   rv   r
   ©r-   r   r   gçÿUGŽ4ï?g£»˜$žÕð?gåwýö3Ä×?gÓS?Êãd @g;Û£�@gZÊû8’@gë–q×Þþ?g:˜²_Á@gµ¨p€pè@gD»T×§	@g¼e‡?.@g¥$óá¼d@g3· 0@g£a)yì@g�Yrì>	@gÇFbz©@g×Si“Ü<@g®@$~ü@g¶ D,(•@gøÚùŸxõ@gŸV4JUb@g}ë?Bÿ’@g›ÍÜ!†@gÌ7Úý@gê>¾Œ{V@g2f¶"@gk�^4;]	@g˜l~ô4@g¢{÷CCY@gÄ!Hc@g™ž�¶—þ?g�ûÄdŽò?gpC­å¥9@gÒš“Õ|^ù?g6·gÿ@goÆþì&X@gc­Fì‚	@gxÜ*gså@gèKõŠ@g\23Øy ÿ?g–²W«@@gwÆšºÀ@gó­îÜ¤?	@g„<«šZ­@g'óUÀ<@gÚº'Q'{@gòðËn@g>À({*3@g &áB!@gcAåˆJ-@gœòÆ‰^@gr…ÚãC|@g+WOZž@gï&®Ï¦@geY‹ªº@göÆ9M%@g"4Æ�	@gW3|UxA@g$é�,—_ @g¶Ý|]@gOÔëy«L@gF³²}ð@Zaicc)ÚmethodZgcvZcvre   rZ   r4   gºù%fæ@rV   gfffffÒ@g „™¸"@gÝ2gfâÿ?)r+   r,   r‘   r’   r`   r   rƒ   r!   Zc_Zzerosr   r#   r   r   r9   Zselect_pen_weight)r@   rc   rb   r’   r`   ZRgÚRÚrÚlambdr.   ÚresZparams1Zpen_weight_aiccZpen_weight_gcvZpen_weight_cvZpen_weight_bicr/   r/   r0   Útest_regression"  s¬    ÿ                                                 ózTestTheilPanel.test_regressionc                 C   s‚  | j }| j}t|ƒ}|d }tj d¡ tj t |¡¡}|| }|| }d}t|d |… |d |…d |…f ƒ 	¡ }	t||d … ||d …d |…f ƒ 	¡ }
|
j
|	j
 }t||d … ||d …d |…f t |¡|	j||	 ¡  d�}|j	dd�}|j	dd�}t||d d …d |…f ƒ 	¡ }t|j|jdd	� t |j
|j
 ¡}t|j|j| d
d	� t ddddddddddg
¡}t|j|dd	� d S )Nr   iõ r€   r“   r   r‚   Úsandwichg•Ö&è.>r4   ri   güYfð{Ñ?g”„#ÌÝ|Ã?g®Ô’«”Ø?gK¾e�³7è?gëW:ž%å?g…]ÍðUá?g³Nlpè.á?g:•->å?gÐÑË¤]wØ?gØ“‡*Aá?gH¯¼šò×z>)r+   r,   rn   r   r[   r\   Zpermutationr†   r   r#   r   r   rƒ   r9   Z
cov_paramsr   r?   r:   r   )r@   r+   r,   r_   Zn05Zshuffle_idxZysZxsÚkZres_ols0Zres_ols1ÚwZmod_1Zres_1pZres_1sZres_olsfrB   Zbse1r/   r/   r0   Útest_combine_subset_regressionM  sF    &&&
þ        þz-TestTheilPanel.test_combine_subset_regressionN)rO   rP   rQ   rR   r1   r™   r�   r/   r/   r/   r0   r�     s   
+r�   )Ú__doc__r   Únumpyr   Zpandasr   rK   Znumpy.testingr   Z#statsmodels.regression.linear_modelr   r   Z(statsmodels.sandbox.regression.penalizedr   r   rT   ru   r~   r   r„   rˆ   r‹   r�   r/   r/   r/   r0   Ú<module>   s    i-
