
    Vfd>                     8   d dl m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
Zd dlZd dlmZ d dlmZ d dlmZ ddlmZ ej        Zej                            ej                            e                    Zej                            ed	          Zd
ZdZdZ dZ! ej"         ej#        e          d          Z$ ej"         ej#        e          d          Z% ej"         ej#        e           d          Z& ej"         ej#        e!          d          Z' ej(        ej                            ed                    Z) ej(        ej                            ed                    Z*d Z+d Z, G d d          Z- G d d          Z. G d d          Z/dS )    )print_functionN)assert_allcloseassert_equal)families)ValueWarning)	BetaModel   )results_betaregresultszvarname        Estimate  StdError   zvalue     Pr(>|z|)
(Intercept) -0.62254806 0.223853539 -2.781051 5.418326e-03
income      -0.01229884 0.003035585 -4.051556 5.087819e-05
persons      0.11846210 0.035340667  3.352005 8.022853e-04z`varname  Estimate StdError  zvalue     Pr(>|z|)
(phi) 35.60975   8.079598 4.407366 1.046351e-05
zvarname      Estimate StdError zvalue Pr(>|z|)
(Intercept)  1.44224    0.03401  42.404   2e-16
genderM      0.06986    0.04359   1.603    0.109
CpGCpG_1     0.60735    0.04834  12.563   2e-16
CpGCpG_2     0.97355    0.05311  18.331   2e-16zvarname Estimate StdError zvalue Pr(>|z|)
(Intercept)  8.22829    1.79098   4.594 4.34e-06
age         -0.03471    0.03276  -1.059    0.289z\s+)sepzfoodexpenditure.csvzmethylation-test.csvc                     t          j        | |d|          s(J d|t          |           t          |          f            d S )N{Gz?rtolatolzdifferent from expectednpallcloselist)abepsnames       Dlib/python3.11/site-packages/statsmodels/othermod/tests/test_beta.py
check_samer   ?   sZ    ;q!$S111 @ @&d1ggtAww?@ @ @ @ @    c                     t          j        | |d|          s&J t          |           t          |          f            d S )Nr   r   r   )r   r   r   s      r   assert_closer   D   s@    ;q!$S111EEDGGT!WW3EEEEEEr   c                   N    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	S )
TestBetaModelc                    d}t          j        |t                                                    | _        dx}| _        t          j        dt                    x}| _	        t          j        |t          |t                                                    }|                                | _        t          j        |t          |t                                                    }|                                | _        d S )N!I(food/income) ~ income + personsmethylation ~ gender + CpG~ ageexog_precisionlink_precision)r   from_formulaincomefit
income_fitmodelpatsydmatrixmethylationZlinksIdentitymeth_fitLogmeth_log_fit)clsr,   r0   mods       r   setup_classzTestBetaModel.setup_classJ   s    3"/v>>BBDD88	M';777CE$UK49NN4D4DF F Fwwyy$UK49IIKKA A A7799r   c                 
   | j         }t          |j        d d         t          d         d           t          |j        d d         t          d         d           t          |j        d d         t          d         d           d S )NEstimateMbP?zvalue皙?Pr(>|z|))r+   r   paramsexpected_income_meantvaluespvaluesselfrslts     r   test_income_coefficientsz&TestBetaModel.test_income_coefficientsX   sx    T["%';J'GNNNT\#2#&(<X(FLLLT\#2#&(<Z(H$OOOOOr   c                     | j         }t          t          j        |j        dd                    t
          d         d           t          |j        dd          t
          d         d           d S )Nr:   r;   r<   r?   )r+   r   r   expr@   expected_income_precisionrC   rD   s     r   test_income_precisionz#TestBetaModel.test_income_precision^   sy    RVDK,--.z:D	B 	B 	B 	T\"##&.z:D	B 	B 	B 	B 	Br   c                 
   | j         }t          |j        d d         t          d         d           t          |j        d d         t          d         d           t          |j        d d         t          d         d           d S )Nr;   r   r=   r>   r?   )r3   r   r@   expected_methylation_meanrB   rC   rD   s     r   test_methylation_coefficientsz+TestBetaModel.test_methylation_coefficientsi   s    }T["%.z:D	B 	B 	BT\#2#&.x8#	? 	? 	?T\#2#&.z:D	B 	B 	B 	B 	Br   c                 j    | j         }t          |j        dd          t          d         dd           d S )NrM   r;   h㈵>绽|=r   r   )r5   r   r@   expected_methylation_precisionrD   s     r   test_methylation_precisionz(TestBetaModel.test_methylation_precisionr   sE     BCC(6zB!	/ 	/ 	/ 	/ 	/ 	/r   c                    t          j        | j        t          dt                                                    }|                                }t          |j        | j	        j        d           t          |j        t          j                  sJ t          j        t          d          5  t          j        | j        t          dt                                          d           d d d            d S # 1 swxY w Y   d S )Nr$   exog_precision_formular'   rR   zunknown kwargs)matchF)rX   r'   junk)r   r(   r,   r/   r1   r2   r*   r   r@   r3   
isinstancepdSeriespytestwarnsr   )rE   mrF   s      r   test_precision_formulaz$TestBetaModel.test_precision_formula~   s!   "4:{:A27..2B2BD D D uuwwT[$-"6>>>$+ry11111\,.>??? 	/ 	/"4:{:A27..2B2B(-/ / / /	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   *;C22C69C6c           	      .   | j         | j        }}t                                          t                                          fD ]}t          j        |t          ||          }|                                }|j         	                    |j
        dz            }|j                             |j
        dz            }t          ||dd           t          |                    |dd                    |                    |dd                    dd           d S )Nr%   g)\(?ư>r      gƠ>gh㈵>)r,   r0   r1   r2   r4   r   r(   r/   r*   scorer@   _score_checkr   inverse)rE   r,   r0   linkmod2rslt_m
analytical	numericals           r   test_scoreszTestBetaModel.test_scores   s   :tvq^^%%uyy{{3 
	O 
	OD)%Q9=? ? ?DXXZZF  ++FMD,@AAJ11&-$2FGGIJ	4HHHHDLLABB88 LL12277dO O O O O
	O 
	Or   c                    | j         }|                                }|                                \  }}t          |j        |d           t          |j                            |j                  |d           |j        j        |z
  }t          |j	        |d           t          |j
        |t          j        |          z  d           d S )NvIh%<=r   g-q=)r3   get_distributionstatsr   fittedvaluesr,   _predict_varr@   endogresidresid_pearsonr   sqrt)rE   rF   distrmeanvarrv   s         r   test_results_otherz TestBetaModel.test_results_other   s    }%%''KKMM	c)4e<<<<
//<<cNNNN
 4'
E6666*EBGCLL,@uMMMMMMr   N)__name__
__module____qualname__classmethodr8   rG   rK   rO   rU   ra   rm   r|    r   r   r    r    H   s        % % [%P P P	B 	B 	BB B B/ / // / /O O O	N 	N 	N 	N 	Nr   r    c                   <    e Zd Zed             Zd Zd Zd Zd ZdS )TestBetaMethc                     d}t          j        |t          dt                                                    }|                    d          | _        t          j        | _	        d S )Nr#   r$   rW   eim)cov_type)
r   r(   r/   r1   r4   r*   res1resultsbresults_methres2)r6   formular7   s      r   r8   zTestBetaMeth.setup_class   sX    .$Wk<C49IIKKA A A 77E7**(r   c                    | j         }| j        }d}|j        j        \  }}}}t	          |j        d |         |d           t	          |j        d |         |d           t	          |j        d |         |d           t	          |j        d |         |d           |j	        j        \  }}}}t	          |j        |d          |d           t	          |j        |d          |d           t	          |j        |d          |d           t	          |j        |d          |d           t	          |j
        |j        d           t	          |j        |j        d           t	          |j        |j        d           t	          |j        |j        d           t!          |j        |j                   t!          |j        |j                   |j        |j        z
  }t!          |j        d           d	}d
}	d}
d}d}t!          ||           t	          |j
        |
d           t	          |j        |	d           t	          |j        |d           t	          |j        |d           d S )N   rc   rp   rQ   rR   r   )r      gŐ/`<g3T qN@g!Ly	Z@g1wEU@)r   r   
table_meanTr   r@   bserB   rC   table_precisionllfloglikaicbic	prsquaredpseudo_r_squaredr   df_residdf_residualnobsdf_resid_nullk_nullllnullllr
llr_pvalue)rE   r   r   k_meanpsezvpvdf_cllnr   chisqdfcs                r   
test_basiczTestBetaMeth.test_basic   sx   yy)2r2GVG,ad;;;;&)2D9999WfW-r====WfW-r====,.2r2FGG,ad;;;;)2D9999VWW-r====VWW-r====$+E::::$(7777$(7777(=DIIIIT]D$4555TY	*** !DM1T[!$$$ " !T3#E2222Su5555%e4444$777777r   c                     | j         }| j        }t          |j        |j        d         d           t          |j        |j        d         dd           d S )Nrs   g:0yE>rp   responserS   )r   r   r   rs   rv   )rE   r   r   s      r   
test_residzTestBetaMeth.test_resid   sk    yy)4:n+E!	# 	# 	# 	#
DJz$:!	. 	. 	. 	. 	. 	.r   c                    | j         j                                        }| j        }d}|j        j        \  }}}}t          |j        d |         |d           t          |j        d |         |d           t          |j	        d |         |d           t          |j
        d |         |dd           |j        j        \  }}}}t          |j        |d          |d           t          |j        |d          |d           t          |j	        |d          |d           t          |j
        |d          |d           d S )Nr   rc   rp   rQ   rS   r<   r   )r   r,   r*   r   table_mean_oimr   r   r@   r   rB   rC   table_precision_oim)rE   r   r   r   r   r   r   r   s           r   test_oimzTestBetaMeth.test_oim   sQ   y""$$y+-2r2GVG,ad;;;;&)2D9999WfW-r====WfW-r4HHHH022r2FGG,ad;;;;)2D9999VWW-r====VWW-r======r   c                 R   | j         }|                                }|j                            |j                  }|                                }|                                \  }}t          ||d           t          ||d           g d}d}t          |d |         |d           |j        j        d |         }	|j        j	        d |         }
