
    M/Ph:                        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                            ej                            e                    Zej                            ed          Z ej        e          Zd eD             ZdZdZdZej                             d e! e j"        eeee                              d             Z#dS )    N)PHReg)assert_allcloseassert_equalassert_   )survival_r_results)survival_enet_r_resultsbfgs)methoddispc                 D   |!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               e/var/www/html/test/jupyter/venv/lib/python3.11/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11D	#W	-	-B%y11D'5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dS )	TestPHRegc                 ^   t           j                            t           j                            t                              }t          j        t           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    '//"'//(";";<<}RW\\'9eDD'*, , ,AAAaCyaaacQQQqS	AAAabbDzVUD((r   c           	      $   t                               |           \  }}}}t          |          }|                     d          }	t	          |	d                   }t	          |	d                             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         \  }}}d S )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   s    %.$7$7$>$>!feTII[[1JJ1C  #$$QqS	 q2716??33 D$T222sw)4Q4)G)G&fhV$7777$T2222#>qA$uT4u      #, ,&*, ,%0AtU%C%C"b&(T5555"40000%uT4! ! !!$- -'+- -%0AtU%C%C"b&(T5555"400003uT4u"/ / //2; ;59; ;%0Aw%F%F"b&(T5555"40000  $>qAr   c                    t           j                            d           dt           j                            d          z  }t           j                            ddd                              t           j                  }t           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                    d S )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BI%%3%///""1a--44RZ@@yW--FQqS	vqtRU111W4vv666BHs+++BI,,,ruU|44444r   c           
         t           j                            d           dt           j                            d          z  }t           j                            ddd                              t           j                  }t           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          ||||          }|                                }d}t          j        ||||          }	|	                                }
t          j        ||dd          }|                                }t          |j        |
j                   t          |j        |j                   t          |j        |
j                   t          |j        |j                   d S )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BI%%3%///""1a--44RZ@@yW--d##1R4j1nad\46$(AJaaad$(AJaaad$)+ + , ,
 T4u555

 5!#r&(-/ / /

!#r((/1 1 1

el333el333	59---	59-----r   c                 .   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           d S )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    u./01U,-U,-\46!#2/ / 0 0 #$HQY)+- - -V[&A/////r   c                 f   d}t           j                            d           dt           j                            |          z  }t           j                            dd|                              t           j                  }t           j                            dd|df          }t          j        |||d d df         |d d df         d          }d	}t          j
        |||
          }|                                }ddlm}	  |	|j        j        |          }
|                                }|                    |          }|                    |j        |
          }|                    |j        |                                |
          }||||f}t'          d          D ]:}t'          |          D ](}t)          ||         j        ||         j                   );|||f}t'          d          D ]:}t'          |          D ](}t)          ||         j        ||         j                   );d S )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   sR   
	uBI%%1%---""1a++222:>>y  AQF 33\46$(AJaaadE E F F ;#CF;;;**,,!!!!!!gfk-r22oooo2o&&nnW^#n66nnW^(/(:(:(<(<"%  ' ' Cc"q 	9 	9A1XX 9 9A 7 #A 79 9 9 99 Coq 	P 	PA1XX P PA 6A8NOOOOP	P 	Pr   c           	      n   t           j                            d           d}dt           j                            |          z  }t           j                            dd|                              t           j                  }t           j                            d          }t           j                            |          }t           j                            dd|          |z  }t          j	        |||d d df         |d d df         ||d	          }t          j        d
ddd|          }|                                }	t          j        d
|j        |j        |j        |          }
|
                                }t!          |	j        |j                   t!          |	j        |j                   d S )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BI%%1%---""1aa"0077
