
    !g<                        d Z ddlZddlZddlmZmZ ddlZddlm	Z	 ddl
mZ ddlmZmZmZmZmZmZmZ ddlmZmZmZ ddlmZ d	d
lmZ dj;                         ZdZdj;                         ez   dgz   Z ee   Z!ee    Z" G d d      Z# G d d      Z$ G d de#e$      Z% G d de#      Z& G d de$      Z' ejP                  d      Z)dZ*dZ+ei  ejX                  dg      fei  ejX                  dg      fei  ejX                  e+e)g      fei  ejX                  e+e)e*g      fedd	i ejX                  e+e)e*g      fei  ejX                  e+e)e*g      fedd	i ejX                  e+e)e*g      fei  ejX                  e)g      fei  ejX                  e)e*g      fedd	i ejX                  e)e*g      fei  ejX                  e)e*g      feddi ejX                  e)e*g      fei  ejX                  e)e*g      feddi ejX                  e)e*g      fedd i ejX                  e)g      fgZ-eeeeeeeegZ.d! Z/ e/       \  Z0Z1ejd                  jg                  d"e-      d#        Z4y)$zK
Created on Sat Nov 13 12:48:37 2021

Author: Josef Perktod
License: BSD-3
    N)assert_allcloseassert_equal)add_constant)PredictionResultsMonotonic)BinaryModelLogitProbitPoissonNegativeBinomialNegativeBinomialPGeneralizedPoisson)ZeroInflatedPoissonZeroInflatedNegativeBinomialPZeroInflatedGeneralizedPoisson)DATA   )results_predictzaget aget2 educyr actlim totchrdocviszprivate medicaidconstc                       e Zd Zd Zd Zd Zy)CheckPredictc                 D   | j                   }| j                  }t        | j                  dd       }t        d| j                  dz    d       }t	        |j
                  |   |j
                  |   | j                         t	        |j                  |   |j                  |   d| j                  z         t        j                  |j
                        }t        j                  |j
                        }t	        |d   t        j                  |d         | j                         y )Nr   r   rtol   )res1res2slicek_inflr   paramsr   bsenpasarrayexp)selfr   r   sl1sl2params1params2s          d/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/discrete/tests/test_predict.py
test_basiczCheckPredict.test_basic/   s    yyyyDKKT*Aq)40C($++c*:Ktxx}2		>J**T[[)**T[[)RVVGBK%8tyyI    c                    | j                   }| j                  }t        j                  t              j                  d      }|j                  } |j                  |fi | j                  }t        |j                  |d   j                  d   d       t        |j                  |d   j                  d   dd       t        |t              r|j                         d   }t        |d   |d   j                  d   dd       t        |d	   |d
   j                  d   dd       |j                  d      d   }t        |d   |d   j                  d   dd       t        |d	   |d
   j                  d   dd       nW|j                         d   }t        |d   |d   j                  d   dd       t        |d	   |d
   j                  d   dd       |j!                         \  }}t        ||j"                  dd       |j$                  } |j                  dddi| j                  }t        |j                  |d   j                  d   d       t        |j                  |d   j                  d   dd       t        |t              r|j                         d   }t        |d   |d   j                  d   dd       t        |d	   |d
   j                  d   dd       |j                  d      d   }t        |d   |d   j                  d   dd       t        |d	   |d
   j                  d   dd       nW|j                         d   }t        |d   |d   j                  d   dd       t        |d	   |d
   j                  d   dd       |j!                         \  }}t        ||j"                  dd       |j                  } |j                  |fdt        j&                  d      d| j                  }t        |j                  |d   j                  d	d d       t        |j                  |d   j                  d	d dd       |j                         }t        |d d df   |d   j                  d	d dd       t        |d d d	f   |d
   j                  d	d dd       |j!                         \  }}t        ||j"                  dd       |j$                  } |j                  ddt        j&                  d      dd| j                  }t        |j                  |d   j                  d	d d       t        |j                  |d   j                  d	d dd       |j                         }t        |d d df   |d   j                  d	d dd       t        |d d d	f   |d
   j                  d	d dd       |j!                         \  }}t        ||j"                  dd       |j!                  |j                        \  }}t)        |d       t        d d }	t        j*                  t-        |j.                  j0                              }
