U
    mdk+                     @   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   {Gz?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 )Nr   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`   g6Vz>g'KϦ?gר?g6Vzg)*?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st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stt j| |jd d kst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

#

	