
    'YHh:                     @   d dl Z d dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
Zd dlZddlmZ ddlmZ 	 dd dZd	 Z G d
 d      Zej&                  j)                  ej&                  j+                  e            Zej&                  j1                  ed      Z ej4                  e      ZeD  cg c]'  } | j9                  d      s| j;                  d      r| ) c} ZdZdZdZ ejB                  jE                  d e# e jH                  eeee                   d        Z%yc c} w )    N)PHReg)assert_allcloseassert_equalassert_   )survival_r_results)survival_enet_r_resultsbfgs)methoddispc                    |!d| ||fz  }d| ||fz  }d| ||fz  }d| ||fz  }n$d| |||fz  }d| |||fz  }d| |||fz  }d| |||fz  }t        t        |      }t        t        |      }	t        t        |      }
t        t        |      }||	|
|fS )	Nzcoef_%d_%d_%szse_%d_%d_%sztime_%d_%d_%szhazard_%d_%d_%szcoef_%d_%d_%s_%szse_%d_%d_%s_%sztime_%d_%d_%s_%szhazard_%d_%d_%s_%s)getattrr   )npextties	coef_namese_name	time_namehazard_namecoefsetimehazards               ^/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/duration/tests/test_phreg.pyget_resultsr   "   s    
{#q!Tl2	1a,.#q!Tl2	'1a,6&!QT)::	"aC%66&!QT)::	*aC->>%y1D	#W	-B%y1D'5FT6!!    c                      e Zd Zed        Zed        Zd Zd Zd Zd Z	d Z
d Zd	 Zej                  j                  d
        Zej                  j                  d        Zej                  j                  d        Zd Zy)	TestPHRegc                 F   t         j                  j                  t         j                  j                  t                    }t        j                  t         j                  j                  |d|       d      }|d d df   }|d d df   }|d d df   }|d d dd f   }||||fS )Nresults )	delimiterr   r         )ospathdirnameabspath__file__np
genfromtxtjoin)fnamecur_dirdatar   statusentryexogs          r   	load_filezTestPHReg.load_file6   s    ''//"''//(";<}}RWW\\'9eD'*,AaCyacQqS	AabDzVUD((r   c           	         t         j                  |       \  }}}}t        |      }| j                  d      }	t	        |	d         }t	        |	d   j                  d      d         }
|dd }t        j                  t        d      t        j                  |dz              }t        ||||      } |j                  di t        }t        ||
d |      \  }}}}t        |j                  |d	       t        |j                  |d
	       |j                   d   \  }}} t        |||||      j                  di t        }t        ||
d|      \  }}}}t        |j                  |d	       t        |j                  |d	        t        |||||      j                  di t        }t        ||
d|      \  }}}}t        |j                  |d
	       t        |j                  |d
	        t        ||||||      j                  di t        }t        ||
