U
    Ãmœd1  ã                   @   sà   d dl mZ d dlmZmZ d dlZd dlZd dl	Z	d dl
Z
d dlm  mZ d dlmZmZ dd„ Zdd„ Zd	d
„ Ze	jje	j dddg¡dd„ ƒƒZdd„ Ze	jje	j dddg¡dd„ ƒƒZe	j dddg¡dd„ ƒZdS )é    )ÚPLATFORM_OSX)Ú
ProcessMLEÚGaussianCovarianceN)Úassert_allcloseÚassert_equalc                 C   sD   t jd }t jd }t jd }| r.t jd }n
t  g ¡}||||fS )N)é   r   éÿÿÿÿr   )r   r   )g      à?çš™™™™™¹?)ç      Ð?r
   )ÚnpZr_Úarray)ÚnoiseÚmn_parÚsc_parÚsm_parÚno_par© r   úe/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/regression/tests/test_processreg.pyÚmodel1   s    



r   c              
   C   s0  ||ƒ\}}}}t  t  | d ¡t  d¡¡}t  t  | d ¡t  d¡¡}|| ¡  | ¡  }	t jj| t|ƒfd�}
t jj| t|ƒfd�}d|d d …df< |	|d d …df< t jj| t|ƒfd�}d|d d …df< |	|d d …df< t  	|
|¡}t  
t  	||¡¡}t  
t  	||¡¡}|�r^t jj| t|ƒfd�}d|d d …df< |	|d d …df< t  
t  	||¡¡}nd }| ¡ }tƒ }t dd„ ¡}t|ƒD ]\}}||  |¡ �q†| ¡ D ]V\}}| || || || ¡}t j |¡}||  t  	|t jjt|ƒd�¡7  < �q¨|�r||t jj|jd� 7 }||
|||||fS )Né   ©Úsizer   r   c                   S   s   g S ©Nr   r   r   r   r   Ú<lambda>?   ó    zsetup1.<locals>.<lambda>)r   ZkronZarangeZonesZmeanZstdÚrandomÚnormalÚlenÚdotÚexpÚcopyr   ÚcollectionsÚdefaultdictÚ	enumerateÚappendÚitemsZget_covÚlinalgZcholeskyÚshape)ÚnÚ	get_modelr   r   r   r   r   ÚgroupsÚtimeZtime_zÚx_meanÚx_scÚx_smZmnÚscÚsmÚx_noÚnoÚyÚgcZixÚiÚgÚiiÚcÚrr   r   r   Úsetup1   s@    *r:   c                 C   s6   t | ||ƒ\}}}}}}}	t|||||||	ƒ}
|
 ¡ S r   )r:   r   Úfit)r(   r)   r   r3   r,   r-   r.   r1   r+   r*   Úpregr   r   r   Ú
run_arraysO   s    r=   r   FTc           
      C   s  t j d¡ tdt| ƒ}|j}| ¡  t  t| ƒ¡}t|j	|ddd� | 
|jdd… |jdd…d d …f |jdd…d d …f ¡}t||jƒ t j |¡\}}t|dkdƒ | ¡ }tt  ||j¡d d	kdƒ |j|jd
�}t||ƒ |j|j	|jd�}	t||	ƒ | t  t|j	ƒ¡¡ d S )Ni*   éè  g333333Ó?©ÚatolZrtolr   r   T©r   r   çš™™™™™É?©Úexog©ÚparamsrD   )r   r   Úseedr=   r   ÚmodelÚsummaryÚconcatenater   rF   Ú
covariancer+   Ú
exog_scaleÚexog_smoothÚTr&   Úeigr   ÚpredictÚcorrcoefÚendogrD   Út_testÚeyer   )
r   ÚfÚmodÚeparÚcvÚaÚ_ÚyhatÚyhatmÚyhat0r   r   r   Útest_arraysX   s&    $ÿ

r^   c                 C   s
  t | ||ƒ\}}}}}}}	t ||d d …df |d d …df |d d …df |d d …df |d d …df |d d …df |d d …df |d d …df ||	dœ¡}
|rÈ|d d …df |
d< |d d …df |
d< d}d	}d
}|rÞd}nd }tj||
|||ddd�}| ¡ }||
fS )Nr   r   é   é   )r3   Úx1Zx2Zx3Zx4Úxsc1Úxsc2Úxsm1Úxsm2r+   r*   Zxno1Zxno2zy ~ 0 + x1 + x2 + x3 + x4z0 + xsc1 + xsc2z0 + xsm1 + xsm2z0 + xno1 + xno2r+   r*   )ÚdataÚscale_formulaÚsmooth_formulaÚnoise_formular+   r*   )r:   ÚpdÚ	DataFramer   Zfrom_formular;   )r(   r)   r   r3   r,   r-   r.   r1   r+   r*   ÚdfZmean_formularg   rh   ri   r<   rU   r   r   r   Úrun_formulaz   sD    õùrm   c                 C   sB  t j d¡ tdt| ƒ\}}|j}| ¡  t  t| ƒ¡}t|j	|ddd� t
j|jdd…d d …f dd	gd
�}t
j|jdd…d d …f ddgd
�}| |jdd… ||¡}t||jƒ t j |¡\}}	t|dkdƒ | ¡ }
tt  |
|j¡d dkdƒ |j|d�}t|
|ƒ |j|j	|d�}t|
|ƒ | t  t|j	ƒ¡¡ d S )NiU"  r>   r	   r   r?   r   r   rb   rc   )Úcolumnsrd   re   TrA   rB   rC   rE   )r   r   rG   rm   r   rH   rI   rJ   r   rF   rj   rk   rL   rM   rK   r+   rN   r&   rO   r   rP   rQ   rR   rS   rT   r   )r   rU   rl   rV   rW   rL   rM   rX   rY   rZ   r[   r\   r]   r   r   r   Útest_formulas¦   s.    ÿÿ

ro   c                    sÜ   t dt| ƒ\}}}}}}}t|||||||ƒ‰ ‡ fdd„}|jd |jd  |jd  }	| rj|	|jd 7 }	tj d¡ tr~dnd}
tdƒD ]L}ˆ  	¡ }|d	tjj
|	d
�  }ˆ  |¡}tj||dd�}t|||
dd� qŠd S )Nr>   c                    s
   ˆ   | ¡S r   )Úloglike)Úx©r<   r   r   rp   Ó   s    z#test_score_numdiff.<locals>.logliker   iV  gü©ñÒMb`?g{®Gáz„?r   r	   r   gH¯¼šò×z>)Úepsilong-Cëâ6?r?   )r:   r   r   r'   r   r   rG   r   ÚrangeZ
_get_startr   ÚscoreÚndZapprox_fprimer   )r   r3   r,   r-   r.   r1   r+   r*   rp   Úqr@   rZ   Zpar0Úparru   Zscore_ndr   rr   r   Útest_score_numdiffÌ   s    
ry   )Zstatsmodels.compat.platformr   Z)statsmodels.regression.process_regressionr   r   Únumpyr   Zpandasrj   Zpytestr!   Zstatsmodels.tools.numdiffZtoolsZnumdiffrv   Znumpy.testingr   r   r   r:   r=   ÚmarkZslowZparametrizer^   rm   ro   ry   r   r   r   r   Ú<module>   s&   0	 ,$