d	|
d d |
|
j                         z  }
 |j                  d|	ddd| j2                  }|j5                         }|j                  dd|
      }|j5                         }t        |j                  |j                  d       t        ||d       y ) Nr   b-C6?r   se)r   atolllgMbP?r   uldeltamethodaverageTga2U0*3?g~jth?gMb@?prob   whichy_values   r<   r=   r8   g{Gzt?)value   mean)exogr<   r8   )r<   r8   agg_weightsvIh%<=gHz> )r   r   r#   r$   rC   rB   results_margins_atmeansget_predictionpred_kwds_meanr   	predictedilocr1   
isinstancer   conf_intt_testtvaluesresults_margins_meanaranger   zeroslenmodelendogpred_kwds_6summary_frame)r&   r   r   exrdfpredcistat_df6awpm6dfm6pmwdfmws                  r+   test_predictzCheckPredict.test_predict;   s   yyyyZZ""1% **"t""2=)<)<=Ca(8tDT!2TJd67#BBqE3t9>>!#44tLBqE3t9>>!#44tLg.q1BBqE3t9>>!#44tLBqE3t9>>!#44tL#BBqE3t9>>!#44tLBqE3t9>>!#44tL++-adllTB''"t""G4G43F3FGCa(8tDT!2TJd67#BBqE3t9>>!#44tLBqE3t9>>!#44tLg.q1BBqE3t9>>!#44tLBqE3t9>>!#44tL#BBqE3t9>>!#44tLBqE3t9>>!#44tL++-adllTB **"t""2 :Vbiil :%)%8%8:Ca(:FT!!44tL]]_1a4#d)..1"5DM1a4#d)..1"5DM++-adllTB''"t"" H"))A,+/H373F3FHCa(:FT!!44tL]]_1a4#d)..1"5DM1a4#d)..1"5DM++-adllTB++DNN+3aT1 2AhXXc$****+,2A
bggi!d!! 6s&$ 6$($4$46  "!!"!M  "s}}5Ad.r-   c                 Z   | j                   }|j                  d      }|j                  t        j                  d            }t        |j                  j                  d   d       t        |j                  j                  d   d       	 |j                  d	       y # t        $ r Y y w xY w)
N   )y_max   )	bin_edgesr   r>         )upp_xlim)r   get_diagnostictest_chisquare_probr#   rQ   r   diff1shapeprobs_predicted
plot_probsImportError)r&   r   diares_chi2s       r+   test_diagnosticzCheckPredict.test_diagnostic   s    yy!!!+**RYYq\*BX^^))!,a0S((..q126	NNBN' 		s   B 	B*)B*N)__name__
__module____qualname__r,   rd   rv   rF   r-   r+   r   r   -   s    
JX/tr-   r   c                   $    e Zd Zd Zd Zd Zd Zy)CheckExtrasc                    | j                   }t        j                  t        d d       } |j                  |fddi| j
                  }t        |j                        |j                  d   z
  }|dkD  r9t        j                  |t        j                  |j                  d   |f      f      }|j                  |      }|j                         }|j                         }t        ||d       y )N   r<   linearr   r   -q=r   )r   r#   r$   rC   rH   rI   rS   r!   rp   column_stackrR   rN   rM   r   )r&   r   rX   rZ   k_extrattcipcits           r+   test_predict_linearzCheckExtras.test_predict_linear   s    yyZZRa!"t""2MXM9L9LMdkk"RXXa[0Q;"bhhW/E&F!GHB[[_mmokkmSu-r-   c                 @   | j                   }| j                  t        t        j                  d d d df         }|j                  dd      }t        j                  |j                  d d dg|j                  dd  g      }t        j                  dt        |      f      }d|d<   |j                  j                  d d dd f   }ddlm}  |||d	      } |||d f
      }	t        |	d d |d d         |||d|d      }
 |||d fd      }t        |d d |
