U
    Kvf1                     @   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   P/tmp/pip-unpacked-wheel-2v6byqio/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_smmnZscsmx_nonoygc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paramsrE   )r   r   seedr>   r   modelsummaryconcatenater   rG   
covariancer+   
exog_scaleexog_smoothTr&   eigr   predictcorrcoefendogrE   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_formularh   ri   rj   r=   rV   r   r   r   run_formulaz   sD    rn   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   rc   rd   )columnsre   rf   TrB   rC   rD   rF   )r   r   rH   rn   r   rI   rJ   rK   r   rG   rk   rl   rM   rN   rL   r+   rO   r&   rP   r   rQ   rR   rS   rT   rU   r   )r   rV   rm   rW   rX   rM   rN   rY   rZ   r[   r\   r]   r^   r   r   r   test_formulas   s.    

rp   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   rq      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   rH   r   rangeZ
_get_startr   scorendZapprox_fprimer   )r   r3   r,   r-   r.   r1   r+   r*   rq   qrA   r[   Zpar0parrv   Zscore_ndr   rs   r   test_score_numdiff   s    
rz   )Zstatsmodels.compat.platformr   Z)statsmodels.regression.process_regressionr   r   Znumpyr   Zpandasrk   Zpytestr!   Zstatsmodels.tools.numdiffZtoolsZnumdiffrw   Znumpy.testingr   r   r   r;   r>   markZslowZparametrizer_   rn   rp   rz   r   r   r   r   <module>   s&   0	 ,$