
    !g3                        d Z ddlmZ ddlZddlZddlmZ ddlZddl	m
Z
 ddlmZ ddlmZmZ d Z e       Zdd	Zdd
Z G d d      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zedk(  r; e       Zej;                          ej=                          ej?                           e       Zej;                          ej=                          ej?                           e       Zej;                          ej=                           e       Zej;                          ej=                          ej?                           e       Zej;                          ej=                          ej?                           e       Zej;                          ej=                          ej?                          yy)z3

TestGMMMultTwostepDefault() has lower precision

    )lmapN)stats)OLS)gmm)assert_allcloseassert_equalc                  $   dd l } | j                  j                  t              d   }t	        j
                  | j                  j                  |d            }t        j                  |d         dk(  |d   dk(  z   }||d   dk  z  }||   }d|d<   |S )	Nr   zracd10data_with_transformed.csvprivate   medicaiddocvisF   const)	ospathsplit__file__pandasread_csvjoinnpasarray)r   curdirdtmaskdt3s        r/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/sandbox/regression/tests/test_gmm_poisson.pyget_datar      s    WW]]8$Q'F	f.OP	QB jjI'1,J11DEFD2h<2%&D
T(CCLJ    c                    t        j                  |       j                         st        d|        |rBt        j                  t        j
                  ||             }t        j                  |dd      }|S t        j
                  ||       }|S )Ninvalid paramsr   }Ô%ITr   isfiniteallprintexpdotclip)paramsexogr'   	predicteds       r   moment_exponential_addr-   (   st    ;;v""$' FF266$/0	 GGIq%0	  FF4(	r   c                    |d d df   }|d d dd f   }t        j                  |       j                         st        d|        |ryt        j                  t        j
                  ||             }t        j                  |dd      }||z  dz
  }t        j                  |      j                         st        d|       |S |t        j
                  ||       z
  }|S )Nr   r   r!   r"   zinvalid residr#   )r*   datar'   endogr+   r,   resids          r   moment_exponential_multr2   :   s     1IE!":D;;v""$' FF266$/0	GGIq%0		!A%{{5!%%'/5)
 L tV,,Lr   c                   p    e Zd ZddgZddgZddgZddgZd Zd Ze	j                  j                  d        Zy)	CheckGMMh㈵>Ơ>g&.>-C6
?c                    | j                   | j                  }}| j                  \  }}t        |j                  |j                  |d       t        |j                  |j                  d|       | j
                  \  }}t        |j                  |j                  |d       t        |j                  |j                  d|       y )Nr   rtolatol)res1res2
params_tolr   r*   bse_tolbse)selfr<   r=   r:   r;   s        r   
test_basiczCheckGMM.test_basic[   s    YY		dootT[[t!DT[[qtDllt$((A>$((>r   c                    | j                   | j                  }}| j                  \  }}t        |j                  |j
                  ||       | j                  \  }}t        |j                  |j                  ||       |j                         \  }}}t        |j                  |j                  dd       t        j                  j                  |j                  |j                        }t        ||||       t        ||j                         y )Nr9      )r<   r=   q_tolr   qQj_toljvalJjtestr   chi2sfJ_dfr   )	rA   r<   r=   r:   r;   jjpvaljdfpvals	            r   
test_otherzCheckGMM.test_otherf   s    YY		djjtT=jjt		4664@

