
    M/Ph9                         d Z ddlZddlZddlZddlZddlmZm	Z	 ddl
mZ ddlmZ ddlmZmZmZmZmZmZ ddlmZ  G d	 d
          Z G d d          Z G d d          Z G d d          ZdS )zM
Created on Tue Apr  7 13:08:37 2020

Author: Josef Perktold
License: BSD-3

    N)assert_equalassert_allclose)WLS)GLM)effectsize_smdeffectsize_2proportionscombine_effects_fit_tau_iterative_fit_tau_mm_fit_tau_iter_mm   )results_metac                   *    e Zd Zed             Zd ZdS )TestEffectsizeBinomc                     t           j        | _        d}t          j        t          j        |                    }|g d         }|j        j        \  | _	        | _
        | _        | _        d S )Na              study,nei,nci,e1i,c1i,e2i,c2i,e3i,c3i,e4i,c4i
            1,19,22,16.0,20.0,11,12,4.0,8.0,4,3
            2,34,35,22.0,22.0,18,12,15.0,8.0,15,6
            3,72,68,44.0,40.0,21,15,10.0,3.0,3,0
            4,22,20,19.0,12.0,14,5,5.0,4.0,2,3
            5,70,32,62.0,27.0,42,13,26.0,6.0,15,5
            6,183,94,130.0,65.0,80,33,47.0,14.0,30,11
            7,26,50,24.0,30.0,13,18,5.0,10.0,3,9
            8,61,55,51.0,44.0,37,30,19.0,19.0,11,15
            9,36,25,30.0,17.0,23,12,13.0,4.0,10,4
            10,45,35,43.0,35.0,19,14,8.0,4.0,6,0
            11,246,208,169.0,139.0,106,76,67.0,42.0,51,35
            12,386,141,279.0,97.0,170,46,97.0,21.0,73,8
            13,59,32,56.0,30.0,34,17,21.0,9.0,20,7
            14,45,15,42.0,10.0,18,3,9.0,1.0,9,1
            15,14,18,14.0,18.0,13,14,12.0,13.0,9,12
            16,26,19,21.0,15.0,12,10,6.0,4.0,5,1
            17,74,75,,,42,40,,,23,30)e2ineic2inci)r   	eff_prop1resultspdread_csvioStringIOvaluesTcount1nobs1count2nobs2)clsssdf3df_12ys       a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/tests/test_meta.pysetup_classzTestEffectsizeBinom.setup_class   s]    ",(& k"+b//**1112 8>}4
CIsz3999    c                 *   | j         }| j        | j        | j        | j        f}t          | \  }}t          ||j        d           t          ||j        d           t          |ddi\  }}t          ||j	        d           t          ||j
        d           t          |ddi\  }}t          ||j        d           t          ||j        d           t          |ddi\  }}t          ||j        d           t          ||j        d           d S )NvIh%<=rtol	statisticrroras)r   r   r   r    r!   r   r   y_rdv_rdy_rrv_rry_orv_ory_asv_as)selfres2dtaeffvar_effs        r&   test_effectsizez#TestEffectsizeBinom.test_effectsize9   s/   |{DJTZ@ /4WTYU33337777.DtDDWTYU33337777.DtDDWTYU33337777.DtDDWTYU3333777777r(   N)__name__
__module____qualname__classmethodr'   r>    r(   r&   r   r      s?        G G [G68 8 8 8 8r(   r   c                   *    e Zd Zed             Zd ZdS )TestEffSmdMetac                     g dg dg dg dg dg dg}g d}t          j        ||          }t          j        |g d	                   j        | _        |d
         | _        d S )N)Carroll^      <   \      rJ   )Grantb      A   rK   rI   rP   )PeckrN      (   X      rS   )DonatrH         R      rX   )StewartrN   rO   2   rT   rI   -   )Young`   rO   U   rK   rI   r`   )studymean_tsd_tn_tmean_csd_cn_c)columns)rb   rc   rd   re   rf   rg   ra   )r   	DataFramenpasarrayr   r;   	row_names)r"   datacolnamesdframes       r&   r'   zTestEffSmdMeta.setup_classQ   s     0//---,,,//////---/ ONNdH555*V %> %> %> ? @ @@A 	wr(   c                    t          j        g d          }t          j        g d          }t          j        g d          }t          | j         \  }}t	          ||d           t	          ||d           t	          ||d           t          j        g d          }t          j        g d	          }t          j        g d
          }t          j        g d          }t	          ||d           t	          ||d           d S )N)*؆92?g2?QSvu?aCB?gd;?tw?)gj>?g vϟ?g{٩?g&)?gE1?gdQg2?)g(υ?g>"[+џ?g ƛ?gM垅?g(LP7?g 3?gh㈵>r+   g-C6?gMb`?)rq   g2?rr   rs   gbń?rt   )gqJ'?gFl\?gD/?gb4k?gZ]?gSdD?)gCBԿ2?gpl5?gZ~u?gmB?g.QC?gy?)g.O?gUNџ?g%¸]?g{r	?gi7?gN('3?r*   )rj   arrayr   r;   r   )r9   yivi_asyvi_ubr<   r=   yi_mvi_ms           r&   test_smdzTestEffSmdMeta.test_smda   s   X K K K L L  K K K L L  K K K L L &tx0W 	Rd++++T2222d3333
 X K K K L L  K K K L L x K K K L L x K K K L L 	T....E222222r(   N)r?   r@   rA   rB   r'   r{   rC   r(   r&   rE   rE   O   s<        ( ( [(-3 -3 -3 -3 -3r(   rE   c                   6    e Zd Zed             Zd Zd Zd ZdS )
TestMetaK1c                 r    t          j        g d          | _        t          j        g d          | _        d S )N)	g     N@g33333N@g{GO@gfffff&O@gQ+O@gLO@gYO@gQkO@gyP@)	Q?g\(\?g
ףp=
?r   gF%u?g      ?gX5;N?g
ףp=
?g)\(?)rj   ru   r<   r=   )r"   s    r&   r'   zTestMetaK1.setup_class   sL     ( * * * + +h  8  8  8 9 9r(   c                    | j         | j        }}g d\  }}}}t          ||dd          \  }}t          |d           t	          t          j        |          |d           t          |          }	t          ||t          j	        |	          |	z            }
t	          t          j        |
          |d           t          ||d|z            }t	          t          j        |          |d	           t          ||d
