
    M/Ph1                        d dl Zd dlmZmZmZ d dlmZmZ d dl	Z	d dl
mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ 	 d dlmZ n# e$ r Y nw xY wdZerd dlm Z   e d          Z!ndZ!d Z" G d	 d
          Z# G d de#          Z$ G d de$          Z% G d d          Z& G d de&          Z' G d d          Z( G d d          Z) G d d          Z*e	j+        j,        d             Z-dS )    N)assert_array_lessassert_equalassert_raises)	DataFrameSeries)abline_plot
add_lowessinfluence_plotplot_added_variable	plot_ccprplot_ccpr_gridplot_ceres_residualsplot_fitplot_leverage_resid2plot_partial_residualsplot_partregress_gridplot_regress_exogF)PdfPagesztest_regressionplots.pdfc                 B    t           r|                     |           d S d S )N)
pdf_outputsavefig)pdffigs     o/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/graphics/tests/test_regressionplots.pyclose_or_saver   $   s,     C     c                       e Zd Zed             Zej        j        d             Zej        j        d             Z	ej        j        d             Z
ej        j        d             ZdS )TestPlotc                    d}d}t          j        dd|          }ddt           j                            |          z  z   }t           j        ||t          j        d|z            |dz
  dz  t          j        |          f         }g d}t          j        ||          }||t           j                            |	          z  z   }t          j
        t           j        ||f         d
          }	t          j        ||	                                          | _        t          j        ||                                          | _        d S )Nd         ?r               r!   r!      g{Gzg      @sizeFprepend)nplinspacerandomrandnc_sinonesdotnormalsmadd_constantOLSfitresres_true)
clsnsamplesigx1x2xbetay_trueyexog0s
             r   setup_classzTestPlot.setup_class+   s   [B((RY__W----E"b"&r**R!VM277;K;KKL'''4S29+++9999b"fu===&E""&&((va||''))r   c                    | j         }t          |dd           }|j        j        d d df         }|j        }|j        j        }|j        d                                         d                                         \  }}t          j
                            ||           t          j
                            ||           |j        d                                         d                                         \  }}t          j
                            ||           t          j
                            ||           t          t          |           d S )Nr   rB   r'   )r9   r   modelexogfittedvaluesendogaxes	get_linesget_datar,   testingr   r   r   )	selfclose_figuresr9   r   x0yfrC   px1px2s	            r   test_plot_fitzTestPlot.test_plot_fit:   s   hsAd+++Y^AAAqD!IO8A;((**1-6688S

C(((

3'''8A;((**1-6688S

C(((

C(((c3r   c                 t   | j         }t          |dd            t          |ddg           t          | j        d           t	          |d           t          |d           t          |dg           t          |ddg          }|j        D ]}t          |           t          t          |           d S )Nr   rG   r'   )exog_idx)r%   r$   )grid)r9   r   r   r:   r   r   r   rL   r	   r   r   )rP   rQ   r9   r   axs        r   test_plot_othzTestPlot.test_plot_othN   s     ha%%%%cQF3333dm&9999#****#""""saS))))SAa5111( 	 	BrNNNNc3r   c                 "   | j                                         }t          | j                   }t          t	          |t
          j                  d           	 |j        d                                         d         j	        }t          j        |j        d                   }t          j        ||                                          j        }t!          |d           n)# t"          $ r dd l}|                    d           Y nw xY wt          | j         d          }t          t	          |t
          j                  d           	 |j        d                                         d         j	        }t          j        t)          j        |j        d                             }t          j        ||                                          j        }t!          |d           n# t"          $ r Y nw xY wt/          t0          t          | j         d           d S )NTr   g-q=z+test not compatible with matplotlib versionDFFITS)	criterionunknown)r9   get_influencer
   r   
