U
    ÃmœdØ/  ã                   @   s�  d dl Zd dlmZ d dlZd dlmZ d dlZ	d dl
mZ d dlZd dlZdddddgd	d
dddgdddddgdddddgdddddgdddddgd d!d"d#dgd$d%d&d'dgd(d)d*d+dgd,d-d.d/dgd0d1d2d3dggZe	jed4d… ed  d5� d¡Zdddddgd	d6d7d8dgdd9d:d;dgdd<d=d>d?gdd@dAdBd?gddCdDdEdFgd dGdHdIdFgd$dJdKdLdFgd(dMdNdOdgd,dPdQdRd?gd0dSdTdUdFggZe	jed4d… ed  d5� d¡Zdddddgd	dVdWdXdYgddZd[d\dYgdd]d^d_d`gddadbdcd`gddddedfdgd dgdhdidYgd$djdkdldYgd(dmdndodYgd,dpdqdrd`gd0dsdtdudYggZe	jed4d… ed  d5� d¡Zejjdvdw„ ƒZdxdy„ Zejjdzd{„ ƒZejjd|d}„ ƒZd~d„ Zd€d�„ ZdS )‚é    N)Ú	Mediation)Úassert_allcloseÚindexÚEstimatezLower CI boundzUpper CI boundzP-valuezACME (control)g�±¾�Éµ?gzn¡+¨ž?gÌH¿}Â?ç        zACME (treated)g¾4»îµ?gV¶yËÕŸ?gú·Ë~ÝéÂ?zADE (control)g^=ð1X‘?gU†q7ˆÀ¿gò$éšÉ7¿?g…ëQ¸å?zADE (treated)gúbïÅí‘?g3¥õ·àÁ¿gMÛ¿²Ò¤À?zTotal effectgÕY-°ÇDº?gËGRÒÃÐ¢¿g$ïÊPÍ?gš™™™™™É?zProp. mediated (control)gô2Šå–Væ?g%@M-[›Àg…ì¼�ÍÎ@zProp. mediated (treated)gð¾**ÿæ?g<Þä·è”Àg¼t“@zACME (average)gêÊgyÜµ?gê#ð‡Ÿÿž?g ðÀ Â‡Â?zADE (average)g¬;Û¤¢‘?g.sº,&6Á¿gµN\ŽW À?úProp. mediated (average)g«>W[±¿æ?g0™ò!Àg¡0(Óhò@é   )Úcolumnsg#KæXÞU³?gcAJ˜™?gEHÝÎ¾òÀ?g*qãŠ‹³?g•Ô	h"œ?g­Áûª\¨À?gâ ú}ÿæ•?g5·BX�%¸¿g.ã¦šÏÁ?gÃõ(\�Âå?g'øŠn½–?gj’Ìê¹¿g�	Üº›§Â?g­P¤û9¹?g+Ý]gCþ™¿gõõ|ÍrÙÌ?g{®GázÄ?g¢zk`«å?gX;ŠsÔQÀg^J]2Ža@gá(yuŽæ?gœ§:äf˜Àg|}­K�à@gÌ†:¬p³?gj†TQ¼š?g6Í;NÑ‘À?g…y7R–?g¨�+õ,¹¿gWvÁàš;Â?g&¶Ømå?g÷’ÆhuÀgíc¿¡@g{Oå´§ä°?g.c}“k?g™fº×I}Ã?g{®Gáz¤?gt	4Ø´?g|b�*ß3‚?g^õ€yÈ”É?g*A*ÅÎ?g7á^™·êš¿g-AF@…#Þ?g{®Gáz´?g@Ã›5x_Ð?gŒ.o×jŸ¿g¸u7Ouß?gÕ"¢˜Ô?gÑ>VðÛ£?gÙwEð¿•á?g…8„*5É?g³EÒnô1�?g"3¸<Öý?g¸wúÒÛÏ?gw/÷ÉQ€ ?g•|ì.PÒû?gR||BvÞ²?g ·_>Y1|?gfJëo	ÀÅ?gðk$	ÂÏ?gvÆ÷Å¥*�¿g&9`W“§Þ?g	üáç¿Í?gWÿ[ÉŽ�?gÜ×�sFÔü?c                  C   sR  t j t j t¡¡} t t j | dd¡¡}t 	|d ¡}t
jd|dd�}tj||tjjtjj ¡ d�d�}t 	|d	 ¡}t
jd
|dd�}t ||¡}|j ¡  d¡|j ¡  d¡g}|j ¡  d	¡}	t||||	ddid�}
tj d¡ |
jddd�}t 	| ¡ t ¡}t|ddd� tj d¡ |
jddd�}t 	| ¡ t ¡}t|ddd� d S )NÚresultsúframing.csvÚ	cong_mesgú*emo + treat + age + educ + gender + incomeÚ	dataframe©Úreturn_type©Úlink©ÚfamilyÚemoú$treat + age + educ + gender + incomeÚtreatÚatolç•dyáý¥=©Úoutcome_fit_kwargsé‡  Ú
parametricéd   ©ÚmethodÚn_repr   ç�íµ ÷Æ°>©r   Úboot)ÚosÚpathÚdirnameÚabspathÚ__file__ÚpdÚread_csvÚjoinÚnpÚasarrayÚpatsyÚdmatrixÚsmÚGLMÚfamiliesÚBinomialÚlinksÚProbitÚOLSr	   Útolistr   r   ÚrandomÚseedÚfitÚsummaryÚframing_para_4231r   Úframing_boot_4231)Úcur_dirÚdataÚoutcomeÚoutcome_exogÚoutcome_modelÚmediatorÚmediator_exogÚmediator_modelÚtx_posÚmed_posÚmedZ	para_rsltÚdiffZ	boot_rslt© rK   ú_/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/stats/tests/test_mediation.pyÚtest_framing_example6   s>    ÿýÿÿ
ÿrM   c                  C   s  t j t j t¡¡} t t j | dd¡¡}t 	|d ¡}t
jd|dd�}tj||tjjtjj ¡ d�d�}t 	|d	 ¡}t
jd
|dd�}t ||¡}|j ¡  d¡|j ¡  d¡g}|j ¡  d	¡}	|j ¡  d¡|j ¡  d¡f}
|
di}t||||	|d�}tj d¡ |jddd�}d S )Nr
   r   r   r   r   r   r   r   r   r   r   Úageé   ©Ú