d          \  }}t          |d           t	          ||d           t          |||
d          \  }}t          |d           t	          t          j        |          |d           d S )N)g!u?g8gDio?g&?g(?皙?:0yE>
tau2_startatolTgiUMu?r   r   gMbP?r   )r   maxiterF绽|=)r<   r=   r
   r   r   rj   sqrtlenr   onesr   )r9   r<   r=   t_PMt_CAt_DLt_C2tau2	convergedktau2_catau2_dltau2_dl_tau2_c2s                 r&   test_tau_kackerzTestMetaK1.test_tau_kacker   s    xW!A!A!AdD$,S'8;$H H HiY%%%t$7777HHc7BGAJJN;;(($T:::: c7AK88(($T::::.sG78: : :)Y&&&'6666 .c79@679 9 9 	Y&&&(($T::::::r(   c                    t           j        }| j        | j        }}t	          ||dd          \  }}t          |d           t          ||j        d           t          |t          j
        t          |                    d||z   z            }|                    d	
          }t          |j        |j        d           t          |j        |j        d           |                                d         \  }}	t          ||j        d           t          |	|j        d           t)          ||dd          }
t          |
j        |j        d           t          |
j        |j        d           t          |
j        |j        d           |
                    d          d         }t          |d         |j        d           t          |d         |j        d           t          |
j        |j        d           |
                                }|\  }}|j        }t          ||j        d           t          ||j        d           t          |dd           d S )Nr   r   r   Tr   r   r   )weightsfixed_scale)cov_typer*   r   pmgHz>)	method_rer   Fuse_t   )r   exk1_metaforr<   r=   r
   r   r   r   r   rj   r   r   fitparamsbbseseconf_intci_lbci_ubr	   mean_effect_resd_eff_w_reqQEtest_homogeneitydfQEp)r9   resr<   r=   r   r   mod_wlsres_wlsci_lowci_uppres3cithr   pvr   s                   r&   test_pmzTestMetaK1.test_pm   sV   'xW,S'8;$H H HiY%%%chU3333 c273s88,,a7T>6JKKK++}+55E::::SV%8888 ))++A.	6666	6666 sGt$GGG	38%8888+SU????(#&u====]]]''*1syu55551syu5555U3333 ""$$2UCG%000036....E......r(   c                    t           j        }| j        | j        }}t	          ||d|z            }t          ||j        d           t          ||d          }t          |j        |j        d           t          |j        |j	        d           t          |j
        |j        d           |                    d          }t          |d         d	         |j        d           t          |d         d         |j        d           t          |j        |j        d           t          |j        |j        d
z  d           t          |j        |j        d           |                                }|\  }}	|j        }
t          |	|j        d           t          ||j        d           t          |
dd           t           j        }t          |j        |j	        d           t          |j        |j        d           t          |d	         d	         |j        d           t          |d	         d         |j        d           t           j        }t           j        }t          |j        |j	        d           t          |j        |j	        d           t          |j        t;          j        |j                  z  |j        d           t          |j
        t;          j        |j                   z  |j        d           t          t;          j        |j!                  |j        d           t          t;          j        |j"                  |j        d           |                    d          }t          |d         d	         |j        d           t          |d         d         |j        d           t          |d         d	         |j        d           t          |d         d         |j        d           |                                }|\  }}	|j        }
