U
    Ãmœdk+  ã                   @   s  d dl Zd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z  ddgZ!G d	d
„ d
ƒZ"eeeeeeeeeeeeeeedœZ#d>dd„Z$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"ƒZ0G d(d)„ d)e"ƒZ1G d*d+„ d+e"ƒZ2G d,d-„ d-e"ƒZ3G d.d/„ d/e"ƒZ4G d0d1„ d1e"ƒZ5d2d3„ Z6d4d5„ Z7d6d7„ Z8d8d9„ Z9d:d;„ Z:d<d=„ Z;dS )?é    N)Úassert_allcloseÚassert_equalÚassert_almost_equal)Ú	dmatrices)ÚQuantRegé   )Úbiweight_chamberlainÚbiweight_hsheatherÚbiweight_bofingerÚcosine_chamberlainÚcosine_hsheatherÚcosine_bofingerÚgaussian_chamberlainÚgaussian_hsheatherÚgaussian_bofingerÚepan2_chamberlainÚepan2_hsheatherÚepan2_bofingerÚparzen_chamberlainÚparzen_hsheatherÚparzen_bofingerÚepanechnikov_hsheather_q75Ú	RquantregZincomeZ	Interceptc                   @   sd   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
dd„ Zdd„ Zdd„ ZdS )ÚCheckModelResultsMixinc                 C   s2   t t | jjjt ¡| jjd d …df dd� d S )Nr   çü©ñÒMbP?©Úrtol)	r   ÚnpÚravelÚres1ÚparamsÚlocÚidxÚres2Útable©Úself© r'   ún/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/regression/tests/test_quantile_regression.pyÚtest_params   s     ÿz"CheckModelResultsMixin.test_paramsc                 C   s@   t | jjdƒ tt | jjjt ¡| j	j
d d …df dd� d S )Nr   r   r   )r   r   Úscaler   r   r   Úbser!   r"   r#   r$   r%   r'   r'   r(   Útest_bse   s
     ÿzCheckModelResultsMixin.test_bsec                 C   s2   t t | jjjt ¡| jjd d …df dd� d S )Né   ç{®Gáz„?r   )	r   r   r   r   Útvaluesr!   r"   r#   r$   r%   r'   r'   r(   Útest_tvalues   s     ÿz#CheckModelResultsMixin.test_tvaluesc                 C   s|   t jj | jjd d …df | jj¡}tt 	| j
jjt ¡|dd� t jj | j
j| jj¡d }tt 	| j
j¡|ddd� d S )Nr-   gš™™™™™ñ?r   g•Ö&è.>g»½×Ùß|Û=©r   Zatol)ÚscipyÚstatsÚtZsfr#   r$   Údf_rr   r   r   r   Zpvaluesr!   r"   r/   )r&   Zpvals_stataZpvals_tr'   r'   r(   Útest_pvalues#   s    $ ÿ  ÿz#CheckModelResultsMixin.test_pvaluesc                 C   s2   t | j ¡ jt | jjd d …dd …f dd� d S )Néþÿÿÿr   r   )r   r   Zconf_intr!   r"   r#   r$   r%   r'   r'   r(   Útest_conf_int-   s     ÿz$CheckModelResultsMixin.test_conf_intc                 C   s   t | jj| jjdd� d S ©Nr   r   )r   r   Znobsr#   ÚNr%   r'   r'   r(   Ú	test_nobs1   s    z CheckModelResultsMixin.test_nobsc                 C   s   t | jj| jjdd� d S r9   )r   r   Zdf_modelr#   Zdf_mr%   r'   r'   r(   Útest_df_model4   s    z$CheckModelResultsMixin.test_df_modelc                 C   s   t | jj| jjdd� d S r9   )r   r   Zdf_residr#   r5   r%   r'   r'   r(   Útest_df_resid7   s    z$CheckModelResultsMixin.test_df_residc                 C   s   t | jj| jjdd� d S r9   )r   r   Z	prsquaredr#   Z
psrsquaredr%   r'   r'   r(   Útest_prsquared:   s    z%CheckModelResultsMixin.test_prsquaredc                 C   s    t t | jj¡| jjdd� d S r9   )r   r   Úarrayr   Zsparsityr#   r%   r'   r'   r(   Útest_sparsity=   s     ÿz$CheckModelResultsMixin.test_sparsityc                 C   s    t t | jj¡| jjdd� d S r9   )r   r   r?   r   Ú	bandwidthr#   Zkbwidthr%   r'   r'   r(   Útest_bandwidthA   s     ÿz%CheckModelResultsMixin.test_bandwidthN)Ú__name__Ú
__module__Ú__qualname__r)   r,   r0   r6   r8   r;   r<   r=   r>   r@   rB   r'   r'   r'   r(   r      s   
r   ))ÚbiwÚbofinger)rF   Úchamberlain)rF   Ú	hsheather)ÚcosrG   )rJ   rH   )rJ   rI   )ÚgaurG   )rK   rH   )rK   rI   )ÚparrG   )rL   rH   )rL   rI   )ÚeparG   )rM   rH   )rM   rI   rK   rG   c                 C   sJ   t jj ¡ j}td|dd�\}}t||ƒjd| |d�}t| |f }||fS )Núfoodexp ~ incomeÚ	dataframe©Úreturn_typeÚiid)ÚvcovÚkernelrA   )	ÚsmÚdatasetsÚengelÚload_pandasÚdatar   r   ÚfitÚd)rT   rA   rY   ÚyÚXZstatsmÚstatar'   r'   r(   Ú	setup_funa   s
    r_   c                  C   sz   t jj ¡ j} td| dd�\}}t||ƒjdd�}tt	 
