
    !g%                         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y)    N)ConditionalLogitConditionalPoissonConditionalMNLogit)approx_fprime)assert_allclosec                    	 t         j                  d   } t         j                  d   }t         j                  d   }|d d d f   }t        | ||      	dD ]T  }t         j                  |f   }	j                  d|      \  }}t	        |	fd      j                         }t        ||       V dD ]i  }t	        t         j                  |f   	j                        j                         }	j                  t         j                  |f         }t        ||d	       k 	j                         }t        |j                  t         j                  d
   d	       t        |j                  t         j                  d   d	       y )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                 (    j                  d|       S Nr   _denomxmodels    h/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/discrete/tests/test_conditional.py<lambda>ztest_logit_1d.<locals>.<lambda>       Q0B     -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   	   s9   
*+A
*+A
*+A	!T'
AQ!,E  %qr##Av.4f&BCKKMe$	%  0RUU12Z7??ABEE!"J'e$/0
 YY[F FMM255#3$?FJJ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 ]L  }t         j                  |d
|z  f   }j	                  d|      \  }}t        |fd      }t        ||d       N d	D ]R  }t         j                  d|z  d|z  f   }t        |j                        }j                  |      }	t        ||	d       T j                         }
t        |
j                  t         j                  d   d       t        |
j                  t         j                  d   d       |
j                          y )Nr	   r   r   )
r   r   r
   r   r   r
   r   r
   r
   r
   
   r   r   r
   r   r   g      c                 (    j                  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<   '   sm   
*+A
*+A	+	,B	+	,B
AAadGAadGQ!,E  0q$q&y!##Av.4f&BCe$/	0  0tAvs1u}%VU]]3F#e$/	0 YY[F FMM255);#<4HFJJ&8 9E
NNr   c                     dD ]  } t         j                  j                  d       d}t         j                  j                  dd|      }t         j                  j	                  |      }t         j                  j	                  |      }t         j                  j                  dd|      }t        j
                  |d d d f   |d d d f   f      }| dk(  rt        |||      }nt        |||      }|j                         }t        j                  ||||d	      }	| dk(  rt        j                  d
d|	      }
nt        j                  d
d|	      }
|
j                         }t        |j                  |j                  d       t        |j                  |j                  d       t        |j                         |j                         d       t        |j                   |j                   d        y )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
		uIIa+YY1%YY1%IIa!,IIr!T'{Bq$wK016%a15F'1Q7F**,\\2A>?6%22)#B@F (44)#B@F**,TBW[[t<**,g.@.@.BNtD9Er   c                  D   t         j                  d   } t         j                  d   }t         j                  d   }|d d d f   }t        | ||      }dD ]i  }t        t         j                  |f   |j                        j                         }|j                  t         j                  |f         }t        ||d       k |j                         }t        |j                  t         j                  d   d       t        |j                  t         j                  d	   d
       y )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RUU12Z7??ABEE!"J'e$/0
 YY[F FMM255#3$?FJJ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 ]R  }t         j                  d
|z  d|z  f   }t	        ||j
                        }|j                  |      }t        ||d       T |j                         }	t        |	j                  t         j                  d   d       t        |	j                  t         j                  d   d       |	j                          y )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      s   
*+A
*+A	+	,B	+	,B
AAadGAadGq!A.E  0tAvs1u}%VU]]3F#e$/	0 YY[F FMM255)=#>TJFJJ&8 9E
NNr   c            	          t         j                  j                  d       d} t        j                  d      }t        j                  |t        j
                  | dz              }t         j                  j                  d      }t        j                  |t        j
                  | dz              }t         j                  j                  | df      }t         j                  d   }t        j                  ||      |z   }ddt        j                  |       z   z  }t         j                  j                  |       |k  j                  t              }t        |||      }|j                         }	t        |||      }
|
j                  d	d	
      }t!        |	j"                  |j"                  d       t        |||      }|j                  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|      }|j                  dd
      }t!        |j"                  |j"                         y )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   IINN7AYYr]FWWVRWWQ"W-.FII$$"$-MGGM27717+;<M
		q!f%AUU:Fvva =0HBFFH9%%&D					"T	)11#6Aa62FjjlG a62F$$1A$6GGNNGNN>a62F$$1D$9G GNNBEE*=$>TJ 
AQq!tWAadG1QT7q!tW8 
9B
%C**3xbIF$$1D$9GGNNGNN3r   c            	         t         j                  j                  d       d} t        j                  d      }t        j                  |t        j
                  | dz              }t         j                  j                  d      }t        j                  |t        j
                  | dz              }t         j                  j                  | df      }t         j                  d   }t        j                  ||      |z   }t        j                  |      }t         j                  j                  |      }t        |||      }|j                         }	t        |||      }
|
j                  dd	      }t        |	j                  |j                  d
       t        |||      }|j                  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|      }|j                  dd	      }t        |j                  |j                         y )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   IINN6AYYr]FWWVRWWQ"W-.FII$$"$-MGGM27717+;<M
		q!f%AUU:Fvva =0H66(D
		$A1V4FjjlG  1V4F$$1A$6GGNNGNN>1V4F$$1C$8G GNNBEE*=$>TJ 
AQq!tWAadG1QT7q!tW8 
9B
%C,,SKF$$1C$8GGNNGNN3r   c                 r   t         j                  j                  d       t        j                  t        j                  d      t        j
                  | dz              }t         j                  j                  |       }t         j                  j                  |       }t        j                  |d d d f   |d d d f   fd      }t        j                  g dg dg      }t        j                  ||      }t        j                  |      }||j                  d      d d d f   z  }|j                  d      }dt        j                  |       z  }	t         j                  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      sk   IINN3

BIIadO,A			q		!B			q		!B	AtGbDk2	;B	:z*	+B
&&R.C	B"&&)AtG
B
))A,C	BGGAJA
		q!AAa#ad)mAa#ad)mAa#ad)m	ARa) 
*BIr   c                     t        d      } t        j                  dd|       }t        d      D ]X  }t        j
                  j                  d      }|j                  |      }t        ||j                        }t        ||dd	
       Z y )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   
  sy    	RB++!#B8E 1X ;YY1%{{2b%--0e$T:	;r   c                  2   t        d      } t        j                  dd|       }|j                         }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	
       y )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8EYY[F 


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




Z,,. 	/	r   c            	         t        d      } t        j                  j                  | j                  d         | d<   t        j                  dd|       }|j                         }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       |j                          y )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yyRXXa[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      sY    @ @ 3 ) <<!HEB=.:&4R&4R0;(r   