d d        y )Nr   newton,  r7   maxiterr   r   )r   )
score_test)params_constrainedk_constraints
exog_extrar:   HC0)r   r   r_matrixcov_typer   r   )r   klassrU   rC   valuesfitr#   concatenater!   rR   rS   rT   %statsmodels.base._parameter_inferencer   r   )r&   r   modrresrparams_restrr   r   r   sc1sc2sc1_hcsc2_hcs               r+   test_score_testzCheckExtras.test_score_test   s&   yyzz%QV!45xxxx5~~t{{3B'7!'+{{23'7'9 :88QL 123ZZ__QV,
D,'(*:t*<=BQRa)D\*+hPDj$-?%*,r
F2AJ/r-   c                    | j                  t        t        j                  d d d df         }|j	                  dd      }t        j                  |j                  d d  dgg      }t        j                  dt        |      f      }d|d<   t
        j                  j                  d       d	t
        j                  j                  t        j                  d         z  }dd
lm}m}  ||d |d       }t        j"                  |d         j%                         rJ  ||d |f      }	|	d   d	kD  sJ  ||d |fd      }
|
d   d	kD  sJ y )Nr   r   r   r   r   r   )r   r   iW:g{Gz?)r   _scorehess_extra)r   exog2_extra	hess_kwdsr   r   r   )r   rU   rC   r   r   r#   r   r!   rR   rS   randomseedrandnrp   r   r   r   isnanany)r&   r   r   r   r   r   r   r   shr   r   s              r+   test_score_test_alphaz!CheckExtras.test_score_test_alpha   s,    zz%QV!45xxxx5~~t{{1~s&;<88QL 123 			y!BIIOOEKKN;;
	*
 dt*4F88BqE?&&((( 4*<=1v}} DdJ-?%*,ay4r-   c                     | j                   }ddlm}  ||      }g d}|D ]  }t        ||        |j	                          y )Nr   )MLEInfluence)cooks_distanced_fittedvaluesd_fittedvalues_scaledd_paramsdfbetashat_matrix_diagresid_studentized)r   $statsmodels.stats.outliers_influencer   getattrrW   )r&   r   r   influattrsattrs         r+   test_influencezCheckExtras.test_influence   sH    yyET"  	!DE4 	! 	r-   N)rw   rx   ry   r   r   r   r   rF   r-   r+   r{   r{      s    .0,  Dr-   r{   c                       e Zd Zed        Zy)TestNegativeBinomialPPredictc                     t         | _        t        t        t              j	                  dd      }|| _        t        j                  | _        i | _	        i | _
        d| _        d| _        y )Nr   r   r   r   :0yE>)r   r   rU   rC   r   r   respresults_nb_docvisr   rI   rV   r    r   )clsr   s     r+   setup_classz(TestNegativeBinomialPPredict.setup_class   sV    %	 -1131O))
r-   Nrw   rx   ry   classmethodr   rF   r-   r+   r   r          	 	r-   r   c                       e Zd Zed        Zy)TestZINegativeBinomialPPredictc                 L   t        t        d   d      }t        t        t        |d      }t        j                  g d      }|j                  |dd	      }|| _        t        j                  | _        d
|j                  d      i| _        d
|d d i| _        d| _        d| _        y )NagetF)prependr:   )	exog_inflp)gRQg{GzgRQ?g{Gz?g)\(?ggQ?g(\?gHzG?g(\?gףp=
?r   r   start_paramsr7   r   r   r   rA   r0   )r   r   r   rU   rC   r#   arrayr   r   r   results_zinb_docvisr   rB   rI   rV   r    r   )r   r   mod_zinbspr   s        r+   r   z*TestZINegativeBinomialPPredict.setup_class  s     fu=	0;DK XX  
 ||Hc|J++)9>>!+<=&	"16
r-   Nr   rF   r-   r+   r   r   	  s     r-   r   c                       e Zd Zed        Zy)TestGeneralizedPoissonPredictc                     t         | _        t        t        t              }|j	                  d      }|| _        t        j                  | _        i | _	        i | _
        d| _        d| _        y )Nr   r6   r   r   )r   r   rU   rC   r   r   r   r   r   rI   rV   r    r   )r   mod1r   s      r+   r   z)TestGeneralizedPoissonPredict.setup_class!  sV    &	!%.xxxx())
r-   Nr   rF   r-   r+   r   r     r   r-   r         ?g      g?r   r:   loglike_methodnb1	geometricc                      t         j                  j                  d       d} t        j                  | df      }t         j                  j	                  |       }dd|z   dz  z  }t        j
                  |dz         }||fS )N\c:  r   r   r:         ?)r#   r   r   onesr   trunc)nobsxynys       r+   get_data_simulatedr   O  sg    IINN9D
