
    M/Ph<                        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                                ZdZd                                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j(        d          Z)dZ*dZ+ei  ej,        dg          fei  ej,        dg          fei  ej,        e+e)g          fei  ej,        e+e)e*g          fedd	i ej,        e+e)e*g          fei  ej,        e+e)e*g          fedd	i ej,        e+e)e*g          fei  ej,        e)g          fei  ej,        e)e*g          fedd	i ej,        e)e*g          fei  ej,        e)e*g          feddi ej,        e)e*g          fei  ej,        e)e*g          feddi ej,        e)e*g          fedd i ej,        e)g          fgZ-eeeeeeeegZ.d! Z/ e/            \  Z0Z1ej2        3                    d"e-          d#             Z4dS )$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dS )CheckPredictc                 
   | 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                   d S )Nr   r   rtol   )res1res2slicek_inflr   paramsr   bsenpasarrayexp)selfr   r   sl1sl2params1params2s          g/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/discrete/tests/test_predict.py
test_basiczCheckPredict.test_basic/   s    yyDKT**Aq)400C($+c*:KKKKtx}2	>JJJJ*T[))*T[))RVGBK%8%8tyIIIIII    c                    | j         }| j        }t          j        t                                        d          }|j        } |j        |fi | j        }t          |j
        |d         j        d         d           t          |j        |d         j        d         dd           t          |t                    r|                                d         }t          |d         |d         j        d         dd           t          |d	         |d
         j        d         dd           |                    d          d         }t          |d         |d         j        d         dd           t          |d	         |d
         j        d         dd           nn|                                d         }t          |d         |d         j        d         dd           t          |d	         |d
         j        d         dd           |                                \  }}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|                                d         }t          |d         |d         j        d         dd           t          |d	         |d
         j        d         dd           |                    d          d         }t          |d         |d         j        d         dd           t          |d	         |d
         j        d         dd           nn|                                d         }t          |d         |d         j        d         dd           t          |d	         |d
         j        d         dd           |                                \  }}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           |                                }t          |d d df         |d         j        d	d         dd           t          |d d d	f         |d
         j        d	d         dd           |                                \  }}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           |                                }t          |d d df         |d         j        d	d         dd           t          |d d d	f         |d
         j        d	d         dd           |                                \  }}t          ||j        dd           |                    |j
                  \  }}t)          |d           t          d d         }	t          j        t-          |j        j                            }
d	|
d d<   |
|
                                z  }
 |j        d|	ddd| j        }|                                }|                    dd|
          }|                                }t          |j
        |j
        d           t          ||d           d S ) 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;   s3   yyZ""1%% *"t"2==)<==Ca(8tDDDDT!2TJJJJd677 	M#BBqE3t9>!#44tLLLLBqE3t9>!#44tLLLLg..q1BBqE3t9>!#44tLLLLBqE3t9>!#44tLLLLL#BBqE3t9>!#44tLLLLBqE3t9>!#44tLLLL++--adlTBBBB'"t"GG4G43FGGCa(8tDDDDT!2TJJJJd677 	M#BBqE3t9>!#44tLLLLBqE3t9>!#44tLLLLg..q1BBqE3t9>!#44tLLLLBqE3t9>!#44tLLLLL#BBqE3t9>!#44tLLLLBqE3t9>!#44tLLLL++--adlTBBBB *"t"2 :Vbill : :%)%8: :Cac(:FFFFT!!44tLLLL]]__111a4#d).1"5DMMMM111a4#d).1"5DMMMM++--adlTBBBB'"t" H")A,,+/H H373FH HCac(:FFFFT!!44tLLLL]]__111a4#d).1"5DMMMM111a4#d).1"5DMMMM++--adlTBBBB++DN+33aT1 2A2hXc$**++,,2A2
bggii!d! 6s&$ 6 6$($46 6  ""!!"!MM  ""s}5AAAAd......r-   c                 `   | j         }|                    d          }|                    t          j        d                    }t          |j        j        d         d           t          |j        j        d         d           	 |	                    d	           d S # t          $ r Y d S 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    y!!!++**RYq\\*BBX^)!,a000S(.q12666	NNBN''''' 	 	 	DD	s   B 
B-,B-N)__name__
__module____qualname__r,   rd   rv   rF   r-   r+   r   r   -   sH        
J 
J 
JX/ X/ X/t    r-   r   c                   &    e Zd Zd Zd Zd Zd ZdS )CheckExtrasc                    | j         }t          j        t          d d                   } |j        |fddi| j        }t          |j                  |j        d         z
  }|dk    r5t          j	        |t          j
        |j        d         |f          f          }|                    |          }|                                }|                                }t          ||d           d S )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    yZRaR!!"t"2MMXM9LMMdk""RXa[0Q;;"bhW/E&F&F!GHHB[[__mmookkmmSu------r-   c                    | j         }|                     t          t          j        d d d df                   }|                    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                    d S )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   yzz%QQQV!455xxxx55~t{3B3'7!'+{233'7'9 : :8QL 1 1233Z_QQQV,
DDDDDDj,'(* * *j:t*<===BQBRaR)))D\*+hP P PDj$-?%*, , ,rr
F2A2J/////r-   c                    |                      t          t          j        d d d df                   }|                    dd          }t          j        |j        d d          dgg          }t          j        dt          |          f          }d|d<   t
          j
                            d           d	t
          j
                            t          j        d                   z  }dd
