
    M/Ph%                         d dl Zd dlmZmZmZ d dlmZ d dlm	Z	 d dl
Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd ZdS )    N)ConditionalLogitConditionalPoissonConditionalMNLogit)approx_fprime)assert_allclosec                  *  	 t           j        d         } t           j        d         }t           j        d         }|d d d f         }t          | ||          	dD ]c}t           j        |f         }	                    d|          \  }}t	          |	fd                                          }t          ||           ddD ]r}t	          t           j        |f         	j                                                  }	                    t           j        |f                   }t          ||d	           s		                                }t          |j
        t           j        d
         d	           t          |j        t           j        d         d	           d S )N
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   groupsr   r
   r   r   c                 0                         d|           S Nr   _denomxmodels    k/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/discrete/tests/test_conditional.py<lambda>ztest_logit_1d.<locals>.<lambda>       Q0B0B     -C6?rtolg@?h㈵>gs?)npr_r   _denom_gradr   squeezer   loglikescorefitparamsbse)
ygr   r(   _gradngradr&   resultr   s
            @r   test_logit_1dr0   	   su   
*+A
*+A
*+A	!!!T'
AQ!,,,E  % %qr##Av..4f&B&B&B&BCCKKMMe$$$$  0 0RU12Z77??AABE!"J''e$/////YY[[F FM25#3$????FJhd;;;;;;r   c                  ^   t           j        d         } t           j        d         }t           j        d         }t           j        d         }t          j        d          }||d d df<   ||d d df<   t          | ||          d	D ]W}t           j        |d
|z  f         }                    d|          \  }}t          |fd          }t          ||d           Xd	D ]X}t           j        d|z  d|z  f         }t          |j                  }                    |          }	t          ||	d           Y	                                }
t          |
j
        t           j        d         d           t          |
j        t           j        d         d           |
                                 d S )Nr	   r   r   )
r   r   r
   r   r   r
   r   r
   r
   r
   
   r   r   r
   r   r   g      c                 0                         d|           S r   r   r   s    r   r   ztest_logit_2d.<locals>.<lambda>8   r   r   r    r               ?r   )g_=[-?g?MbP?)g ?gȭ?)r!   r"   emptyr   r#   r   r   r%   r&   r'   r(   r)   summary)r*   r+   x1x2r   r(   r,   r-   r.   r&   r/   r   s              @r   test_logit_2dr<   '   s   
*+A
*+A	+	,B	+	,B
AAaaadGAaaadGQ!,,,E  0 0q$q&y!##Av..4f&B&B&B&BCCe$/////  0 0tAvs1u}%VU]33F##e$/////YY[[F FM25);#<4HHHHFJ&8 9EEEE
NNr   c                     dD ]} t           j                            d           d}t           j                            dd|          }t           j                            |          }t           j                            |          }t           j                            dd|          }t          j        |d d d f         |d d d f         f          }| dk    rt          |||          }nt          |||          }|                                }t          j
        ||||d	          }	| dk    rt          j        d
d|	          }
nt          j        d
d|	          }
|
                                }t          |j        |j        d           t          |j        |j        d           t          |                                |                                d           t          |j        |j        d           d S )N)r   r
   i     r   r   size   r   r*   r:   r;   r+   y ~ 0 + x1 + x2r+   r   datar    r   )r!   randomseedrandintnormalhstackr   r   r'   pd	DataFramefrom_formular   r(   r)   
cov_paramstvalues)jnr*   r:   r;   r+   r   model1result1dfmodel2result2s               r   test_formularW   K   s    E E
	uIa++Y1%%Y1%%Ia!,,Ir!!!T'{Bqqq$wK01166%a1555FF'1Q777F**,,\2A>>??66%2)#B@ @ @FF (4)#B@ @ @F**,,TBBBBW[t<<<<**,,g.@.@.B.BNNNNtDDDDD9E Er   c                  \   t           j        d         } t           j        d         }t           j        d         }|d d d f         }t          | ||          }dD ]r}t          t           j        |f         |j                                                  }|                    t           j        |f                   }t          ||d           s|                                }t          |j	        t           j        d         d           t          |j
        t           j        d	         d
           d S )N)
   r
   r
         r   r   r
      r   )