q	A		B	S2XMA
3Aa4Kr-   casec                    t         t        }}t        |      }t        j                  j                  d       | \  }}}t        |t              r|dkD  j                  t              } |||fi |}|}|j                  |      }	|	j                  d      j                  dk(  sJ 	 |	j                  |df      j                         }
 ||
|fi |}|j!                  |dd      }|j                  |j"                        }t%        |j'                         j                         d   |
j'                         d	
       t%        |j)                         j                         d   |
j)                         d	
       |j+                  d      }t%        ||j)                         j                         d
       |j+                         }t%        |j,                  |
|z
  t        j.                  |      z  d
       t        |t              s|j+                  dt        j0                  d            }|j2                  t        |j4                        dfk(  sJ |j7                  dt        j0                  d      d      }t%        |j8                  |j'                  d      d
       |j;                         }|j<                   |t>        v rFtA        jB                         5  tA        jD                  dtF               |jI                         }|jK                          d d d        jL                  j2                  t        |
      fk(  sJ 	 |jO                         }|j2                  t        |
      fk(  sJ 	 |jS                         }|j2                  t        |
      fk(  sJ |jT                  }|j2                  t        |
      fk(  sJ 	 tA        jB                         5  tA        jD                  dtF               |jW                          d d d        y y # t        $ r$ |	j                  |      j                         }
Y nw xY w# 1 sw Y   )xY w# tP        $ r Y w xY w# 1 sw Y   y xY w# tX        $ r Y y w xY w)Nr   r   r   )sizebfgsr   r   r   g?r   var)r<   r   rE   r9   r}   r;   Tr?   g|=ignore)category)-y_countx_constrS   r#   r   r   
issubclassr   astypefloatget_distributionpmfndimrvssqueeze
ValueErrorr   r!   r   rB   r   predictresid_pearsonsqrtrQ   rp   rU   rH   rJ   rm   rq   models_influwarningscatch_warningssimplefilterUserWarningget_influencerW   residresid_score_factorAttributeErrorresid_scorer   plot_influencers   )r   r   r   r   	cls_modelkwdsr!   mod
params_dgpdistry2resdistr2var_rB   probsprobs2rt   r   r  f_scs                        r+   
test_distrr  \  s   GqAq6DIINN9"ItV)[)WU#
Aq
!D
!CJ  ,E99Q<!!!,YYT1IY&..0 B
"T
"C
''z&#'
FC !!#**-FFKKM))+A.	DFJJL((*1-rvvxcB;;U;#DD&**,..0u=;;=DC%%T	RWWT]'BOi-&299Q<@{{s399~q1111##299Q< $ ?((%**Q-eD  " L $$& 	"!!([A%%'E!		" {{  SWK///	,,.E;;3r7+--- !!#{{s2wk)))**zzc"g[(((	((* '%%hE$$&' '- !9  ,YYDY!))+,:	" 	"  		' '  		s`   #"P <P7>+Q =Q ,Q=Q )P43P47Q	QQQQ Q 	Q+*Q+)5__doc__r   numpyr#   numpy.testingr   r   pyteststatsmodels.tools.toolsr   &statsmodels.base._prediction_inferencer   #statsmodels.discrete.discrete_modelr   r   r	   r
   r   r   r    statsmodels.discrete.count_modelr   r   r   5statsmodels.sandbox.regression.tests.test_gmm_poissonr   resultsr   r   split
XLISTEXOG2
endog_name
exog_namesrU   rC   r   r{   r   r   r   logmualphawr   modelsr   r   r   r   markparametrizer  rF   r-   r+   <module>r)     s     7  0 M    G , /446

%%'*4y@
ZJt tnS Sl< \ ,K  RVVC[
B# R3%!"hbhh2w/0#R1b%.)AB#c1XxrxxB/GH"B!R(@A"S!Hhbhh2u~.FGb("((B4.!HBHHb%[12a("((B;"78XRXXr5k23#q8288RK#89r8288RK01(%0("((B;2GH(+6"G
& 

"!	 &'  (G )Gr-   