lm}m}  ||d |d           }t          j        |d                                                   rJ  ||d |f          }	|	d         d	k    sJ  ||d |fd          }
|
d         d	k    sJ d S )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%QQQV!455xxxx55~t{111~s&;<<8QL 1 1233 		y!!!BIOOEKN;;;
	* 	* 	* 	* 	* 	* 	* 	*
 dt*4F F F8BqE??&&((((( j4*<===1v}}}} DdJ-?%*, , ,ay4r-   c                     | j         }ddlm}  ||          }g d}|D ]}t          ||           |                                 d S )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   sw    yEEEEEET""    	! 	!DE4    r-   N)rw   rx   ry   r   r   r   r   rF   r-   r+   r{   r{      sQ        . . .0 0 0,        D    r-   r{   c                   $    e Zd Zed             ZdS )TestNegativeBinomialPPredictc                     t           | _        t          t          t                                        dd          }|| _        t          j        | _        i | _	        i | _
        d| _        d| _        d S )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   s]    %	 --1131OO)
r-   Nrw   rx   ry   classmethodr   rF   r-   r+   r   r      -        	 	 [	 	 	r-   r   c                   $    e Zd Zed             ZdS )TestZINegativeBinomialPPredictc                 z   t          t          d         d          }t          t          t          |d          }t          j        g d          }|                    |dd	          }|| _        t          j
        | _        d
|                    d          i| _        d
|d d         i| _        d| _        d| _        d S )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 K K X     
 ||Hc|JJ+)9>>!+<+<=&	"1"6
r-   Nr   rF   r-   r+   r   r   	  s-          [  r-   r   c                   $    e Zd Zed             ZdS )TestGeneralizedPoissonPredictc                     t           | _        t          t          t                    }|                    d          }|| _        t          j        | _        i | _	        i | _
        d| _        d| _        d S )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!  s]    &	!%..xxxx(()
r-   Nr   rF   r-   r+   r   r     r   r-   r         ?g      g?r   r:   loglike_methodnb1	geometricc                      t           j                            d           d} t          j        | df          }t           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  sm    INN9D
q	A			B	S2XMA
3Aa4Kr-   casec                 	   t           t          }}t          |          }t          j                            d           | \  }}}t          |t                    r|dk                        t                    } |||fi |}|}|
                    |          }	|	                    d          j        dk    sJ 	 |	                    |df                                          }
n8# t          $ r+ |	                    |                                          }
Y nw xY w ||
|fi |}|                    |dd          }|
                    |j                  }t%          |                                                                d         |
                                d	
           t%          |                                                                d         |
                                d	
           |                    d          }t%          ||                                                                d
           |                                }t%          |j        |
|z
  t          j        |          z  d
           t          |t                    s|                    dt          j        d                    }|j        t          |j                  dfk    sJ |                    dt          j        d          d          }t%          |j        |                    d          d
           |                                }|j         |t>          v rtA          j!                    5  tA          j"        dtF                     |$                                }|%                                 d d d            n# 1 swxY w Y   |j&        j        t          |
          fk    sJ 	 |'                                }|j        t          |
          fk    sJ n# tP          $ r Y nw xY w|)                                }|j        t          |
          fk    sJ |j*        }|j        t          |
          fk    sJ 	 tA          j!                    5  tA          j"        dtF                     |+                                 d d d            d S # 1 swxY w Y   d S # tX          $ r Y d S w xY wd S )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q66DINN9"ItV)[)) $WU##
)Aq
!
!D
!
!CJ  ,,E99Q<<!!!!,YYT1IY&&..00 , , ,YYDY!!))++, )B
"
"T
"
"C
''z&#'
F
FC !!#*--FFKKMM))++A.		DDDDFJJLL((**1-rvvxxcBBBB;;U;##DD&**,,..00u====;;==DC%T	RWT]]'BOOOOi-- &29Q<<@@{s39~~q11111##29Q<< $ ? ?(%**Q--eDDDD  "" L  $&& 	" 	"!([AAAA%%''E!!!		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" { SWWK////	,,..E;3r77+----- 	 	 	D	 !!##{s2wwk))))*zc"gg[((((	(** ' '%hEEEE$$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '  	 	 	DD	5 ! sm   8*C# #2DD-AN==OO)/P 
P&%P&;S 0S>S SS SS 
S&%S&)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 7 7 7 7 7 7 7  0 0 0 0 0 0 M M M M M M                           G F F F F F , , , , , , /4466

%%''*4y@
ZJt t t t t t t tnS S S S S S S Sl    <       \   ,    K    RVC[[
B# R3%!"hbh2w//0#R1b%.)A)AB#c1XxrxB/G/GH"B!R(@(@A"S!Hhbh2u~.F.FGb("(B4..!HBHb%[112a("(B;"7"78XRXr5k223#q828RK#8#89r828RK001(%0("(B;2G2GH(+6"G
& 

"!	   &%''  ((G G )(G G Gr-   