5#		466<zz}}TVVTYY/t$T:S$))$r   c                     | j                   }|j                         }t        t        |j                  d         t        |j
                        dz          y )Nr   )r<   summaryr   lentablesr*   )rA   r<   summs      r   test_summaryzCheckGMM.test_summaryv   s;    yy||~SQ(#dkk*:Q*>?r   N)__name__
__module____qualname__r>   r?   rE   rH   rB   rS   pytestmarksmokerY    r   r   r4   r4   S   sR     JTlG4LE4LE	?%  [[@ @r   r4   c                       e Zd Zed        Zy)TestGMMAddOnestepc           	      p   dj                         }d}dj                         |z   dgz   }dj                         |z   dgz   }t        |   }t        |   }t        |   }d }t        ||||g      \  }}}ddg| _        d	d
g}	t	        t        j                  |dz         |      j                         j                  }
|j                  \  }}t        j                  |j                  |      |z  }t        j                  |||t              }|j                  |
d
|ddd
dddi      }|| _        ddlm} || _        y )Naget aget2 educyr actlim totchrr   private medicaidr   income ssiratioc                 6    t        j                  | t              S Nr   r   floatxs    r   <lambda>z/TestGMMAddOnestep.setup_class.<locals>.<lambda>       BJJq%0 r   r5   r6   {Gz?r   r   bfgs:0yE>gtoldispcenteredF)maxiterinv_weightsoptim_method
optim_argswargs)results_addonestep)r   DATAr   r?   r   r   logfitr*   shaper(   Tr   NonlinearIVGMMr-   r<   results_gmm_poissonr{   r=   )cls
XLISTEXOG2
endog_name
exog_namesinstrument_namesr0   r+   
instrumentr   rE   startnobsk_instrw0invmodres0resultss                    r   setup_classzTestGMMAddOnestep.setup_class   sD   6<<>

'--/*<yH
,224zAWIMZ J*+
0"&wj0I"JtZ Tlq	 BFF57OT*..077"((gz||Z047  j:PQwwuaU%+a8P)%0  2 Fr   NrZ   r[   r\   classmethodr   r`   r   r   rb   rb   }   s     r   rb   c                       e Zd Zed        Zy)TestGMMAddTwostepc           	      j   dj                         }d}dj                         |z   dgz   }dj                         |z   dgz   }t        |   }t        |   }t        |   }d }t        ||||g      \  }}}ddg| _        t	        t        j                  |d	z         |      j                         j                  }	|j                  \  }
}t        j                  |j                  |      |
z  }t        j                  |||t              }|j                  |	d
|ddddddid      }|| _        d	dlm} || _        y )Nrd   r   re   r   rf   c                 6    t        j                  | t              S rh   ri   rk   s    r   rm   z/TestGMMAddTwostep.setup_class.<locals>.<lambda>   rn   r   r5   r6   r      rp   rq   r   rr   ru   Frv   rw   rx   ry   rz   has_optimal_weights)results_addtwostep)r   r|   r   r?   r   r   r}   r~   r*   r   r(   r   r   r   r-   r<   r   r   r=   )r   r   r   r   r   r0   r+   r   r   r   r   r   r   r   r   r   s                   r   r   zTestGMMAddTwostep.setup_class   s>   6<<>

