
    !gH                        d dl Zd dlmZ d dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZ ej                   j#                  d ej$                          ej&                          ej(                         g      ej                   j#                  d e	        e
        e       g      d               Zej                   j#                  d ej$                          ej&                          ej(                         g      ej                   j#                  d e	        e
        e       g      d	               Zej                   j#                  d e	        e
        e       g      d
        Zy)    N)assert_allclose)QIFQIFIndependenceQIFExchangeableQIFAutoregressive)approx_fprime)familiesfam
cov_structc                    t         j                  j                  d       d}d}t         j                  j                  |df      }t	        | t
        j                        rt        j                  t         j                  j                  ||z        t        j                  |            }t        j                  d      |z  t        j                  d      t         j                  j                  |      z  z   }|j                  d      |z   }nxt	        | t
        j                        r"t         j                  j                  d	|      }n<t	        | t
        j                        r"t         j                  j                  d
d|      }t        j                  t        j                  ||z        t        j                  |            j!                  t"              }t%        ||| |      t'        d	      D ]w  }t         j                  j                  d      }	j)                  |	      \  }}
}}}fd}t+        |	|d      }t-        ||d       fd}t+        |	|d      }t-        |
|d       y y )N          size      ?      ?      r      groupsfamilyr   c                 ,    j                  |       d   S )Nr   	objectiveparamsmodels    ^/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/genmod/tests/test_qif.pyllf_gnz test_qif_numdiff.<locals>.llf_gn)       ??6*1--    gHz>g-C6?c                 ,    j                  |       d   S )Nr   r   r   s    r!   llfztest_qif_numdiff.<locals>.llf/   r#   r$   )nprandomseednormal
isinstancer	   GaussiankrononessqrtsumPoissonpoissonBinomialrandintarangeastypeintr   ranger   r   r   )r
   r   nqxeyg_ptgradgn_derivr"   
gn_numdiffr&   grad_numdiffr    s                   @r!   test_qif_numdiffrE      s    IINN6A	A
		q!f%A#x(()GGBII$$!Q$$/<GGCLNRWWZ01A1Aq1A1IIIEE!HqL	C))	*IIaa(	C**	+IIa+
		!Q$,33C8A1QszBE1X 2YY1% #(//""54Ax	."2vt4
*d3	.$Rd3lD1!2r$   c                 h   t         j                  j                  d       d}d}t         j                  d   }t         j                  j	                  |t        |      f      }t        | t        j                        rt        j                  t         j                  j	                  ||z        t        j                  |            }t        j                  d      |z  t        j                  d      t         j                  j	                  |      z  z   }t        j                  ||      |z   }nt        | t        j                        rKt        j                  ||      }t        j                  |      }	t         j                  j                  |	      }nt        | t        j                         rjt        j                  ||      }ddt        j                  |       z   z  }	t         j                  j#                  d	d|      |	k  j%                  t&              }t        j                  t        j(                  ||z        t        j                  |            j%                  t&              }
t+        ||
| |
      }|j-                         }t/        |j0                  |dd       |j3                         }y )Nr   i  r   )r   g      g?r   r   r   r   r   r   g?)atolrtol)r'   r(   r)   r_r*   lenr+   r	   r,   r-   r.   r/   dotr1   expr2   r3   uniformr6   r7   r5   r   fitr   r   summary)r
   r   r9   r:   r   r;   r<   r=   lprmeanr>   r    rsltr?   s                 r!   test_qif_fitrS   5   s    IINN6A	AUU< F
		q#f+./A#x(()GGBII$$!Q$$/<GGCLNRWWZ01A1Aq1A1IIIFF1f!	C))	*ffQvvc{IId#	C**	+ffQAt$%YYq!!,t3;;C@
		!q&!2771:.55c:A1QszBE99;D DKKd> 	Ar$   c                    t         j                  j                  d       t         j                  j                  d      }t         j                  j                  d      }t        j                  t        j
                  d      t        j                  d            }t        ||||       }|j                         }t        j                  ||d d df   |d d d	f   |d
      }t        j                  dd| |      }|j                         }t        |j                  |j                         t        |j                  |j                         t        | t               s|j"                  }	|j$                  }	y y )Ni_  d   r   )rU   r      r   )r   r   r   r   )r=   x1x2r   zy ~ 0 + x1 + x2r   )r   r   data)r'   r(   r)   r*   r-   r5   r.   r   rN   pd	DataFramefrom_formular   r   bser+   r   bicaic)
r   r=   r;   r   model1result1dfmodel2result2r?   s
             r!   test_formulare   Y   s    IINN4
		c"A
		h'AWWRYYr]BGGAJ/FAf<FjjlG	AQq!tWAadGvN	OB/)3">FjjlGGNNGNN3GKK-j/2KKKK 3r$   )numpyr'   numpy.testingr   pandasrZ   pyteststatsmodels.genmod.qifr   r   r   r   statsmodels.tools.numdiffr   statsmodels.genmodr	   markparametrizer,   r1   r3   rE   rS   re    r$   r!   <module>rp      sa    )  7 7 3 ' !2!2!2!46Fh6F6F6H***,!. /(9?;L*,(. /#2//#2L !2!2!2!46Fh6F6F6H***,!. /(9?;L*,(. ///@ (9?;L*,(. //r$   