|                    |	d          }|                    d	          }|                    |
dd
          }|j                            |j        |	|
          }t          ||d |         d           t          ||d |         d           t          ||d |         d           t          ||d           |j                            |j        |	|
          }|                                \  }}t          ||d |         d           t          ||d |         d           |                    |	|
d          }|                                \  }}t          ||d |         d           t          ||d |         d           t          j        d d         }|                    |          }t          ||d |         d           |                    ||
          }|                                \  }}t          ||d |         d           t          ||d |         d           t          |j        d         t          j                  sJ |                    dd          }|                                }t          |j        |                                d           t)          |j        d           |                    |dd          }|                                }t          |j        |d           t)          |j        d           |                    ||
dd          }|                                }t          |j        |d           t)          |j        d           |                    dd           |                    dd           |                    |
dd           |                    dd           |                    |dd          }|                                }t          j        t/          |j        j                            }d|d d<   ||                                z  }|                    |dd          }|                                }|                    dd|          }|                                }t          |j        |j        d           t          ||d           d S )Nro   rp   )gpM-`4?gYy0?gH;a8?gﭣmh2?g;2?g`<6?   gHz>F)	transform	precision)which)r&   r   r   )exogr&   )r   r&   r   r   rz   T)r   average)r	   r   )r   r   r   )r   r   r{   )r   r&   r   r   linear)r&   r   r   zlinear-precisionr	   )r   r   agg_weights)r   predictr,   rt   r@   rq   rr   r   r   r&   r/   ilocr[   argsr   ndarrayget_predictionsummary_frame	predictedrz   r   shapezeroslenru   ) rE   r   rz   var_ry   m2v2var_r6nexex_precmean6precprec6var6distr6m26v26distr6fdf6mean6fpmadfmapmdfmr   dfvawpm6dfm6pmwdfmws                                    r   test_predict_distributionz&TestBetaMeth.test_predict_distribution   s   y||~~z&&t{33%%''Bbu----bu----K K K 2A2T2222Z_RaR *+BQB/R511||+|..G;',  . .z&&t{6= ' ? ? 	tBQBxe4444tBQBxe4444d2A2hU3333f40000,,T[24W - N N<<>>SRV%0000RV%0000''R27 ( 9 9==??SRV%0000RV%0000 rr"c"" 	RaRu5555 ''S'II==??SRV%0000RV%0000',q/2:66666 !!!==  ""tyy{{????TZ(((  c GG  e%8888SY'''  c'',e ! = =  d7777SY'''(E:::+t<<<7+$) 	 	+ 	+ 	+"4dCCC   c FF  Xc$**++,,2A2
bggii!!s&$!GG  ""!!"!MM  ""s}5AAAAd//////r   N)	r}   r~   r   r   r8   r   r   r   r   r   r   r   r   r      so        ) ) [)(8 (8 (8T. . .> > >&[0 [0 [0 [0 [0r   r   c                   0    e Zd Zed             Zd Zd ZdS )TestBetaIncomec                    d}t          j        dt                    }t          j        |t          |t
                                                    }|                    d          }t          j        |t          t
                                                    }|                    d          }|| _        || _	        d S )Nr"   z	~ personsr%   newton)method)r'   )
