U
    Kvf/                     @   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dd 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Uq7g$7?gQ?zADE (treated)gb?g3gMۿҤ?zTotal effectgY-D?gGRТg$P?g?zProp. mediated (control)g2V?g%@M-[g켍@zProp. mediated (treated)g**?g<gt@zACME (average)ggyܵ?g#?g  ?zADE (average)g;ۤ?g.s,&6gN\W ?Prop. mediated (average)g>W[?g0!g0(h@   )columnsg#KXU?gcAJ?gEHξ?g*q㊋?g	h"?g\?g }?g5BX%g.?g(\?g'n?gj깿g	ܺ?gP9?g+]gCg|r?g{Gz?gzk`?gX;sQg^J]2a@g(yu?g:fg|}K@g:p?gjTQ?g6;Nё?gy7R?g+,gWv;?g&m?ghugc@g{O崧?g.c}k?gfI}?g{Gz?gt	4ش?g|b*3?g^yȔ?g*A*?g7^ꚿg-AF@#?g{Gz?g@Û5x_?g.ojgu7Ou?g"?g>V?gwE?g8*5?gEn1?g"3<?gw?gw/Q?g|.P?gR||Bv޲?g _>Y1|?gfJo	?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atoldy=outcome_fit_kwargs  
parametricd   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   J/tmp/pip-unpacked-wheel-2v6byqio/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   ixrQ   rI   med_rsltrK   rK   rL   test_framing_example_moderator]   s:    
rT   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   rS   rJ   rK   rK   rL   test_framing_example_formula   s&    
rV   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   rU   r3   r4   r5   r6   r7   r   r-   r9   r:   r;   r.   r<   framing_moderated_4231r   )r?   r@   rC   rF   rQ   rI   rS   rJ   rK   rK   rL   &test_framing_example_moderator_formula   s     
rX   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(RHgHz>r#      size   g      @   r      r   )r   rZ   r   g      @)r   r   )yxidtimerI   gn<vgfB¿g     X@r   gNXTÿzmed ~ xrd   )groupsr@   zy ~ med + xrc   rI   i r   r!   gjtȴ?g,'?gSA?g	?glHEg
ۗ?g]ݱ&1@g?gZRr?gDѰX?gttd4?g!&y:?gCY?gI?gV?gR?guo?g`h?g >Ӧ%?g333333?)rtol)ra   r   gQ?g{Gz?)rh   r   r   r   )"r-   r9   r:   ZrandnZrandZeyeTZmultivariate_normalr   normalouterZonesr.   sqrtsumZr_Zaranger*   	DataFrameflattenZmeanr1   ZMixedLMrU   r   r;   r<   rC   paramsZto_numpyrF   arrayZilocloc)mncZcovZrvsZrvs1nrc   ZxvZmxrI   Zeyexerb   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rd| }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rt|dddd q|dkrt|dddd qt|dddd qd S )Ni%	  i  r\   )fullpartialnor   rZ   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`   rg   ri   r   r   g?)r   rh   r   )r-   r9   r:   rk   r   loguniformZastypeintwherer*   ro   r1   ZPHRegrU   r   r;   r<   rs   r   )rv   r   rt   Zmtime0ctimer   r   mtlpZytime0r   r   rz   ZfmlrC   rF   rI   Z
med_resultZdrr~   rK   rK   rL   	test_surv  sR    



 



r   )Znumpyr-   Zstatsmodels.apiapir1   r%   Zstatsmodels.stats.mediationr   Zpandasr*   Znumpy.testingr   r/   Zpytestrz   ro   Z	set_indexr>   r=   rW   markZslowrM   rT   rV   rX   r   r   rK   rK   rK   rL   <module>   sn      
&#

W