d|      \  }}}}t        |j                  |d	       t        |j                  |d
	       |j                   d   \  }}}y )N_r$   r%   .r      )r   gMbP?rtolg-C6?)r2   r   et)stratar   st)r2   r<   r   et_st )r   r4   lensplitintr+   kronrangeonesr   fitargsr   r   paramsbsebaseline_cumulative_hazard)r.   r   entry_fstrata_fr   r1   r2   r3   r   vsr   ties1r<   modphrbcoef_rse_rtime_rhazard_rtime_hcumhazsurvr   r   s                           r   do1zTestPHReg.do1C   sD    %.$7$7$>!feTI[[1J1C #$Qq	 q27716?3 D$T2sww)4Q4)G&fhV$7$T2#>>qA$uT4u  #,&*,%0AtU%C"b&(T5"40%uT4!!$-'+-%0AtU%C"b&(T5"403uT4u"//2s;59;%0Aw%F"b&(T5"40  $>>qAr   c                    t         j                  j                  d       dt         j                  j                  d      z  }t         j                  j	                  ddd      j                  t         j                        }t         j                  j                  d      }t         j                  |dd t         j                  |dd	 t         j                  |d	d
d d f<   t        |||d      }t        t        |j                        d       t        t        |j                        d       t        |j                  j                  t         j                   d          y )N麅  2      sizer   r$   r\      r8   
      drop)missing   )re   r`   )r+   randomseeduniformrandintastypefloat64normalnanr   r   r@   endogr1   r3   shaper_)selfr   r1   r3   mds        r   test_missingzTestPHReg.test_missingr   s    
		uBII%%3%//""1a-44RZZ@yyW-FFQq	vvqRU1W4vv6BHHs+BII,ruuU|4r   c           
         t         j                  j                  d       dt         j                  j                  d      z  }t         j                  j	                  ddd      j                  t         j                        }t         j                  j                  d      }t        j                  |      }|dd dz  |dd t        j                  |||d d df   |d d d	f   |d d df   |d d d
f   |d      }t        ||||      }|j                         }d}t        j                  ||||      }	|	j                         }
t        j                  ||dd      }|j                         }t        |j                  |
j                         t        |j                  |j                         t        |j                   |
j                          t        |j                   |j                          y )NrZ   r[   r\   r]   r   r$   r_   ra   r   r%   )r   r1   exog1exog2exog3exog4r2   r2   z$time ~ exog1 + exog2 + exog3 + exog4)r1   r2   r1   r2   )r+   rf   rg   rh   ri   rj   rk   rl   
zeros_likepd	DataFramer   rF   from_formular   rH   rI   )rq   r   r1   r3   r2   dfmod1rslt1fmlmod2rslt2mod3rslt3s                r   test_formulazTestPHReg.test_formula   s   
		uBII%%3%//""1a-44RZZ@yyW-d#1Rj1na\\46$(AJad$(AJad$)+ ,
 T4u5
 5!!#r&(-/
!!#r((/1
ell3ell3		599-		599-r   c                 D   t         j                  d   }t         j                  d   }t         j                  d   }t         j                  d   }t        j                  ||||d      }t	        j
                  dd|      }t        |j                  j                  d	d
g       y )N)	r   r$   r%   r`   r8            	   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r$   r$   r$   r%   r%   r%   )	r   r$   r%   r   r$   r%   r   r$   r%   )r   r1   x1x2z"time ~ C(x1) + C(x2) + C(x1)*C(x2)r1   )r1   r0   r   r   )	r+   rp   r{   r|   r   r}   r   r3   ro   )rq   r   r1   r   r   r~   model1s          r   test_formula_cat_interactionsz'TestPHReg.test_formula_cat_interactions   s    uu./01UU,-UU,-\\46!#2/ 0 ##$HQY)+-V[[&&A/r   c                 >   d}t         j                  j                  d       dt         j                  j                  |      z  }t         j                  j	                  dd|      j                  t         j                        }t         j                  j                  dd|df      }t        j                  |||d d df   |d d df   d      }d	}t        j                  |||
      }|j                         }ddlm}	  |	|j                  j                  |      }
|j!                         }|j!                  |      }|j!                  |j"                  |
      }|j!                  |j"                  |j%                         |
      }||||f}t'        d      D ]8  }t'        |      D ](  }t)        ||   j*                  ||   j*                         * : |||f}t'        d      D ]8  }t'        |      D ](  }t)        ||   j,                  ||   j,                         * : y )Nd   rZ   r[   r]   r   r$   r   )r   r1   ru   rv   z*time ~ exog1 + np.log(exog2) + exog1*exog2)r1   )dmatrix)r3   )