moderatorsr   r   r   r   )r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r	   r8   r   r   r9   r:   r;   )r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   ZixrQ   rI   Úmed_rsltrK   rK   rL   Útest_framing_example_moderator]   s:    ÿýÿÿÿ
ÿrS   c                  C   sê   t j t j t¡¡} t t j | dd¡¡}tj	j
d|tjjtjj ¡ d�d�}tj 
d|¡}t||ddd	d
id�}tj d¡ |jddd�}t | ¡ t ¡}t|ddd� tj d¡ |jddd�}t | ¡ t ¡}t|ddd� d S )Nr
   r   z6cong_mesg ~ emo + treat + age + educ + gender + incomer   r   z*emo ~ treat + age + educ + gender + incomer   r   r   r   r   r   r$   r   r   r   r"   r#   r   )r%   r&   r'   r(   r)   r*   r+   r,   r1   r2   Úfrom_formular3   r4   r5   r6   r7   r   r-   r9   r:   r;   r.   r<   r>   r   r=   )r?   r@   rC   rF   rI   rR   rJ   rK   rK   rL   Útest_framing_example_formula€   s&    ý
ÿrU   c                  C   s´   t j t j t¡¡} t t j | dd¡¡}tj	j
d|tjjtjj ¡ d�d�}tj 
d|¡}ddi}t||d	d
|d�}tj d¡ |jddd�}t | ¡ t ¡}t|ddd� d S )Nr
   r   z>cong_mesg ~ emo + treat*age + emo*age + educ + gender + incomer   r   z(emo ~ treat*age + educ + gender + incomerN   rO   r   r   rP   r   r   r   r   r   r"   r#   )r%   r&   r'   r(   r)   r*   r+   r,   r1   r2   rT   r3   r4   r5   r6   r7   r   r-   r9   r:   r;   r.   r<   Úframing_moderated_4231r   )r?   r@   rC   rF   rQ   rI   rR   rJ   rK   rK   rL   Ú&test_framing_example_moderator_formulaœ   s     ý
ÿrW   c                  C   s¬  t j d¡ t j d¡} dt j dd¡d  }t  d¡| |j }t j | |¡}ddddd	g}t||d
d� t j d¡ d}t jj	|d�}t  
|t  d¡¡}t  dddg¡}|t  t  |d ¡¡ }|d t  
|t  d¡¡ }	|	|d t  
t jj	|d�t  d¡¡ 7 }	|	|d t jj	|dfd� 7 }	t  
|t jd ¡|	 }
t  dddg¡}|t  t  |d ¡¡ }|d t  
t jj	|d�t  d¡¡ }||d t  
t jj	|d�t jd ¡ 7 }||d t jj	|dfd� 7 }|
| }t  
t  |¡t  d¡¡}t  
t  |¡t jd ¡}t | ¡ | ¡ | ¡ | ¡ |	 ¡ dœ¡}dddddg}tt  | ¡ ¡|d
d� tjjdd|d�}tjjd d|d�}t||d!d"ƒ}t j d#¡ |jd$d%�}| ¡ }|j ¡ j ¡ }d&d'd(d)g}t||d
d� |j ¡ j ¡ }d*d+d,g}t||d
d� t  d-d.d/dgd-d.d/dgd0d1d2dgd0d1d2dgd3d4d5dgd6d7d8dgd6d7d8dgd-d.d/dgd0d1d2dgd6d7d8dgg
¡}t| ¡ |d9d:� t|j d; d<d=d=d>� |j!d? }t|d<d=d=d>� d S )@Ni`  é   g-Cëâ6?ç      à?gã~Ñ/[|Õ?gV×_~0ô?gïK&<›ó?g
Ð|ïëwë?gÕ(RH©¿gH¯¼šò×z>r#   éÈ   ©Úsizeé   g      @é   r   é   r   )r   rY   r   g      @)éÿÿÿÿr   r   )ÚyÚxÚidÚtimerI   gn«ö<ÁvÁ¿g«fÎá÷BÂ¿g     àX@r   gNX�­TÃ¿zmed ~ xrc   )Úgroupsr@   zy ~ med + xrb   rI   iŒÚ r   ©r!   g§þj£tÈ´?g,'Áî?g�S Aà?gÙ	í¤—ó?gãlßHE¬¿g
°ÙÛ—å?g]Ý±Ø&1@g«•¦”§ä?gZœRÚrâ?gDÑ°ÖXÛæ?gttdþ4ã?g!œ&žy:â?géCYðÉã?g……I§Ôó?gö¬û©Vò?g�©š¤Rõ?g»ƒuo‡žà?g`­hà?g >Ó¦%á?g333333Ã?)Úrtol)r`   r   gìQ¸…ëá?g{®Gáz„?)rg   r   ©r   r   )"r-   r9   r:   ZrandnZrandÚeyeÚTZmultivariate_normalr   ÚnormalÚouterZonesr.   ÚsqrtÚsumZr_Zaranger*   Ú	DataFrameÚflattenZmeanr1   ZMixedLMrT   r   r;   r<   rC   ÚparamsZto_numpyrF   ÚarrayZilocÚloc)ÚmnÚcZcovZrvsZrvs1Únrb   ZxvZmxrI   ZeyÚexÚera   ÚidxZtimÚdfZdmeanrF   rC   ÚmeÚmrÚstZ	params_omZp_omZ	params_mmZp_mmZres_summÚpmrK   rK   rL   Út_est_mixedlm´   sx    ($( þ










ö
r   c               
   C   sâ  t j d¡ d} t jj| d�}t  |¡}| t  t jj| d�¡ }d| t  t jj| d�¡ }||k t¡}t  	||k||¡}dD �]X}|dkršd| }n|dkr¬|| }n|}t  | ¡}| t  t jj| d�¡ }	d| t  t jj| d�¡ }||	k t¡}
t  	|	|k|	|¡}t
 ||
|||d	œ¡}d
}tjj|d|d�}d}tjj|d|d�}t||ddddiddiddid�}|jdd�}| ¡ }|jd }|dk�r°t|dddd� q‚|dk�rÌt|dddd� q‚t|dddd� q‚d S )Ni%	  iè  r[   éþÿÿÿ)ÚfullÚpartialÚnor�   rY   r‚   )ÚytimeÚystatusÚmtimeÚmstatusÚexpzytime ~ exp + mtimer…   )Ústatusr@   zmtime ~ expr‡   rˆ   r†   Z	pred_onlyTr    Zlbfgs)Zoutcome_predict_kwargsr   Zmediator_fit_kwargsr_   rf   rh   rƒ   r   gš™™™™™¹?)r   rg   r   )r-   r9   r:   rk   rˆ   ÚlogÚuniformZastypeÚintÚwherer*   ro   r1   ZPHRegrT   r   r;   r<   rs   r   )rv   rˆ   rt   Zmtime0Úctimer‡   r†   ÚmtZlpZytime0r…   r„   rz   ZfmlrC   rF   rI   Z
med_resultZdrr~   rK   rK   rL   Ú	test_surv  sR    



 þ
ý


r�   )Únumpyr-   Zstatsmodels.apiÚapir1   r%   Zstatsmodels.stats.mediationr   Zpandasr*   Znumpy.testingr   r/   Zpytestrz   ro   Z	set_indexr>   r=   rV   ÚmarkZslowrM   rS   rU   rW   r   r�   rK   rK   rK   rL   Ú<module>   sn   ö ö ö 
&#

W