
    !g                     0   d Z ddlZddlmZmZmZ ddlmZ ddl	Z	ddl
mc mZ ddlmZ ej                   Zej#                         Zej'                         Zej+                         Zej/                         Zej3                         Zej7                         Zej;                         Zej?                         Z ejC                         Z"ejG                         Z$ejK                         Z&ejO                         Z(eeeeeeee e"e$e&e(gZ)eeeeee"e e&gZ*d Z+d Z,d Z-d	 Z.d
 Z/d Z0d Z1 G d dejd                        Z3 G d d      Z4e	jj                  jm                  de4jn                        e	jj                  jm                  de4jp                        d               Z9y)z*
Test functions for genmod.families.links
    N)assert_allcloseassert_equalassert_array_less)stats)numdiffc                 h   t        j                  t         j                  j                  dd             }t	        | t
        j                        rt        |d      }|S t	        | t
        j                        rt        |d      }|S t	        | t
        j                  t
        j                  f      r| }|S )z7
    Get a value in the domain for a given family.
    r         )nplograndomuniform
isinstancelinksCLogLogminLogLogmaxNegativeBinomialLogC)linkzs     h/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/genmod/families/tests/test_link.pyget_domainvaluer   $   s     
		!!!Q'	((A$&1I H 
D%,,	'2J H 
D5115::>	?BH    c            
         t         j                  j                  d       t        D ]  } t	        d      D ]  }t         j                  j                  dd      }| j                   | |            }t        ||dt        |              t        |       } | | j                  |            }t        ||dt        |                y )Ni  
   r   r	   :0yE>)atolerr_msg)
r   r   seedLinksranger   inverser   strr   )r   kpdr   s        r   test_inverser*   3   s     IINN4 @r 	@A		!!!Q'AT!W%AAqtSY?%AT\\!_%AAqtSY?	@@r   c                  D   t         j                  j                  d       t        D ]  } t	        d      D ]  }t         j                  j                  dd      }t        | t        j                        rt        j                  |dd      }| j                  |      }t        j                  t         j                  |   |       }t        ||ddt        |              t        | t!        t"              t!        t$              t!        t&              f      rt)        | d         y )	N^  r   r   r	   Q?
ףp=
?ư>rtolr    r!   )r   r   r"   r#   r$   r   r   r   Cauchyclipderivndapprox_fprimer_r   r&   typeinverse_powerinverse_squaredlogcr   r   r'   r(   r)   das        r   
test_derivr>   C   s     IINN5 )r 	)A		!!!Q'A$-GGAtT*

1A!!"%%(D1BAr4$'I/dT-%8%)/%:%)$Z%1 2 "1"a(	))r   c                     t         j                  j                  d       t        D ]  } t	        d      D ]  }t         j                  j                  dd      }t        j                  |dd      }t        | t        j                        rt        j                  |dd      }| j                  |      }t        j                  t         j                  |   | j                        }t        ||d	d
t!        |                y )Nr,   r   r   r	   g{Gz?gGz?r-   r.   h㈵>r/   r0   )r   r   r"   r#   r$   r   r3   r   r   cauchyderiv2r5   r6   r7   r4   r   r&   r<   s        r   test_deriv2rC   X   s     IINN5 	/r 	/A		!!!Q'A4&A$-GGAtT*AA!!"%%(DJJ7BAr4$'I/	/	/r   c                  (   t         j                  j                  d       t        D ]j  } t	        d      D ]Z  }t        |       }| j                  |      }d| j                  | j                  |            z  }t        ||ddt        |              \ l y )Nr,   r   r	   r   g|=r0   )r   r   r"   r#   r$   r   inverse_derivr4   r%   r   r&   )r   r'   r   r)   fs        r   test_inverse_derivrG   i   s     IINN5 /r 	/A%A""1%ADJJt||A//AAqt%$'I/		//r   c                  D   t         j                  j                  d       t        D ]x  } t	        d      D ]h  }t        |       }| j                  |      }t        j                  t         j                  |   | j                        }t        ||ddt        |              j z y )Nr,   r   r@   r/   r0   )r   r   r"   LinksISDr$   r   inverse_deriv2r5   r6   r7   rE   r   r&   )r   r'   r   d2d2as        r   test_inverse_deriv2rM   w   s     IINN5 /r 	/A%A$$Q'B""2558T-?-?@CB$T$'I/		//r   c                  t    g d} t         j                  |       }t        |t        j                  |              y )N)&g~F@gp",/@g^Op@g@g'՚?@g9@g[za@g7Nl@gF͘@g'Dȅ@gj֔@gd(@gD`@gH@gWAڐ@gȎv~@gHKBb@gzٰ@gg雱@gy@gb@gAȓ@g_f=R@gQ7@gFH@gb
*@g.j?+@grӑ)@gyȉ[@g`?Ie}@g2JO@gItT@geDbQ@g?@g-U@gD*`@ga@gV0~@)logitr%   r   r   	ones_like)r   zinvs     r   test_invlogit_stabilityrR      s+    	0A ==Dr||A'r   c                       e Zd Zd Zd Zd Zy)	MyCLogLogc                 Z    t        j                  t        j                  d|z
               S Nr	   r   r   selfr(   s     r   __call__zMyCLogLog.__call__   s    vvrvva!e}n%%r   c                 Z    dt        j                  t        j                  |             z
  S rV   )r   exp)rY   r   s     r   r%   zMyCLogLog.inverse   s     266266!9*%%%r   c                 D    d|dz
  t        j                  d|z
        z  z  S )Ng      ?r	   rW   rX   s     r   r4   zMyCLogLog.deriv   s"    a!eq1u.//r   N)__name__
__module____qualname__rZ   r%   r4    r   r   rT   rT      s    &&0r   rT   c            	       X   e Zd Zej	                  ej                        ej                         fej	                  ej                        ej                         fej	                  ej                        ej                         fej	                  ej                        ej                         fej	                   ej                  d            ej                         f e       ej                         fgZg dZ ej(                  ddd      ZdZ ej.                  eedez
        Zy)CasesCDFLink)dbnr	   )rZ   r4   r%   rE   rB   rJ   r      gMbP?N)r^   r_   r`   r   CDFLinkr   gumbel_lr   gumbel_rr   normProbitlogisticLogittr2   rT   
link_pairsmethodsr   linspacer(   epsr3   ra   r   r   rc   rc      s     
5>>	*EMMO<	5>>	*ELLN;	5::	&7	5>>	*EKKM:	75771:	&7 
emmo&

J!G 	Aq!A
C3C Ar   rc   mzlink1, link2c                     t         j                  } t        ||       |      } t        ||       |      }t        ||dd       y )Nr   )r    r1   )rc   r(   getattrr   )rr   link1link2r(   res1res2s         r   test_cdflinkry      sA     	A75!QD75!QDD$T5r   ):__doc__numpyr   numpy.testingr   r   r   scipyr   pyteststatsmodels.genmod.familiesgenmodfamiliesstatsmodels.toolsr   r5   r   rl   rO   InversePowerr9   SqrtsqrtInverseSquaredr:   IdentityidentityLogr   r   r;   rj   probitr2   rA   r   cloglogr   loglogr   negbinomr#   rI   r   r*   r>   rC   rG   rM   rR   LinkrT   rc   markparametrizero   rn   ry   ra   r   r   <module>r      s    J J   . . + 	""$zz|&&(>>iikzz|		
--/	!!# 
t_h	dFFGVX	? 4(&&&*@ )*/"//($0

 0! !. l223)@)@A6 B 46r   