cov_paramsr3   r`   r%   )r+   rf   rg   rh   ri   rj   rk   r{   r|   r   r}   rF   patsyr   r0   design_infopredictrH   r   rD   r   predicted_valuesstandard_errors)rq   r   r   r1   r3   r~   r   r   result1r   dfppr1pr2pr3pr4prlijs                     r   test_predict_formulazTestPHReg.test_predict_formula   s   
		uBII%%1%--""1a+222::>yy  AQF 3\\46$(AJadE F ;##CF;**,!fkk--r2oooo2o&nnW^^#n6nnW^^(/(:(:(<"%  ' Cc"q 	9A1X 9A 7 7 #A 7 799	9
 Coq 	PA1X PA 6 6A8N8NOP	Pr   c           	         t         j                  j                  d       d}dt         j                  j                  |      z  }t         j                  j	                  dd|      j                  t         j                        }t         j                  j                  d      }t         j                  j                  |      }t         j                  j                  dd|      |z  }t        j                  |||d d df   |d d df   ||d	      }t        j                  d
ddd|      }|j                         }	t        j                  d
|j                  |j                  |j                  |      }
|
j                         }t!        |	j"                  |j"                         t!        |	j$                  |j$                         y )NrZ   r\   r[   r]   r   r$   )r\   r$   r   )r   r1   r   r   offsetr2   ztime ~ x1 + x2r1   r   r2   )r1   r   r2   r0   )r+   rf   rg   rh   ri   rj   rk   rl   r{   r|   r   r}   rF   r1   r   r2   r   rH   rI   )rq   r   r   r1   r3   r   r2   r~   r   r   model2result2s               r   test_formula_argszTestPHReg.test_formula_args   s[   
		uBII%%1%--""1aa"077

CyyX."""*		!!!QQ!/$6\\46ad!%advO P##$4Xh*1<**,##$4RYYryy*,((=**,7W[[1r   c                 Z   t         j                  j                  d       dt         j                  j                  d      z  }t         j                  j	                  ddd      j                  t         j                        }t         j                  j                  d      }dD ]  }t        |||      }|j                         }|d d df   |j                  d   z  }|d d d	d f   }t        |||||
      }|j                         }	t        |	j                  |j                  d	d          y )NrZ   r[   r\   r]   r   r$   r_   breslowefronr   )r   r   )r+   rf   rg   rh   ri   rj   rk   rl   r   rF   rH   r   )
rq   r   r1   r3   r   r   r   r   r   r   s
             r   test_offsetzTestPHReg.test_offset   s    
		uBII%%3%//""1a-44RZZ@yyW-& 		<DtV,DHHJE!A#Ya0F12;DtVFFDHHJEELL%,,qr*:;		<r   c                     t         j                  j                  d       dt         j                  j                  d      z  }t         j                  j	                  ddd      j                  t         j                        }t         j                  j                  d      }t        |||      }|j                         }|j                  }t        t        j                  |      j                         d       |j                  }t        t        j                  |d         j                  d      t         j                  d	          |j                   }|d   D 	cg c]*  }	t        j"                  t        j                  |	            , }
}	t         j                  d
   }t        |
|       |j$                  }t         j                  d   }
t        j                  |      j#                  d      }t        |
|       t         j                  j	                  ddd      }t        |||      }|j                  |      }|j'                         }g d}
t        j                  |      j#                  d      }t        |
|d       |j(                  }t        j*                  t        j,                  |      j/                  d            }||d d f   }t         j                  d   }
t        t        j                  |      j#                  d      |
       y c c}	w )NrZ   r[   r\   r]   r   r$   r_   gG mb.^@)g&=@gQ=[#@g/BR%@gҢ8*@)g{7@giA?gn?)g>KK?gt
Mm?g6?g:*?_i?r%   groups)gˇu?g\M	N.?gݴ?g?h?gư>r9   r   )g8nJ??g^0إ[?gsB?g,{&?)r+   rf   rg   rh   ri   rj   rk   rl   r   rF   martingale_residualsr   abssumweighted_covariate_averagesrp   rJ   meanscore_residualsr   schoenfeld_residualsflatnonzeroisfiniteall)rq   r   r1   r3   rO   rslt
mart_residw_avgbc_hazxvwscore_residr   
robust_covs_residiis                    r   test_post_estimationzTestPHReg.test_post_estimation   sN   
		uBII%%3%//""1a-44RZZ@yyW-D$'wwy..
z*..02DE00uQx(,,Q/uuCD	F 00)/3ARWWRVVAY33EE & '1**EE>?FF;$$Q'1""1a-D$'wwfw%__&
<FF:##A&14(++^^BKK044Q78"a%.EE@Aw,,Q/3- 4s   /Lc                 P   t         j                  j                  d       dt         j                  j                  d      z  }t         j                  j	                  ddd      j                  t         j                        }t         j                  j                  d      }t        |||      }|j                         }|j                         }t        j                  t        j                  d      t        j                  d            }t        ||||	      }|j                         }|j                         }d
}t        |t        |      v        t        j                  t        j                  d      t        j                  d            }	t        |||      }|j                  |	      }|j                         }t         j                  j                  ddd      |z  }
t        ||||
      }|j                         }|j                         }d}t        |t        |      v        y )NrZ   r[   r\   r]   r   r$   r_   r`   )r<   z%3 strata dropped for having no events   r   r   皙?g?ry   z*200 observations have positive entry times)r+   rf   rg   rh   ri   rj   rk   rl   r   rF   summaryrC   arangerE   r   str)rq   r   r1   r3   rO   r   smryr<   msgr   r2   s              r   test_summaryzTestPHReg.test_summary$  s   
		uBII%%3%//""1a-44RZZ@yyW-D$'wwy||~2