'--/*<yH
,224zAWIMZ J*+
0"&wj0I"JtZ Tl BFF57OT*..077"((gz||Z047  j:PQwwuaU%+a8P)%0e  M Fr   Nr   r`   r   r   r   r      s     r   r   c                       e Zd Zed        Zy)TestGMMMultOnestepc           	         dj                         }d}dj                         |z   dgz   }dj                         |z   dgz   }t        |   }t        |   }t        |   }d }t        ||||g      \  }}}t        j                  t        |            }	t        j                  ||f      }
ddg| _        d	d
g| _        d	d
g| _	        t        ||      j                         j                  }|j                  \  }}t        j                  |j                  |      |z  }t!        j"                  |	|
|t$              }|j                  |d
|ddd
dddid      }|| _        ddlm} || _        y )Nrd   r   re   r   income medicaid ssiratioc                 6    t        j                  | t              S rh   ri   rk   s    r   rm   z0TestGMMMultOnestep.setup_class.<locals>.<lambda>   rn   r   r5   r6   ro   r   rp   rq   rr   ru   Fr   r   )results_multonestep)r   r|   r   r   zerosrV   column_stackr?   rE   rH   r   r~   r*   r   r(   r   r   r   r2   r<   r   r   r=   r   r   r   r   r   r0   r+   r   r   endog_exog_r   r   r   r   r   r   r   s                     r   r   zTestGMMMultOnestep.setup_class   sp    7<<>

'--/*<yH
5;;=
JgYVZ J*+
0"&wj0I"JtZ #e*%. Tl1I	1I	 E4 $$&--"((gz||Z047  
<STwwuaU%+a8P)%0e  M Gr   Nr   r`   r   r   r   r      s     $ $r   r   c                       e Zd Zed        Zy)TestGMMMultTwostepc           	         dj                         }d}dj                         |z   dgz   }dj                         |z   dgz   }t        |   }t        |   }t        |   }d }t        ||||g      \  }}}t        j                  t        |            }	t        j                  ||f      }
ddg| _        t        ||      j                         j                  }|j                  \  }}t        j                  |j                  |      |z  }t        j                  |	|
|t               }|j                  |d	|d
dddddid      }|| _        ddlm} || _        y )Nrd   r   re   r   r   c                 6    t        j                  | t              S rh   ri   rk   s    r   rm   z0TestGMMMultTwostep.setup_class.<locals>.<lambda>   rn   r   r5   r6   r   rp   rq   r   rr   ru   Fr   r   )results_multtwostep)r   r|   r   r   r   rV   r   r?   r   r~   r*   r   r(   r   r   r   r2   r<   r   r   r=   r   s                     r   r   zTestGMMMultTwostep.setup_class   sZ    7<<>

'--/*<yH
5;;=
JgYVZ J*+
0"&wj0I"JtZ #e*%. Tl E4 $$&--"((gz||Z047  
<STwwuaU%+a8P)%0e  M Gr   Nr   r`   r   r   r   r      s     " "r   r   c                       e Zd Zed        Zy)TestGMMMultTwostepDefaultc           	         dj                         }d}dj                         |z   dgz   }dj                         |z   dgz   }t        |   }t        |   }t        |   }d }t        ||||g      \  }}}t        j                  t        |            }	t        j                  ||f      }
ddg| _        d	d	g| _        t        ||      j                         j                  }|j                  \  }}t        j                  |j                  |      |z  }t        j                   |	|
|t"              }|j                  |d
|dddd      }|| _        ddlm} || _        y )Nrd   r   re   r   r   c                 6    t        j                  | t              S rh   ri   rk   s    r   rm   z7TestGMMMultTwostepDefault.setup_class.<locals>.<lambda>(  rn   r   gMbp?Mb@?r7   r   rp   rq   r   rr   )rv   rw   rx   ry   r   )results_multtwostepdefault)r   r|   r   r   r   rV   r   r?   r>   r   r~   r*   r   r(   r   r   r   r2   r<   r   r   r=   r   s                     r   r   z%TestGMMMultTwostepDefault.setup_class  sZ    7<<>

'--/*<yH
5;;=
JgYVZ J*+
0"&wj0I"JtZ #e*%. dm E4 $$&--"((gz||Z047  
<STwwuaU%+a8P   Nr   Nr   r`   r   r   r   r     s     $ $r   r   c                   "    e Zd Zed        Zd Zy)TestGMMMultTwostepCenterc           	         dj                         }d}dj                         |z   dgz   }dj                         |z   dgz   }t        |   }t        |   }t        |   }d }t        ||||g      \  }}}t        j                  t        |            }	t        j                  ||f      }
ddg| _        ddg| _        dd	g}t        ||      j                         j                  }|j                  \  }}t        j                  |j                  |      |z  }t        j                   |	|
|t"              }|j                  |d
|dd	ddddid      }|| _        ddlm} || _        y )Nrd   r   re   r   r   c                 6    t        j                  | t              S rh   ri   rk   s    r   rm   z6TestGMMMultTwostepCenter.setup_class.<locals>.<lambda>S  rn   r   r   r7   rq   r   rp   r   rr   ru   TFr   r   )results_multtwostepcenter)r   r|   r   r   r   rV   r   r?   r>   r   r~   r*   r   r(   r   r   r   r2   r<   r   r   r=   )r   r   r   r   r   r0   r+   r   r   r   r   rE   r   r   r   r   r   r   r   s                      r   r   z$TestGMMMultTwostepCenter.setup_classF  sm    7<<>

'--/*<yH
5;;=
JgYVZ J*+
0"&wj0I"JtZ #e*%. Tlt E4 $$&--"((gz||Z047  
<STwwuaU%+a8P)$/U   Mr   c                 j    d}d}d}| j                   j                         \  }}}t        ||dd       y )Nr   g[C?g^&:?r7   r   r9   )r<   rK   r   )rA   rN   J_prJ   rO   rP   rQ   s          r   	test_morez"TestGMMMultTwostepCenter.test_moren  s7     		)5#sA6r   N)rZ   r[   r\   r   r   r   r`   r   r   r   r   C  s     % %N	7r   r   __main__)T) __doc__statsmodels.compat.pythonr   numpyr   r   scipyr   r]   #statsmodels.regression.linear_modelr   statsmodels.sandbox.regressionr   numpy.testingr   r   r   r|   r-   r2   r4   rb   r   r   r   r   r   rZ   ttr   rB   rS   r`   r   r   <module>r      sw   +     3 . 7" z$2'@ '@T! !H   F( (T& &R) )X47x 47p z		BNNMMOMMO		BNNMMOMMO		BNNMMO 
	BNNMMOMMO	"	$BNNMMOMMO	!	#BNNMMOMMO; r   