CCyX.."""**	!!!QQ!//$6\46aaad!%aaadvO O P P#$4Xh*1< < <**,,#$4RYry*,(= = =**,,777W[11111r   c                 ~   t           j                            d           dt           j                            d          z  }t           j                            ddd                              t           j                  }t           j                            d          }dD ]}t          |||          }|	                                }|d d df         |j
        d         z  }|d d d	d f         }t          |||||
          }|	                                }	t          |	j
        |j
        d	d                     d S )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BI%%3%///""1a--44RZ@@yW--& 		< 		<DtV,,DHHJJE!!!A#Ya0F122;DtVFFFFDHHJJEEL%,qrr*:;;;;		< 		<r   c                    t           j                            d           dt           j                            d          z  }t           j                            ddd                              t           j                  }t           j                            d          }t          |||          }|	                                }|j
        }t          t          j        |                                          d           |j        }t          t          j        |d                                       d          t           j        d	                    |j        }d
 |d         D             }	t           j        d         }
t          |	|
           |j        }t           j        d         }	t          j        |                              d          }
t          |	|
           t           j                            ddd          }t          |||          }|	                    |          }|                                }g d}	t          j        |                              d          }
t          |	|
d           |j        }t          j        t          j        |                              d                    }||d d f         }t           j        d         }	t          t          j        |                              d          |	           d S )NrZ   r[   r\   r]   r   r$   r_   gG mb.^@)g&=@gQ=[#@g/BR%@gҢ8*@c                 Z    g | ](}t          j        t          j        |                    )S r?   )r+   meanabs.0xs     r   
<listcomp>z2TestPHReg.test_post_estimation.<locals>.<listcomp>  s*    333ARWRVAYY333r   )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   r   sumweighted_covariate_averagesrp   rJ   score_residualsr   r   schoenfeld_residualsflatnonzeroisfiniteall)rq   r   r1   r3   rO   rslt
mart_residw_avgbc_hazvwscore_residr   
robust_covs_residiis                   r   test_post_estimationzTestPHReg.test_post_estimation   s   
	uBI%%3%///""1a--44RZ@@yW--D$''wwyy.
z**..002DEEE0uQx((,,Q//uCD	F 	F 	F 033333E & '1*E>?F;$$Q''1""1a--D$''wwfw%%__&&
<<<F:##A&&14((((+^BK0044Q7788"aaa%.E@Aw,,Q//33333r   c                    t           j                            d           dt           j                            d          z  }t           j                            ddd                              t           j                  }t           j                            d          }t          |||          }|	                                }|
                                }t          j        t          j        d          t          j        d                    }t          ||||	          }|	                                }|
                                }d
}t          |t          |          v            t          j        t          j        d          t          j        d                    }	t          |||          }|	                    |	          }|
                                }t           j                            ddd          |z  }
t          ||||
          }|	                                }|
                                }d}t          |t          |          v            d S )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BI%%3%///""1a--44RZ@@yW--D$''wwyy||~~2

33D$v666wwyy||~~5s4yy !!!2

33D$''wwfw%%||~~	!!#sC0047D$e444wwyy||~~:s4yy !!!!!r   c                    t           j                            d           dt           j                            d          z  }t           j                            ddd                              t           j                  }t           j                            d          }t          |||          }|	                                }|
                                 dD ]c}|
                    |	           |
                    |dd
         |           |
                    |dd
         |dd
d d f         |           dd S )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RY&&C&000""1a--44RZ@@yW--E4((wwyy6 	. 	.ILL9L---LLuQrT{iL@@@LLuQrT{ad111f#,  . . . .	. 	.r   c                 
   t           j                            d           d}t           j                            |df          }|                    d          }t          j        |           }| t          j        t           j                            |                    z  }t          j        |          }d|dd<   t          j	        t          d          t          j        |dz                      }t          ||||	          }|                                }	|	                                }
|
                                }|}|
                                }|
                                }|
                                }d S )
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yaV,,88A;;FH9%%	zBF29#4#4!#4#<#<===qtq2716??33D$vf===wwyy$$&&yy{{
XXZZ
HHJJ	r   c                 <   dD ]\  }}t          ddg          D ]\  }d|||fz  }t          t          |          }d||fz  }|                     |          \  }}}	|	|	                    d          z  }	|	|	                    dd          z  }	t          |	|d	                              
          }
t          |
j	        |d           fd} ||          } ||
j	                  }t          t          j        ||z
            d           d S )N))r[   r$   )r   r8   r   r   zcoef_%d_%d_%dzsurvival_data_%d_%d.csvr   )ddofr   )r1   r   )alphag333333?r9   c           	                               |           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  su    --//#d));CEa%i	1B1B%BQ%FrvVXV\]cVdVdOeOeIe%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  sk    " 	9 	9CAa "1S'** 9 91+q!Rj8	 !8)DD1QF:,0NN5,A,A)feT		!$+++dDiHHH!111::	  	 0&sCCCC       FY-..RWVe^44a888899	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 \,B\5 5 5 . . .@0 0 0#P #P #PJ2 2 2*< < <$'4 '4 '4R [" " ": [. . .& [  ,"9 "9 "9 "9 "9r   r   r!   c                 f    g | ].}|                     d           |                    d          ,|/S )survivalz.csv)
startswithendswithr   s     r   r   r     sK     
" 
" 
"q||J77 
"jj  
"! 
" 
" 
"r   r   )FTzfname,ties,entry_f,strata_fc                 @    t                               | |||           d S )N)r   rX   )r.   r   rK   rL   s       r   test_rr    s"     MM%w1111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fnamesr   rK   rL   r   parametrizelistproductr  r?   r   r   <module>r     s       				     8 8 8 8 8 82 2 2 2 2 2 2 2 2 2      ( ' ' ' ' ' , , , , , ,
 !$$" " ""\9 \9 \9 \9 \9 \9 \9 \9~
 '//"'//(33
4
4	w||GY''	D		
" 
"V 
" 
" 
" 
 6/i/gxPPQQS S2 2S S2 2 2r   