|j¡tjdƒ tt	 
| ¡ ¡tjdƒ tt	 
|j¡tjdƒ d S )NrN   rO   rP   çš™™™™™¹?)Úqé   )rU   rV   rW   rX   rY   r   r   rZ   r   r   r?   Úfittedvaluesr   ZpredictÚresidZ	residuals)rY   r\   r]   Úresr'   r'   r(   Útest_fitted_residualsi   s    rf   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestEpanechnikovHsheatherQ75c                 C   sD   t jj ¡ j}td|dd�\}}t||ƒjddddd�| _t	| _
d S )	NrN   rO   rP   g      è?rR   rM   rI   )ra   rS   rT   rA   )rU   rV   rW   rX   rY   r   r   rZ   r   r   r#   )ÚclsrY   r\   r]   r'   r'   r(   Úsetup_classu   s    ÿz(TestEpanechnikovHsheatherQ75.setup_classN©rC   rD   rE   Úclassmethodri   r'   r'   r'   r(   rg   s   s   rg   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestEpanechnikovBofingerc                 C   s   t ddƒ\| _| _d S )NrM   rG   ©r_   r   r#   ©rh   r'   r'   r(   ri      s    z$TestEpanechnikovBofinger.setup_classNrj   r'   r'   r'   r(   rl   ~   s   rl   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestEpanechnikovChamberlainc                 C   s   t ddƒ\| _| _d S )NrM   rH   rm   rn   r'   r'   r(   ri   …   s    z'TestEpanechnikovChamberlain.setup_classNrj   r'   r'   r'   r(   ro   „   s   ro   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestEpanechnikovHsheatherc                 C   s   t ddƒ\| _| _d S )NrM   rI   rm   rn   r'   r'   r(   ri   ‹   s    z%TestEpanechnikovHsheather.setup_classNrj   r'   r'   r'   r(   rp   Š   s   rp   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGaussianBofingerc                 C   s   t ddƒ\| _| _d S )NrK   rG   rm   rn   r'   r'   r(   ri   ‘   s    z TestGaussianBofinger.setup_classNrj   r'   r'   r'   r(   rq   �   s   rq   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGaussianChamberlainc                 C   s   t ddƒ\| _| _d S )NrK   rH   rm   rn   r'   r'   r(   ri   —   s    z#TestGaussianChamberlain.setup_classNrj   r'   r'   r'   r(   rr   –   s   rr   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGaussianHsheatherc                 C   s   t ddƒ\| _| _d S )NrK   rI   rm   rn   r'   r'   r(   ri   �   s    z!TestGaussianHsheather.setup_classNrj   r'   r'   r'   r(   rs   œ   s   rs   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestBiweightBofingerc                 C   s   t ddƒ\| _| _d S )NrF   rG   rm   rn   r'   r'   r(   ri   £   s    z TestBiweightBofinger.setup_classNrj   r'   r'   r'   r(   rt   ¢   s   rt   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestBiweightChamberlainc                 C   s   t ddƒ\| _| _d S )NrF   rH   rm   rn   r'   r'   r(   ri   ©   s    z#TestBiweightChamberlain.setup_classNrj   r'   r'   r'   r(   ru   ¨   s   ru   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestBiweightHsheatherc                 C   s   t ddƒ\| _| _d S )NrF   rI   rm   rn   r'   r'   r(   ri   ¯   s    z!TestBiweightHsheather.setup_classNrj   r'   r'   r'   r(   rv   ®   s   rv   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestCosineBofingerc                 C   s   t ddƒ\| _| _d S )NrJ   rG   rm   rn   r'   r'   r(   ri   µ   s    zTestCosineBofinger.setup_classNrj   r'   r'   r'   r(   rw   ´   s   rw   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestCosineChamberlainc                 C   s   t ddƒ\| _| _d S )NrJ   rH   rm   rn   r'   r'   r(   ri   »   s    z!TestCosineChamberlain.setup_classNrj   r'   r'   r'   r(   rx   º   s   rx   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestCosineHsheatherc                 C   s   t ddƒ\| _| _d S )NrJ   rI   rm   rn   r'   r'   r(   ri   Á   s    zTestCosineHsheather.setup_classNrj   r'   r'   r'   r(   ry   À   s   ry   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestParzeneBofingerc                 C   s   t ddƒ\| _| _d S )NrL   rG   rm   rn   r'   r'   r(   ri   Ç   s    zTestParzeneBofinger.setup_classNrj   r'   r'   r'   r(   rz   Æ   s   rz   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestParzeneChamberlainc                 C   s   t ddƒ\| _| _d S )NrL   rH   rm   rn   r'   r'   r(   ri   Í   s    z"TestParzeneChamberlain.setup_classNrj   r'   r'   r'   r(   r{   Ì   s   r{   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestParzeneHsheatherc                 C   s   t ddƒ\| _| _d S )NrL   rI   rm   rn   r'   r'   r(   ri   Ó   s    z TestParzeneHsheather.setup_classNrj   r'   r'   r'   r(   r|   Ò   s   r|   c                  C   sl  t jddgddgddgddggt jd�} t jddddgt jd�}t|| ƒjdd	d
�}| ¡  t|jt  ddg¡ddd� t|jt  ddg¡ddd� t|j	t  ddddg¡ddd� t jddgddgddgddggt jd�} t jddddgt jd�}t|| ƒjdd	d
�}| ¡  t|jt  ddg¡ddd� t|jt  ddg¡ddd� t|j	t  ddddg¡ddd� d S )Nr   r   çÍÌÌÌÌÌ @çÍÌÌÌÌÌ@©Zdtyper-   é   ç      à?rH   )rA   g        gÉ|zK½÷î?g-Cëâ6?g#B’¡œÇ;r1   g·±~Øwê¦?gjÈ²?Ô¦‡?g‹'*7+„ ?g]Á¥„ ¿gþŒÕ�¯>r`   g6‡¾VÔ×z>gñ•'­KÏ¦?g÷ü¥×¨‡?g6‡¾VÔ×z¾gì)ºð*„ ?gŠÉ…„ ¿g·½/Á¯>)
r   r?   Úfloat64r   rZ   Úsummaryr   r    r+   rd   ©r]   r\   re   r'   r'   r(   Útest_zero_residç   sP    ( þ þ ÿ ý( ÿÿ ÿ þr…   c                  C   s‚   t jddgddgddgddggt jd�} t jddddgt jd�}t|| ƒjdd	d
d�}| ¡ }dt|ƒksnt‚dt|ƒks~t‚d S )Nr   r   r}   r~   r   r-   r€   r�   rH   T©rA   Zuse_tzP>|t|zP>|z|©r   r?   r‚   r   rZ   rƒ   ÚstrÚAssertionError)r]   r\   re   Zsummr'   r'   r(   Útest_use_t_summary
  s    (rŠ   c                  C   s†   t jddgddgddgddggt jd�} t jddddgt jd�}t|| ƒjdd	d
