U
    md1                     @   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
}|rd}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 qd S )Nr>   c                    s
     | S r   )loglike)xr<   r   r   rp      s    z#test_score_numdiff.<locals>.logliker   iV  gMb`?g{Gz?r   r	   r   gHz>)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	 ,$