isinstancepltFigurerL   get_children_sizesr5   r6   cooks_distancer7   r8   ssrr   AttributeErrorwarningswarnr,   absdffitsr   
ValueError)rP   rQ   inflr   sizesexrg   ri   s           r   test_plot_influencezTestPlot.test_plot_influence_   s   x%%''TX&&ZSZ00$777	IHQK,,..q18E!4Q!788B&##''))-Cc5)))) 	I 	I 	IOOOMMGHHHHH	I TX:::ZSZ00$777	HQK,,..q18EA!7!788B&##''))-Cc5)))) 	 	 	D	 	j.$(iPPPPPPs&   BC #DDBG 
G*)G*c                 ~    t          | j                  }t          t          |t          j                  d           d S )NT)r   r9   r   ra   rb   rc   )rP   rQ   r   s      r   test_plot_leverage_resid2z"TestPlot.test_plot_leverage_resid2z   s3    "48,,ZSZ00$77777r   N)__name__
__module____qualname__classmethodrE   pytestmark
matplotlibrV   r[   rq   rs    r   r   r   r   )   s        * * [* [     & [       [Q Q Q4 [8 8 8 8 8r   r   c                       e Zd Zd ZdS )TestPlotPandasc                    d}d}t          j        dd|          }ddt           j                            |          z  z   }t           j        ||t          j        d|z            |dz
  dz  t          j        |          f         }g d}t          j        ||          }||t           j                            |	          z  z   }t          j
        t           j        ||f         d
          }	t          |	g d          }	t          |d          }t          j        ||	                                          }
|
| _        t          |	g d          }||d<   || _        d S )Nr    r!   r   r"   r#   r$   r%   r&   r(   Fr*   )constvar1var2columnsoutcomenamerC   )r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r   r   r7   r8   r9   data)rP   r<   r=   r>   r?   XrA   rB   rC   rD   r9   r   s               r   setup_methodzTestPlotPandas.setup_method   sG   [B((BIOOG,,,,E"b"&R..2a4!)RWW5E5EEF'''4S29+++9999b"fu===%)B)B)BCCC19%%%fQ""$$(A(A(ABBBS				r   N)rt   ru   rv   r   r{   r   r   r}   r}      s#            r   r}   c                   8    e Zd Zej        j        d             ZdS )TestPlotFormulac                     ddl m}  |d| j                                                  }t	          |d            |d| j                                                  }t	          |d           d S )Nr   )olszy~var1-1)r   r   zy~var1)statsmodels.formula.apir   r   r8   r   )rP   rQ   r   r9   s       r   test_one_column_exogz$TestPlotFormula.test_one_column_exog   s~    //////c*49---1133#v&&&c(+++//11#v&&&&&r   N)rt   ru   rv   rx   ry   rz   r   r{   r   r   r   r      s3        [' ' ' ' 'r   r   c                       e Zd Zed             Zej        j        d             Zej        j        d             Z	ej        j        d             Z
ej        j        d             Zej        j        d             ZdS )
TestABLinec                    t           j                            d           t          j        t           j                            ddd                    }t          j        |ddg          t           j                            ddd          z   }t          j        ||                                          }|| _	        || _
        || _        d S )N90  r   r"      r(            @)r,   r.   seedr5   r6   r4   r3   r7   r8   r   rC   modr;   r   rC   r   s       r   rE   zTestABLine.setup_class   s    
	uOBI,,Q,<<==F1r3i  29#3#3Ar#3#C#CCfQqkkoor   c                     t          | j                  }|j        d         }|                    | j        d d df         | j                   t          t          |           d S )N)model_resultsr   r'   )r   r   rL   scatterr   rC   r   r   rP   rQ   r   rZ   s       r   test_abline_modelzTestABLine.test_abline_model   sY    111Xa[


46!!!A#;'''c3r   c                     t          j                    }|                    d          }|                    | j        d d df         | j                   t          | j        |          }t          t          |           d S )No   r'   )r   rZ   )
rb   figureadd_subplotr   r   rC   r   r   r   r   r   s       r   test_abline_model_axzTestABLine.test_abline_model_ax   sl    jll__S!!


46!!!A#;'''R888c3r   c                 t    | j         }|j        \  }}t          ||          }t          t          |           d S )N)	interceptslope)r   paramsr   r   r   )rP   rQ   r   r   r   r   s         r   test_abline_abzTestABLine.test_abline_ab   s=    h:	5IU;;;c3r   c                    | j         }|j        \  }}t          j                    }|                    d          }|                    | j        d d df         | j                   t          |||          }t          t          |           d S )Nr   r'   r   r   rZ   )r   r   rb   r   r   r   r   rC   r   r   r   )rP   rQ   r   r   r   r   rZ   s          r   test_abline_ab_axzTestABLine.test_abline_ab_ax   s    h:	5jll__S!!


