U
    Kvfk+                     @   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'   Y/tmp/pip-unpacked-wheel-2v6byqio/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   Z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 r8   )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 r8   )r   r   Zdf_residr#   r4   r%   r'   r'   r(   test_df_resid7   s    z$CheckModelResultsMixin.test_df_residc                 C   s   t | jj| jjdd d S r8   )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 r8   )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 r8   )r   r   r>   r   	bandwidthr#   Zkbwidthr%   r'   r'   r(   test_bandwidthA   s     z%CheckModelResultsMixin.test_bandwidthN)__name__
__module____qualname__r)   r+   r/   r5   r7   r:   r;   r<   r=   r?   rA   r'   r'   r'   r(   r      s   
r   ))biwbofinger)rE   chamberlain)rE   	hsheather)cosrF   )rI   rG   )rI   rH   )gaurF   )rJ   rG   )rJ   rH   )parrF   )rK   rG   )rK   rH   )eparF   )rL   rG   )rL   rH   rJ   rF   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kernelr@   )	smdatasetsengelload_pandasdatar   r   fitd)rS   r@   rX   yXZstatsmZ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 )NrM   rN   rO   皙?)q   )rT   rU   rV   rW   rX   r   r   rY   r   r   r>   fittedvaluesr   ZpredictresidZ	residuals)rX   r[   r\   resr'   r'   r(   test_fitted_residualsi   s    rd   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 )	NrM   rN   rO   g      ?rQ   rL   rH   )r_   rR   rS   r@   )rT   rU   rV   rW   rX   r   r   rY   r   r   r#   )clsrX   r[   r\   r'   r'   r(   setup_classu   s    z(TestEpanechnikovHsheatherQ75.setup_classNrB   rC   rD   classmethodrg   r'   r'   r'   r(   re   s   s   re   c                   @   s   e Zd Zedd ZdS )TestEpanechnikovBofingerc                 C   s   t dd\| _| _d S )NrL   rF   r]   r   r#   rf   r'   r'   r(   rg      s    z$TestEpanechnikovBofinger.setup_classNrh   r'   r'   r'   r(   rj   ~   s   rj   c                   @   s   e Zd Zedd ZdS )TestEpanechnikovChamberlainc                 C   s   t dd\| _| _d S )NrL   rG   rk   rl   r'   r'   r(   rg      s    z'TestEpanechnikovChamberlain.setup_classNrh   r'   r'   r'   r(   rm      s   rm   c                   @   s   e Zd Zedd ZdS )TestEpanechnikovHsheatherc                 C   s   t dd\| _| _d S )NrL   rH   rk   rl   r'   r'   r(   rg      s    z%TestEpanechnikovHsheather.setup_classNrh   r'   r'   r'   r(   rn      s   rn   c                   @   s   e Zd Zedd ZdS )TestGaussianBofingerc                 C   s   t dd\| _| _d S )NrJ   rF   rk   rl   r'   r'   r(   rg      s    z TestGaussianBofinger.setup_classNrh   r'   r'   r'   r(   ro      s   ro   c                   @   s   e Zd Zedd ZdS )TestGaussianChamberlainc                 C   s   t dd\| _| _d S )NrJ   rG   rk   rl   r'   r'   r(   rg      s    z#TestGaussianChamberlain.setup_classNrh   r'   r'   r'   r(   rp      s   rp   c                   @   s   e Zd Zedd ZdS )TestGaussianHsheatherc                 C   s   t dd\| _| _d S )NrJ   rH   rk   rl   r'   r'   r(   rg      s    z!TestGaussianHsheather.setup_classNrh   r'   r'   r'   r(   rq      s   rq   c                   @   s   e Zd Zedd ZdS )TestBiweightBofingerc                 C   s   t dd\| _| _d S )NrE   rF   rk   rl   r'   r'   r(   rg      s    z TestBiweightBofinger.setup_classNrh   r'   r'   r'   r(   rr      s   rr   c                   @   s   e Zd Zedd ZdS )TestBiweightChamberlainc                 C   s   t dd\| _| _d S )NrE   rG   rk   rl   r'   r'   r(   rg      s    z#TestBiweightChamberlain.setup_classNrh   r'   r'   r'   r(   rs      s   rs   c                   @   s   e Zd Zedd ZdS )TestBiweightHsheatherc                 C   s   t dd\| _| _d S )NrE   rH   rk   rl   r'   r'   r(   rg      s    z!TestBiweightHsheather.setup_classNrh   r'   r'   r'   r(   rt      s   rt   c                   @   s   e Zd Zedd ZdS )TestCosineBofingerc                 C   s   t dd\| _| _d S )NrI   rF   rk   rl   r'   r'   r(   rg      s    zTestCosineBofinger.setup_classNrh   r'   r'   r'   r(   ru      s   ru   c                   @   s   e Zd Zedd ZdS )TestCosineChamberlainc                 C   s   t dd\| _| _d S )NrI   rG   rk   rl   r'   r'   r(   rg      s    z!TestCosineChamberlain.setup_classNrh   r'   r'   r'   r(   rv      s   rv   c                   @   s   e Zd Zedd ZdS )TestCosineHsheatherc                 C   s   t dd\| _| _d S )NrI   rH   rk   rl   r'   r'   r(   rg      s    zTestCosineHsheather.setup_classNrh   r'   r'   r'   r(   rw      s   rw   c                   @   s   e Zd Zedd ZdS )TestParzeneBofingerc                 C   s   t dd\| _| _d S )NrK   rF   rk   rl   r'   r'   r(   rg      s    zTestParzeneBofinger.setup_classNrh   r'   r'   r'   r(   rx      s   rx   c                   @   s   e Zd Zedd ZdS )TestParzeneChamberlainc                 C   s   t dd\| _| _d S )NrK   rG   rk   rl   r'   r'   r(   rg      s    z"TestParzeneChamberlain.setup_classNrh   r'   r'   r'   r(   ry      s   ry   c                   @   s   e Zd Zedd ZdS )TestParzeneHsheatherc                 C   s   t dd\| _| _d S )NrK   rH   rk   rl   r'   r'   r(   rg      s    z TestParzeneHsheather.setup_classNrh   r'   r'   r'   r(   rz      s   rz   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,            ?rG   )r@   g        g|zK?g-C6?g#B;r0   g~w?gjȲ?Ԧ?g'*7+?g]gՐ>r^   g6Vz>g'KϦ?gר?g6Vzg)*?gg/>)
r   r>   float64r   rY   summaryr   r    r*   rb   r\   r[   rc   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   rG   Tr@   Zuse_tzP>|t|zP>|z|r   r>   r   r   rY   r   strAssertionError)r\   r[   rc   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   rG   Tr   g?)alphaz[0.025      0.975]z[0.1        0.9]r   )r\   r[   rc   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   rY   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   rY   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  
   r`   r   r   r-   r   )r   randomZonesZcolumn_stackZlinalgZmatrix_rankr   r   r   rY   r   r    Z
cov_paramsr   ra   )Zx_oneZx_twoZx_threeZ	interceptr[   r\   Zres_singularZres_nsr'   r'   r(   test_nontrivial_singular_matrix/  s    
" r   )rJ   rF   )<Zscipy.statsr1   Znumpyr   Znumpy.testingr   r   r   Zpatsyr   Zstatsmodels.apiapirT   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   rZ   r]   rd   re   rj   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r   r   r   r   r   r   r'   r'   r'   r(   <module>   s`   L1

#

	