t          |	|j        d           t          ||j        d           t          |
dd           d S )Nr   r   r   dl)r   r*   Fr   r   d   r   T      )#r   exk1_dlr<   r=   r   r   r   r	   r   r   r   r   r   r   r   r   r   i2I2h2H2r   r   r   exk1_femean_effect_fesd_eff_w_feexk1_dl_hksjexk1_fe_hksjrj   r   scale_hksj_fescale_hksj_revar_hksj_fevar_hksj_re)r9   r   r<   r=   r   r   r   r   r   r   r   res_feres_dlsres_fess                 r&   test_dlzTestMetaK1.test_dl   s   "xW3W55chU3333sGt<<<	38%8888+SU????(#&u====]]]''1a#)%88881a#)%8888U3333#E::::e4444""$$2UCG%000036....E.... %+VXEBBBB(&)%@@@@1a&,U;;;;1a&,U;;;; +++WYUCCCC+WYUCCCC(2743E+F+FF
	0 	0 	0 	0(2743E+F+FF
	0 	0 	0 	0 0117:EJJJJ 0117:EJJJJ ]]]&&1a'-e<<<<1a'-e<<<<1a'-e<<<<1a'-e<<<<""$$2UGKe44447:E2222E......r(   N)r?   r@   rA   rB   r'   r   r   r   rC   r(   r&   r}   r}      s\        9 9 [9; ; ;B(/ (/ (/T</ </ </ </ </r(   r}   c                   T    e Zd Zed             Zd Zej        j        d             Z	dS )TestMetaBinORc                     t           j        x| _        }|j        |j        |j        |j        f| _        t          | j        ddi\  }}t          ||dd          }|| _
        || _        || _        d S )Nr-   r/   chi2T)r   r   )r   results_or_dl_hkr:   event_en_eevent_crg   r;   r   r	   r<   r=   res1)r"   r:   r<   r=   r   s        r&   r'   zTestMetaBinOR.setup_class(  sp    &774<4<B.H4HHWsGvTJJJr(   c                 |   | j         }| j        }t          | j        |j        d           t          | j        |j        dz  d           t          |j        |j        d           t          |j	        |j
        d           t          |j        |j        d           t          |j        |j        d           t          |j        |j        d           t          |j        |j        d           |                                }|\  }}|j        }t          ||j        d           t          ||j        d           t          ||j        d           t          |j        |j        d           t          |j        |j        dz  d           |                    d          }t          |d         d         |j        d           t          |d         d	         |j        d           |                    d
          }t          |d         d         |j        d           t          |d         d	         |j        d           d	| j        z  }t?          | j        tA          j!        tE          | j                            |          }	|	#                                }
t          |
j$        |j        d           d	| j        |j        z   z  }t?          | j        tA          j!        tE          | j                            |          }	|	#                                }
t          |
j$        |j        d           d S )Nr*   r+   r   r   Tr   r   r   r   F)var_weights)%r   r:   r   r<   TEr=   seTEr   TE_fixedr   
seTE_fixedr   Qr   r   	TE_randomsd_eff_w_re_hksjseTE_randomr   r   pval_Qdf_Qr   r   r   Hr   lower_randomupper_randomlower_fixedupper_fixedr   rj   r   r   r   r   )r9   r   r:   r   r   r   r   r   r   mod_glmres_glms              r&   
test_basiczTestMetaBinOR.test_basic3  s   yy$'6666dil????+T]GGGG($/FFFFU3333	4959999+T^%HHHH-t/?eLLLL""$$2U46....DKe4444DIE2222u55557777]]]&& 	1a$"3%@@@@1a$"3%@@@@]]]''1a$"2????1a$"2????dl"dhDH 6 6")+ + +++--EBBBBt|di/0dhDH 6 6")+ + +++--UCCCCCCr(   c                 2   | j         }|                    d           |                    dd           |                    dd           t          j        t          d          5  |                    d	d
           d d d            d S # 1 swxY w Y   d S )NFr   T)use_expr   g{Gz?)alphar   zunexpected keyword)match   )junkr   )r   plot_forestpytestraises	TypeError)r9   r   s     r&   	test_plotzTestMetaBinOR.test_plote  s     yu%%%U333t5111]9,@AAA 	2 	2!5111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   'BBBN)
r?   r@   rA   rB   r'   r   r   mark
matplotlibr   rC   r(   r&   r   r   %  sc           [0D 0D 0Dd [2 2 2 2 2r(   r   )__doc__r   numpyrj   pandasr   r   numpy.testingr   r   #statsmodels.regression.linear_modelr   +statsmodels.genmod.generalized_linear_modelr   statsmodels.stats.meta_analysisr   r   r	   r
   r   r   r   r   r   rE   r}   r   rC   r(   r&   <module>r     s    
			          7 7 7 7 7 7 7 7 3 3 3 3 3 3 ; ; ; ; ; ;7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 " ! ! ! ! !18 18 18 18 18 18 18 18h?3 ?3 ?3 ?3 ?3 ?3 ?3 ?3DQ/ Q/ Q/ Q/ Q/ Q/ Q/ Q/hI2 I2 I2 I2 I2 I2 I2 I2 I2 I2r(   