46!!!A#;'''IUrBBBc3r   c                    | j         }|j        \  }}t          j                    }|                    d          }|                    | j        d d df         | j                   t          |||           t          |d|z  |           |	                                }|
                    d                                           t          t          |           d S )Nr   r'   r   r%   r   )r   r   rb   r   r   r   r   rC   r   rM   popremover   r   )rP   rQ   r   r   r   r   rZ   liness           r   test_abline_removezTestABLine.test_abline_remove   s    h:	5jll__S!!


46!!!A#;'''iu<<<<iqw2>>>>		!c3r   N)rt   ru   rv   rw   rE   rx   ry   rz   r   r   r   r   r   r{   r   r   r   r      s          [ [      [      [      [      [
  
  
  
  
 r   r   c                   $    e Zd Zed             ZdS )TestABLinePandasc                    t           j                            d           t          j        t           j                            ddd                    }t          j        |ddg          t           j                            ddd          z   }|| _        || _        t          |dd	g
          }t          |d          }t          j        ||                                          }|| _        d S )Nr   r   r"   r   r(   r   r   r   someXr   r   r   )r,   r.   r   r5   r6   r4   r3   r   rC   r   r   r7   r8   r   r   s       r   rE   zTestABLinePandas.setup_class   s    
	uOBI,,Q,<<==F1r3i  29#3#3Ar#3#C#CCa'7!344419%%%fQqkkoor   N)rt   ru   rv   rw   rE   r{   r   r   r   r      s-        	 	 [	 	 	r   r   c                   b    e Zd Zej        j        d             Zej        j        d             ZdS )TestAddedVariablePlotc                 (   t           j                            d           d}d}t           j                            ||f          }d|d d df         z   d|d d df         d	z  z  z   }|t           j                            |          z   }t	          j        ||          }|                                }t          |d          }	|	                                d         }
|
	                    d
           t          t          |	            |             d S )Nv  r    r$   r(      r   皙?r'   r%   zAdded variable plot (OLS))r,   r.   r   r4   r5   r7   r8   r   get_axes	set_titler   r   )rP   rQ   nprI   lin_predrK   rH   resultsr   rZ   s              r   test_added_variable_olsz-TestAddedVariablePlot.test_added_variable_ols   s    
	tyaV,,tAAAqDz>C$qqq!t*a-$7729+++333ud##))++!'1--\\^^A
0111c3r   c           
         t           j                            d           d}d}t           j                            ||f          }d|d d df         z   d|d d df         d	z  z  z   }t          j        |          }t           j                            |          }t          j        ||t          j        	                                
          }|
                                }	dD ]}
dD ]}dD ]}ddg|         }dD ]}|dk    rt          |	|
||          }d}n|	                    |
||          }d}|                                d         }t          |           |                    g d           g d|
         }|dz  }||dz   z  }||dz   z  }|d|z  z  }|                    |           t!          t"          |            |             Ԍd S )Nr   r    r$   r(   r   r   r   r'   r%   family)r   r'   r%   )FT)resid_devianceresid_response
UnweightedWeightedr   r'   )use_glm_weights
resid_typezAdded variable plotz&Added variable plot (called as method))皙?r   皙?gffffff?)Linear effect, slope=1Quadratic effectz	No effect
Poisson regression

zUsing '%s' residuals)r,   r.   r   r4   exppoissonr5   GLMfamiliesPoissonr8   r   r   r	   set_positionr   r   r   )rP   rQ   r   r   rI   r   expvalrK   rH   r   	focus_colr   r   
weight_strjr   tirZ   
effect_strs                      r   test_added_variable_poissonz1TestAddedVariablePlot.test_added_variable_poisson   sB    		tyaV,,tAAAqDz>C$qqq!t*a-$77!!	!!&))ud2;+>+>+@+@AAA))++  	( 	(I#. ( ("D ( (J".
!;O!LJ " ( (66"5gyFUAK#M #M #MC "7BB")"="=iN]IS #> #U #UC "JB \\^^A."2(<(<(<===&G &G &GGP&R
66j4//j4//4zAAR(((%c3///%1(	((	( 	(r   N)rt   ru   rv   rx   ry   rz   r   r   r{   r   r   r   r      sT        [    [,( ,( ,( ,( ,(r   r   c                   8    e Zd Zej        j        d             ZdS )TestPartialResidualPlotc                 T   t           j                            d           d}d}t           j                            ||f          }d|d d df<   d|d d df         z   d|d d d	f         d	z  z  z   }t          j        |          }t           j                            |          }t          j        ||t          j        	                                
          }|
                                }	dD ]}