r   r   r   r   r
   r
   r
   r
   r
   r
   r   r   r   r   r   g+?gfΡ?r    )r!   r"   r   r   r%   r$   r&   r   r'   r(   r)   )r*   r+   r   r   r-   r&   r/   s          r   test_poisson_1dr]   l   s   
*+A
*+A
*+A	!!!T'
Aq!A...E  0 0RU12Z77??AABE!"J''e$/////YY[[F FM25#3$????FJi 0t<<<<<<r   c                     t           j        d         } t           j        d         }t           j        d         }t           j        d         }t          j        d          }||d d df<   ||d d df<   t          | ||          }d	D ]X}t           j        d
|z  d|z  f         }t	          ||j                  }|                    |          }t          ||d           Y|                                }	t          |	j	        t           j        d         d           t          |	j
        t           j        d         d           |	                                 d S )N)
rY   r
   rZ      r   r[   rZ      r   r\   r   r   )
r   r
   r   r   r
   r   rY   r   r   r
   r2   r   r
   r   r   r5   r6   r   r   )gߛ\)Ug$:r7   )gy?g3w?r    )r!   r"   r8   r   r   r%   r&   r   r'   r(   r)   r9   )
r*   r+   r:   r;   r   r   r(   r-   r&   r/   s
             r   test_poisson_2dra      sA   
*+A
*+A	+	,B	+	,B
AAaaadGAaaadGq!A...E  0 0tAvs1u}%VU]33F##e$/////YY[[F FM25)=#>TJJJJFJ&8 9EEEE
NNr   c            	      .   t           j                            d           d} t          j        d          }t          j        |t          j        | dz                      }t           j                            d          }t          j        |t          j        | dz                      }t           j                            | df          }t           j        d         }t          j        ||          |z   }ddt          j	        |           z   z  }t           j        
                    |           |k                         t                    }t          |||          }|                                }	t          |||          }
|
                    d	d	
          }t!          |	j        |j        d           t          |||          }|                    dd
          }t!          |j        t           j        d         d           t%          j        ||d d d	f         |d d df         |d d df         |d d df         |d          }d}t          j        |d|          }|                    dd
          }t!          |j        |j                   d S )Ni>4 r>   r3   r?   rZ   r   r   r
   r   r
   r   r   L1_wtalphar7   r   g?)r   r   gwIݬ?r   r   r   rY   r*   r:   r;   x3x4r   y ~ 0 + x1 + x2 + x3 + x4r   rD   )r!   rF   rG   arangekrononesrI   r"   dotexpuniformastypeintr   r'   fit_regularizedr   r(   rK   rL   rM   rQ   r   group_effectsr   r(   lin_predmeanr*   model0result0rR   rS   rU   rV   rT   fmlmodel3result3s                     r   test_lasso_logisticr}      s_   INN7AYr]]FWVRWQ"W--..FI$$"$--MGM2717+;+;<<M
	q!f%%AU:Fva  =0HBFH9%%%&D					"	"T	)11#66Aa6222FjjllG a6222F$$1A$66GGNGN>>>>a6222F$$1D$99G GNBE*=$>TJJJJ 
AQqqq!tWAaaadG1QQQT7qqq!tW8 8 
9 
9B
%C*3xbIIIF$$1D$99GGNGN33333r   c            	         t           j                            d           d} t          j        d          }t          j        |t          j        | dz                      }t           j                            d          }t          j        |t          j        | dz                      }t           j                            | df          }t           j        d         }t          j        ||          |z   }t          j	        |          }t           j        
                    |          }t          |||          }|                                }	t          |||          }
