U
    md'                     @   sn   d Z ddlZddlmZmZ ddlZddlm	Z	m
Z
 ddlmZ ddlmZ dd ZG d	d
 d
Zdd ZdS )z>
Created on Sun Apr 20 17:12:53 2014

author: Josef Perktold

    N)assert_allcloseassert_equal)OLSWLS)wls_prediction_std)get_predictionc                  C   sl  d} t dd| }t j||d d t | f }t jd dddg}t ||}t | }d	|t| d
 d d < d}||| t jj| d  }|d d ddgf }t	||
 }	|	 }
|	j|t |
|jj d }t |}t|	\}}}t j||d d}|| }t jj||	j| dd t jj||	j| dd t|	|d d	d d f \}}}t j||d d	  t jj||	jd d	 |d d	  dd t jj||	jd d	 |d d	  dd t||d| 
 }| }
|j| |t |
|jj d }t |}t|\}}}t j||d d}|| }t jj||j| dd t jj||j| dd t||dd d d f dd\}}}t j||d  t||dd d f dd\}}}t j||d  t||dd d d f dd\}}}t j||dd   t||dd d d f d	d	gd\}}}t j||dd   t||d d	d d f \}}}t j||d d	  t jj||jd d	 |d d	  dd t jj||jd d	 |d d	  dd t jjtt||d dd t||dd d d f d d }t dd	dD ]L}t||dd d d f d| dd d }t j|||j|d    qd S )N2   r                  ?{Gz      @         @
   size      gM @g-q=Zrtol      ?g      @weights)r   r   )nplinspaceZc_onesrandomseeddotintnormalr   fit
cov_paramsZ	mse_residTsumsqrtr   testingZassert_almost_equalr   Zfittedvaluesr   r   Zassert_raises
ValueErrorscale)nsamplex1xbetaZy_true2wsigy2Zx2Zres2ZcovbZpredvarZpredstdprstdiv_liv_uqZci_halfZres3Zsew1ZwvZsew r8   b/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/regression/tests/test_predict.pytest_predict_se   s|    

 
   $
$ $(   "*r:   c                   @   s(   e Zd Zedd Zdd Zdd ZdS )TestWLSPredictionc                 C   s   d}t dd|}t ||d d f}ddlm} ||}ddd	g}d}t |}d
|t|d d d < t ||}t jj	|d}	||| |	  }
|d d ddgf }t
|
|d| d}| | _d S )Nr   r   r	   r
   r   )add_constantr   r   r   r   r   r   r   r   r   r   )r   r   column_stackZstatsmodels.tools.toolsr<   r   r#   r"   r    r$   r   r%   res_wls)clsr-   r/   Xr<   r0   r2   r1   Zy_trueeymod_wlsr8   r8   r9   setup_classo   s    

zTestWLSPrediction.setup_classc                 C   s  | j }t|\}}}t|}|jdd}t|j|dd t|t||fdd | }ddddd	d
g}t	|j
 | | }	|	jdd}
t|	j|dd t|
t||fdd |	 }t	|j
 | |jjd}||g}|jdd}|| }|jdd}t|j|jdd t||dd | }t	|jjdg |jjdd  }||}|jdd}|| }|jdd}t|j|jdd t||dd | }t	|jjddg d S )NT)ZobsvIh%<=r   meanZmean_seZmean_ci_lowerZmean_ci_upperZobs_ci_lowerZobs_ci_upperr   r   r   )r>   r   r   conf_intr   Zse_obsr   r=   summary_framer   columnstolistmodelexogrF   indexvalues)selfr>   r4   r5   r6   Zpred_resciZsfZ	col_namesZ	pred_res2Zci2Zsf2r/   	pred_res3ci3
pred_res3bci3bres_dfr8   r8   r9   test_ci   sH     
zTestWLSPrediction.test_cic                 C   s  ddl m} | j}|j}|j|j|j  }}}t|}||| ||d d d f  }|j	dd}	|	
 }
|
 }|
 }| }d}t|jd | |jd |d df  |	 }	|	
 }
|
 }|j	dd}|
 }| }t|jd | |jd |d df  ddlm} ||	j|	 }tt|	j|	jt|	j t|	 f}t| j|d	d
 ddlm} ||	j|	 | d}t|j|	jd	d
 t|j|	jd	d
 | }t|d |	jd	d
 t|d |	jd	d
 |	 }	|	
|}
|	jjd}|	
|}| }|	
| }| }t|j|jd	d
 t||d	d
 | }t|j jdg |	jjdd  }|	
|}| }|	
| }| }t|j|jd	d
 t||d	d
 | }t|j jddg d S )Nr   )GLMT)Zuse_t      F)params_transform_univariaterE   r   )links)linkr   r   )!Z+statsmodels.genmod.generalized_linear_modelrW   r>   rK   endogrL   r   r   r)   r%   r   rH   r   rN   Z&statsmodels.base._prediction_inferencerZ   paramsr&   r=   expZbserG   Zstatsmodels.genmod.familiesr[   ZIdentityZtvaluesZse_meanZt_testZpvaluesrF   rJ   r   rM   )rO   rW   r>   rC   rB   r@   ZwiZw_sqrtZmod_glmZres_glmZpred_glmZsf_glmZpred_res_wlsZsf_wlsZ	n_comparerZ   ZratesZrates2r[   ptZpttr/   rQ   rR   rS   rT   rU   r8   r8   r9   test_glm   s|    
  


zTestWLSPrediction.test_glmN)__name__
__module____qualname__classmethodrD   rV   ra   r8   r8   r8   r9   r;   m   s   
.r;   c                  C   s   dd t dD } dd t dD }t| |dd t dD d }|j |  |dj}|dg}|j}t|| |  |t	
dgj}t|| d S )Nc                 S   s   g | ]}|t jjd d qS )g?)r,   )r   r    r$   .0ir8   r8   r9   
<listcomp>  s     z,test_predict_remove_data.<locals>.<listcomp>d   c                 S   s   g | ]}|qS r8   r8   rf   r8   r8   r9   ri     s     c                 S   s   g | ]}d qS )r   r8   )rg   _r8   r8   r9   ri     s     r   r   )ranger   r%   r,   Zremove_datar   Zpredicted_meanr   rH   pdZSeries)r]   rL   rK   ZscalarpredZone_dZseriesr8   r8   r9   test_predict_remove_data  s     
ro   )__doc__numpyr   Znumpy.testingr   r   Zpandasrm   Z#statsmodels.regression.linear_modelr   r   Z&statsmodels.sandbox.regression.predstdr   Z"statsmodels.regression._predictionr   r:   r;   ro   r8   r8   r8   r9   <module>   s   [ 