dD ]}|dk    rt          |	|
          }n|	                    |
          }|                                d         }t          |           |                    g d           g d|
         }d}|dk    r|dz  }|                    |dz   |z              t!          t"          |           d S )Nr   r    r$   r(   r'   r   r   r   r%   r   r'   r%   r   r   r   r   gp=
ף?	Interceptr   r   zPartial residual plot (called as method)r   )r,   r.   r   r4   r   r   r5   r   r   r   r8   r   r   r	   r   r   r   r   rP   rQ   r   r   rI   r   r   rK   rH   r   r   r   r   rZ   r   r   s                   r   test_partial_residual_poissonz5TestPartialResidualPlot.test_partial_residual_poisson+  s    		tyaV,,QQQT
tAAAqDz>CQQQT
A$55!!	!!&))ud2;+>+>+@+@AAA))++ 	( 	(I ( (660)DDCC!88CCC\\^^A&2 5 5 56662 2 22;=
,66//BR"::'( ) ) )c3''''(	( 	(r   N)rt   ru   rv   rx   ry   rz   r   r{   r   r   r   r   )  3        [( ( ( ( (r   r   c                   8    e Zd Zej        j        d             ZdS )TestCERESPlotc                 T   t           j                            d           d}d}t           j                            ||f          }d|d d df<   d|d d df         z   d|d d d	f         d	z  z  z   }t          j        |          }t           j                            |          }t          j        ||t          j        	                                
          }|
                                }	dD ]}
dD ]}|dk    rt          |	|
          }n|	                    |
          }|                                d         }t          |           |                    g d           g d|
         }d}|dk    r|dz  }|                    |dz   |z              t!          t"          |           d S )Nr   r    r$   r(   r'   r   r   r   r%   r   r   r   r   r   z
CERES plotr   r   )r,   r.   r   r4   r   r   r5   r   r   r   r8   r   r   r	   r   r   r   r   r   s                   r   test_ceres_poissonz TestCERESPlot.test_ceres_poissonO  s    		tyaV,,QQQT
tAAAqDz>CQQQT
A$55!!	!!&))ud2;+>+>+@+@AAA))++ 	( 	(I ( (66.w	BBCC!66yAAC\\^^A&2 5 5 56662 2 22;=
!66//BR"::'( ) ) )c3''''(	( 	(r   N)rt   ru   rv   rx   ry   rz   r   r{   r   r   r   r   M  r   r   r   c            	         t           j        d             } t          t          t           j                            d          t           j                            d          t           j                            d                              }t
          j                            dddgd|d	
           t
          j                            dddgd|           d S )Nc                 :    | dk    rt          j        |           ndS )Nr   )r,   log10)r@   s    r   lgz(test_partregress_formula_env.<locals>.lgv  s    !eerx{{{*r   
   r(   )abcr   zlg(b)r   Fr'   )
obs_labelsr   eval_env)r   r   )r,   	vectorizer   dictr.   r5   graphicsplot_partregress)r   dfs     r   test_partregress_formula_envr   r  s     \+ + \+ 
iB''iB''iB''	 	 	

 

B K  WseB ! D D D K  WseB ! 8 8 8 8 8r   ).numpyr,   numpy.testingr   r   r   pandasr   r   rx   statsmodels.apiapir5   $statsmodels.graphics.regressionplotsr   r	   r
   r   r   r   r   r   r   r   r   r   matplotlib.pyplotpyplotrb   ImportErrorr   matplotlib.backends.backend_pdfr   r   r   r   r}   r   r   r   r   r   r   ry   rz   r   r{   r   r   <module>r     s       H H H H H H H H H H $ $ $ $ $ $ $ $                                  	####### 	 	 	D	 
 888888
(-
.
.CC
C  
T8 T8 T8 T8 T8 T8 T8 T8n    X   &' ' ' ' 'n ' ' '7  7  7  7  7  7  7  7 t    z   @( @( @( @( @( @( @( @(F"( "( "( "( "( "( "( "(H"( "( "( "( "( "( "( "(J 8 8 8 8 8s   A AA