r-   r.   r)   r   r(   r1   r4   r*   r   resr)r6   r   	exog_prec
mod_income
res_incomemod_restrictedres_restricteds          r   r8   zTestBetaIncome.setup_classV  s     6M+v66	+$ 99;;	  
  ^^8^44
"/ 99;;  
 (++8+<<!r   c                    | j         }| j        }t          j        |j        dgg          }t          j        dt          |          f          }d|d<   |j        j        d d dd f         }ddl	m
}  |||d          } ||d |f          }t          |d d         |d d                     |||d|d	          }	 ||d |fd
          }
t          |
d d         |	d d                    d S )Nr   r	   )r   r:   )
score_test)params_constrainedk_constraints)
exog_extrar   HC0)r   r   r_matrixr   )r   r   )r   r   r   concatenater@   r   r   r,   r&   %statsmodels.base._parameter_inferencer   r   )rE   r   r   params_restrr   exog_prec_extrar   sc1sc2sc1_hcsc2_hcs              r   test_score_testzTestBetaIncome.test_score_testm  s<   yy~t{QC&8998QL 1 1233*3AAAqrrE:DDDDDDj,'(* * *j4*ABBBBQBRaR)))D\*+hP P PDdO-D%*, , ,rr
F2A2J/////r   c                    | j         }ddlm}  ||          }|                                }g d}|D ]}t	          ||           |                                }|                                }t          ||dd           d S )Nr   )MLEInfluence)cooks_distanced_fittedvaluesd_fittedvalues_scaledd_paramsdfbetashat_matrix_diagresid_studentizedro   r   )r   $statsmodels.stats.outliers_influencer   get_influencegetattrr   r   )	rE   r   r   influ0influattrsattrframeframe0s	            r   test_influencezTestBetaIncome.test_influence  s    yEEEEEEd##""$$    	! 	!DE4    ##%%%%''vE>>>>>>r   N)r}   r~   r   r   r8   r   r  r   r   r   r   r   T  sK        " " [",0 0 0(? ? ? ? ?r   r   )0
__future__r   ioosr^   numpyr   numpy.testingr   r   pandasr\   r-   statsmodels.apir   statsmodels.tools.sm_exceptionsr   statsmodels.othermod.betaregr   r   r
   r   r1   pathdirnameabspath__file__cur_dirjoinres_dir_income_estimates_mean_income_estimates_precision_methylation_estimates_mean _methylation_estimates_precision
read_tableStringIOrA   rJ   rN   rT   read_csvr)   r/   r   r   r    r   r   r   r   r   <module>r&     s   % % % % % % 				 				      7 7 7 7 7 7 7 7      $ $ $ $ $ $      3 2 2 2 2 2 0 0 0 0 0 0
'//"'//(33
4
4
',,w	
*
*>  
3 $4   %r}BK&''V5 5 5 )BMBK+,,&: : :  *BMBK+,,&: : : !.BK011v"? "? "?  
RW\\'+@AA	B	Bbk"',,w0FGGHH@ @ @
F F F[N [N [N [N [N [N [N [N|k0 k0 k0 k0 k0 k0 k0 k0\<? <? <? <? <? <? <? <? <? <?r   