3D$v6wwy||~5s4y !2
3D$'wwfw%||~		!!#sC047D$e4wwy||~:s4y !r   c                 <   t         j                  j                  d       dt         j                  j                  d      z  }t         j                  j	                  ddd      j                  t         j                        }t         j                  j                  d      }t        |||      }|j                         }|j                          dD ]J  }|j                  |	       |j                  |dd
 |       |j                  |dd
 |dd
d d f   |       L y )NrZ   r[   r\   r]   r   r$   r_   )lhrhrrV   rW   )	pred_typera   )rn   r   )rn   r3   r   )r+   rf   rg   rh   ri   rj   rk   rl   r   rF   r   )rq   rn   r1   r3   rO   r   r   s          r   test_predictzTestPHReg.test_predictB  s     			uRYY&&C&00""1a-44RZZ@yyW-E4(wwy6 	.ILL9L-LLuQr{iL@LLuQr{ad1f#,  .	.r   c                    t         j                  j                  d       d}t         j                  j                  |df      }|j	                  d      }t        j
                  |       }| t        j                  t         j                  j                  |            z  }t        j                  |      }d|dd t        j                  t        d      t        j                  |dz              }t        ||||	      }|j                         }	|	j                         }
|
j                         }|}|
j                         }|
j!                         }|
j#                         }y )
NrZ   r\   r$   r]   r   r      r8   )r1   r<   )r+   rf   rg   rl   r   explogrh   rE   rC   rD   r   rF   get_distributionr   varstdrvs)rq   r   r3   lin_pred	elin_predr   r1   r<   rO   r   distfitted_means
true_means
fitted_var	fitted_sdsamples                   r   test_get_distributionzTestPHReg.test_get_distributionV  s   
		uyyaV,88A;FFH9%	zBFF299#4#4!#4#<==qq27716?3D$vf=wwy$$&yy{
XXZ
HHJ	r   c                    dD ]  \  }}t        ddg      D ]  \  }d|||fz  }t        t        |      }d||fz  }| j                  |      \  }}}	|	|	j	                  d      z  }	|	|	j                  dd      z  }	t        |	|d	      j                  
      }
t        |
j                  |d       fd} ||      } ||
j                        }t        t        j                  ||z
        d         y )N))r[   r$   )r   r8   r   r   zcoef_%d_%d_%dzsurvival_data_%d_%d.csvr   )ddofr   )r1   r   )alphag333333?r9   c           	          j                  |       t              z  }d}|d|z
  t        j                  | dz        z  dz  |t        j                  t        j                  |             z  z   z  z
  }|S )Nr   r$   )logliker@   r+   r   r   )rH   llfL1_wtmodelsr   s      r   plfz+TestPHReg.test_fit_regularized.<locals>.plf  sn    --/#d);CEa%i	1B%BQ%FrvvVXV\V\]cVdOeIe%e ffCJr   )	enumerater   r	   r4   r   r   r   fit_regularizedr   rH   r   r+   sign)rq   r   r   jsr   rH   r.   r1   r2   r3   	sm_resultr   llf_rllf_smr   r   r   s                 @@@r   test_fit_regularizedzTestPHReg.test_fit_regularizedm  s    " 	9CAa "1S'* 91+q!Rj8	 !8)D1QF:,0NN5,A)feT		!$++dDiH!111:	  	 0 0&sC FY--.RWWVe^4a899	9r   N)__name__
__module____qualname__staticmethodr4   rX   rs   r   r   r   r   r   r   pytestmarksmoker   r   r   r   r?   r   r   r   r   3   s     	) 	) ,B ,B\5 .@0#PJ2*<$'4R [[" ": [[. .& [[ ,"9r   r   r!   survivalz.csvr   )FTzfname,ties,entry_f,strata_fc                 4    t         j                  | |||       y )N)r   rX   )r.   r   rK   rL   s       r   test_rr     s     MM%w1r   )&	itertoolsr&   numpyr+   &statsmodels.duration.hazard_regressionr   numpy.testingr   r   r   pandasr{   r   r!   r   r	   rG   r   r   r'   r(   r)   r*   r/   r-   rdirlistdirfnames
startswithendswithr   rK   rL   r   parametrizelistproductr   )r   s   0r   <module>r     s    	  82 2   ( ,
 !$""\9 \9~
 ''//"''//(3
4	ww||GY'	D	 
"q||J7jj   
" 
 6/i//gxPQS2S2
"s   *DD