d�}|jdd�}dt|ƒksrt‚dt|ƒks‚t‚d S )Nr   r   r}   r~   r   r-   r€   r�   rH   Tr†   gš™™™™™É?)Úalphaz[0.025      0.975]z[0.1        0.9]r‡   )r]   r\   re   Zsumm_20r'   r'   r(   Útest_alpha_summary  s    (rŒ   c                  C   s\   t jddgddgddgddggt jd�} t jddddgt jd�}t|| ƒ d¡}| ¡  d S )	Nr   r   r}   r~   r   r-   r€   r�   )r   r?   r‚   r   rZ   Zremove_datar„   r'   r'   r(   Útest_remove_data  s    (r�   c                  C   st   t jdddgdddgdddgdddggt jd�} t jdddd	gt jd�}t|| ƒ d¡}t|jƒ| jd kspt‚d S )
Nr   r   r�   gš™™™™™é?g      ø?g      Ð?r   r-   r€   )	r   r?   r‚   r   rZ   Úlenr    Úshaper‰   )r]   r\   Zres_collinearr'   r'   r(   Útest_collinear_matrix&  s     ÿÿr�   c                  C   sð   t j d¡} t j d¡d }t j d¡}t  d¡}t j d¡d }t  || ||| f¡}t j |¡|jd k spt‚t||ƒ 	d¡}t
|jƒ|jd ks˜t‚t j | ¡ ¡|jd d ksºt‚t||d d …d d…f ƒ 	d¡}t|j|jdd� d S )	Niè  é
   rb   r   r�   éÿÿÿÿr.   r   )r   ÚrandomZonesZcolumn_stackZlinalgZmatrix_rankr�   r‰   r   rZ   rŽ   r    Z
cov_paramsr   rc   )Zx_oneZx_twoZx_threeZ	interceptr\   r]   Zres_singularZres_nsr'   r'   r(   Útest_nontrivial_singular_matrix/  s    
" r”   )rK   rG   )<Zscipy.statsr2   Únumpyr   Znumpy.testingr   r   r   Zpatsyr   Zstatsmodels.apiÚapirU   Z*statsmodels.regression.quantile_regressionr   Z#results.results_quantile_regressionr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r   r[   r_   rf   rg   rl   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r…   rŠ   rŒ   r�   r�   r”   r'   r'   r'   r(   Ú<module>   s`   L1ì

#

	