|
                    dd	          }t          |	j        |j        d
           t          |||          }|                    dd	          }t          |j        t           j        d         d           t!          j        ||d d df         |d d df         |d d df         |d d df         |d          }d}t          j        |d|          }|                    dd	          }t          |j        |j                   d S )Niz9 r>   r3   r?   rZ   rc   r   r   rd   r7   r   r
   g?)r   r   g~{W?r   r   r   rY   rg   rj   r   rD   )r!   rF   rG   rk   rl   rm   rI   r"   rn   ro   poissonr   r'   rs   r   r(   rK   rL   rM   rt   s                     r   test_lasso_poissonr      s=   INN6AYr]]FWVRWQ"W--..FI$$"$--MGM2717+;+;<<M
	q!f%%AU:Fva  =0H6(D
	$A1V444FjjllG  1V444F$$1A$66GGNGN>>>>1V444F$$1C$88G GNBE*=$>TJJJJ 
AQqqq!tWAaaadG1QQQT7qqq!tW8 8 
9 
9B
%C,SKKKF$$1C$88GGNGN33333r   c                    t           j                            d           t          j        t          j        d          t          j        | dz                      }t           j                            |           }t           j                            |           }t          j        |d d d f         |d d d f         fd          }t          j        g dg dg          }t          j	        ||          }t          j
        |          }||                    d          d d d f         z  }|                    d          }dt          j        |           z  }	t           j                            |           }
d|	|
|d d df         k     <   d|	|
|d d df         k     <   d	|	|
|d d d	f         k     <   t          j        |	|||d
          }|S )N   r[   r?   r
   )axis)r   r
   r   )r   r   r   r   r   rB   )r!   rF   rG   rl   rm   rk   rI   concatenatearrayrn   ro   sumcumsumrp   rK   rL   )rQ   r+   r:   r;   xmpalprprcprr*   urT   s               r   gen_mnlogitr      s   INN3


BIadOO,,A			q		!	!B			q		!	!B	AAAtGbDk2	;	;	;B	:::zzz*	+	+B
&R..C	B"&&))AAAtG
B
))A,,C	BGAJJA
	q!!AAa#aaad)mAa#aaad)mAa#aaad)m	ARa) ) 
* 
*BIr   c                  0   t          d          } t          j        dd|           }t          d          D ]_}t          j                            d          }|                    |          }t          ||j	                  }t          ||dd	
           `d S )NZ   rC   r+   rD   r[   rZ   r?   r    r7   r   atol)r   r   rM   ranger!   rF   rI   r&   r   r%   r   )rT   r   r,   zar-   r.   s         r   test_conditional_mnlogit_gradr   
  s    	RB+!#B8 8 8E 1XX ; ;Y1%%{{2b%-00e$T:::::	; ;r   c                  :   t          d          } t          j        dd|           }|                                }t	          |j        t          j        ddgddgg          d	d	
           t	          |j        t          j        ddgddgg          d	d	
           d S )Nr   rC   r+   rD   g00?gJ^gveD?gRH7r    r   gʸ-?g%r?gc?gh@?)	r   r   rM   r'   r   r(   r!   asarrayr)   rT   r   r/   s      r   test_conditional_mnlogit_2dr     s    	RB+!#B8 8 8EYY[[F 

Z--/ 	0 	0	   
 


Z,,. 	/ 	/	     r   c            	         t          d          } t          j                            | j        d                   | d<   t          j        dd|           }|                                }t          |j	        t          j
        dd	gd
dgddgg          dd           t          |j        t          j
        ddgddgddgg          dd           |                                 d S )Nr   r   r?   rh   zy ~ 0 + x1 + x2 + x3r+   rD   ggҦY?g8L#g :v?gFaE<gN:7g"T2 r    )r   r   g&jj?g}Y?g:%Ȉ?gPS"?gl?g6X?)r   r!   rF   rI   shaper   rM   r'   r   r(   r   r)   r9   r   s      r   test_conditional_mnlogit_3dr   ,  s   	RByRXa[11BtH+&s= = =EYY[[F 

h	*	*	*, 	- 	-     


Xw'w'w') 	* 	*     NNr   )numpyr!   'statsmodels.discrete.conditional_modelsr   r   r   statsmodels.tools.numdiffr   numpy.testingr   pandasrK   r0   r<   rW   r]   ra   r}   r   r   r   r   r    r   r   <module>r      s3      @ @ @ @ @ @ @ @ @ @ 3 3 3 3 3 3 ) ) ) ) ) )    < < <<! ! !HE E EB= = =.  :&4 &4 &4R&4 &4 &4R  0; ; ;  (    r   