
    M/PhH                         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                            d ej                     ej                     ej                    g          ej                            d e	             e
             e            g          d                         Zej                            d ej                     ej                     ej                    g          ej                            d e	             e
             e            g          d	                         Zej                            d e	             e
             e            g          d
             ZdS )    N)assert_allclose)QIFQIFIndependenceQIFExchangeableQIFAutoregressive)approx_fprime)familiesfam
cov_structc                    t           j                            d           d}d}t           j                            |df          }t	          | t
          j                  rt          j        t           j                            ||z            t          j        |                    }t          j	        d          |z  t          j	        d          t           j                            |          z  z   }|
                    d          |z   }nxt	          | t
          j                  r"t           j                            d	|          }n<t	          | t
          j                  r"t           j                            d
d|          }t          j        t          j        ||z            t          j        |                                        t"                    }t%          |||| |          t'          d	          D ]}t           j                            d          }	                    |	          \  }}
}}}fd}t+          |	|d          }t-          ||d           fd}t+          |	|d          }t-          |
|d           d S )N          size      ?      ?      r      groupsfamilyr   c                 :                         |           d         S )Nr   	objectiveparamsmodels    a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/genmod/tests/test_qif.pyllf_gnz test_qif_numdiff.<locals>.llf_gn)       ??6**1--    gHz>g-C6?c                 :                         |           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      sN    INN6A	A
	q!f%%A#x()) ,GBI$$!Q$$//<<GCLLNRWZ001A1Aq1A1I1IIIEE!HHqL	C)	*	* ,Iaa((	C*	+	+ ,Ia++
	!Q$,,33C88A1QszBBBE1XX 2 2Y1%% #(//""5"54Ax	. 	. 	. 	. 	."2vt44
*d333	. 	. 	. 	. 	.$Rd33lD1111!2 2r$   c                    t           j                            d           d}d}t           j        d         }t           j                            |t          |          f          }t          | t          j                  rt          j	        t           j                            ||z            t          j
        |                    }t          j        d          |z  t          j        d          t           j                            |          z  z   }t          j        ||          |z   }nt          | t          j                  rIt          j        ||          }t          j        |          }	t           j                            |	          }nt          | t          j                  rnt          j        ||          }ddt          j        |           z   z  }	t           j                            d	d|          |	k                         t&                    }t          j	        t          j        ||z            t          j
        |                                        t&                    }
t+          |||
| |
          }|                                }t/          |j        |dd           |                                }d S )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)    INN6A	AU< F
	q#f++.//A#x()) AGBI$$!Q$$//<<GCLLNRWZ001A1Aq1A1I1IIIF1f!	C)	*	* AfQvc{{Id##	C*	+	+ AfQAt$%Yq!!,,t3;;C@@
	!q&!!271::..55c::A1QszBBBE99;;D DKd>>>> 	AAAr$   c                    t           j                            d           t           j                            d          }t           j                            d          }t          j        t          j        d          t          j        d                    }t          ||||           }|                                }t          j
        ||d d df         |d d d	f         |d
          }t          j        dd| |          }|                                }t          |j        |j                   t          |j        |j                   t          | t                     s|j        }	|j        }	d S d S )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   sC    INN4
	c""A
	h''AWRYr]]BGAJJ//FAf<<<FjjllG	AQqqq!tWAaaadGvNN	O	OB/)3"> > >FjjllGGNGN333GK---j/22 KK r$   )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      sI       ) ) ) ) ) )     7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 3 3 3 ' ' ' ' ' ' !2!2!4!46Fh6F6H6H**,,!. / /(9(9??;L;L**,,(. / /#2 #2/ // /#2L !2!2!4!46Fh6F6H6H**,,!. / /(9(9??;L;L**,,(. / / / // /@ (9(9??;L;L**,,(. / / / /  r$   