
    'YHh2                     v    d dl mZ d dlZd dlZd dlZd dlmZ	 dZ
	 d dlmZ d Z G d d      Zy# e$ r Y w xY w)    )predict_functionalNFc                       fdS )Nc                 6    t        j                  | dz        S )Nd   )np
percentile)xqs    j/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/sandbox/tests/test_predict_functional.py<lambda>zpctl.<locals>.<lambda>   s    bmmAsAv.      )r
   s   `r   pctlr      s	    ..r   c                      e Zd Zed        Zed        Z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ej                  j                  d	        Zy
)TestPredFuncc                 8    t         rddlm}  |d      | _        y y )Nr   )PdfPageszpredict_functional.pdf)
pdf_outputmatplotlib.backends.backend_pdfr   pdf)clsr   s     r   setup_classzTestPredFunc.setup_class   s    @78CG r   c                 F    t         r| j                  j                          y y N)r   r   close)r   s    r   teardown_classzTestPredFunc.teardown_class   s    GGMMO r   c                 H    t         r| j                  j                  |       y y r   )r   r   savefig)selffigs     r   close_or_savezTestPredFunc.close_or_save    s    HHS! r   c           	      
   t         j                  j                  d       d}t         j                  j                  |      }t         j                  j                  |      }t         j                  j                  |      }t         j                  j	                  dd|      }t        j
                  |D cg c]  }d|   	 c}      }t         j                  j                  |      }d|dz  z  |d	k(  z   d
|d	k(  z  |dz  z  z   |z   t         j                  j                  |      z   }	t        j                  |	|||||d      }
d}t        j                  j                  ||
      }|j                         }t         j                  t        d      t         j                  d}dd	i}t        |d||      \  }}}ddi}t        |d||      \  }}}t        j                           t        j"                         }t        j$                  g d      }t        j&                  ||dd       t        j&                  ||dd       |j)                         \  }}t        j*                  ||d       t        j,                  dd       t        j.                  dd       t        j0                  d       | j3                  |       t        j                           t        j"                         }t        j$                  g d      }t        j&                  ||dd       t        j4                  ||d d df   |d d df   d        t        j&                  ||dd       t        j4                  ||d d df   |d d df   d        |j)                         \  }}t        j*                  ||d       t        j,                  dd       t        j.                  dd       t        j0                  d       | j3                  |       y c c}w )!N    sizer      ABCDEg333333?   B皙?)yx1x2x3x4x5zOy ~ x1 + bs(x2, df=4) + x3 + x2*x3 + I(x1**2) + C(x4) + C(x4)*bs(x2, df=4) + x5data      ?)r-   r/   r1   r0   r.   Cr+   r+   gffffff?皙?-zx4=Blabelzx4=Ccenter rightlocFocus variable   Fitted meanLinear model prediction   greycolor)r   randomseednormalrandintasarraypd	DataFramesmOLSfrom_formulafitmeanr   r   pltclffigureaxesplotget_legend_handles_labels	figlegendxlabelylabeltitler!   fill_between)r   close_figuresnr-   r.   r/   r0   ir1   r,   dffmlmodelresult	summariesvaluespr1ci1fvals1pr2ci2fvals2r    axhalbs                             r   test_formulazTestPredFunc.test_formula$   s#    			sYY1%YY1%YY1%YYq!!,ZZR001YY1%AIs#c29ob!e&;;b@299CSCSYZCSC[[\\2RrQSTU_##Cb#177$t*BGGD	-fdIvNS&-fdIvNS&	jjlXX*+c0c0--/Bb".1

#"-

=r*		+,3	jjlXX*+c0QTC1IVDc0QTC1IVD--/Bb".1

#"-

=r*		+,3U 1s   7P c                    t         j                  j                  d       d}t         j                  j                  |      }t         j                  j                  |      }t         j                  j                  |      }|d|z  z   |z   ||z  z
  ||z  z   t         j                  j                  |      z   }t	        j
                  ||||d      }d}t        j                  j                  ||      }	|	j                         }
ddd	}d
d
d	}t        |
d||d      \  }}}t        j                          t        j                         }t        j                  g d      }t        j                  ||dddd       t        j                  |d|z
  dddd       t        j                   ||d d d
f   |d d df   d       |j#                         \  }}t        j$                  ||d      }|j'                  d       t        j(                  dd       t        j*                  dd       t        j,                  d       | j/                  |       y )Nr#      r%   r)   r,   r-   r.   r/   z y ~ x1 + x2 + x3 + x1*x2 + x2*x3r2   rB   r.   r/   r   r-   scheffere   values2	ci_methodr+   r+   gq=
ףp?r7   r8   Estimateorange   r:   rE   lwTruthlimerC   rD   r;   r<   Fr>   r?   zMean contrastzLinear model contrast)r   rF   rG   rH   rK   rL   rM   rN   rO   rP   r   rR   rS   rT   rU   rV   r\   rW   rX   
draw_framerY   rZ   r[   r!   )r   r]   r^   r-   r.   r/   r,   r`   ra   rb   rc   re   rv   prcbfvalsr    rl   rm   rn   legs                        r   test_lm_contrastzTestPredFunc.test_lm_contrastY   s    			sYY1%YY1%YY1%2INRU"RU*RYY-=-=1-=-EE\\2R@A0##Cb#1#!$*643:iQB 		jjlXX+,CzaHE	3gVJ1a4"QT(&A--/BmmB7u

#"-

?,		)*3r   c                 .   t         j                  j                  d       d}t         j                  j                  |      }t         j                  j                  |      }t         j                  j                  |      }dd|z  z   d|z  z   d|z  z   d|z  |z  z
  }t         j                  j	                  t        j
                  |      t        |            }t        j                  ||||d      }d}	t        j                  j                  |	|t        j                  j                               }
|
j                         }d	d	d
}ddd
}t        |d||d      \  }}}t!        j"                          t!        j$                         }t!        j&                  g d      }t!        j(                  ||dddd       t!        j(                  |dd|z  z
  dddd       t!        j*                  ||d d df   |d d d	f   d       |j-                         \  }}t!        j.                  ||d      }|j1                  d       t!        j2                  dd       t!        j4                  dd       t!        j6                  d        | j9                  |       y )!Nr#   2   r%   r'   r+   rr   zy ~ x1 + x2 + x3 + x1*x2)r3   familyrB   rs   r   r-   simultaneousru   rx   r8   ry   rz   r{   r|   g?r~   r   rC   rD   r;   r<   Fr>   r?   zLinear predictor contrastzPoisson regression contrast)r   rF   rG   rH   poissonexplenrK   rL   rM   GLMrO   familiesPoissonrP   r   rR   rS   rT   rU   rV   r\   rW   rX   r   rY   rZ   r[   r!   )r   r]   r^   r-   r.   r/   mnr,   r`   ra   rb   rc   re   rv   r   r   r   r    rl   rm   rn   r   s                         r   test_glm_formula_contrastz&TestPredFunc.test_glm_formula_contrast|   s    			sYY1%YY1%YY1%RZ#b& 3r6)CF2I5IIbffRjs2w7\\2R@A(##Cb9L9L9N#O#!$*643:nVB 		jjlXX+,CzaHc%iG6aP1a4"QT(&A--/BmmB7u

#"-

.R8		/03r   c                    t         j                  j                  d       d}t         j                  j                  |df      }d|d d df<   dD ]6  }|dk(  rWt         j                  j	                  d	|      }t
        j                  j                         }d	}t        j                  d	      }n|d
k(  rIdt         j                  j                  |      dk  z  }t
        j                  j                         }d}d}nG|dk(  rBt         j                  j                  |      }t
        j                  j                         }d}d}t        j                  |      }	|	j                         }
dD ]  }|rn}ddd}dt         j                  i}t        |
d|||      \  }}}t        |
d||d|      \  }}}t!        j"                          t!        j$                         }t!        j&                  g d      }t!        j(                  ||ddd       t!        j(                  ||t        j*                  t-        |            z  ddd       t!        j(                  ||d d df   dd       t!        j(                  ||d d df   d       t!        j(                  ||d d df   dd        t!        j(                  ||d d df   d       |j/                         \  }}t!        j0                  ||d!"      }|j3                  d#       t!        j4                  d$d%       |rt!        j6                  d&d%       nt!        j6                  d'd%       t!        j8                  d(|j;                         z         | j=                  |        9 y ))Ni  r   r{   r%   rB   r   )r   binomialgaussianr      r         ?r   )r   FT)constr.   r/   r-   )re   rd   linearr   )re   rd   rw   r   )r+   r+   g(\?r7   r8   blackry   )rE   r:   purpler~   bluezPointwise CBrD   greenzSimultaneous CBr;   r<   Fr>   r?   zLinear predictorr@   z%s family prediction)r   rF   rG   rH   r   rM   r   r   loguniformBinomialGaussianr   rP   rQ   r   rR   rS   rT   rU   rV   onesr   rW   rX   r   rY   rZ   r[   
capitalizer!   )r   r]   r^   r	   fam_namer,   fam	true_meantrue_lprb   rc   r   truere   rd   pred1cb1rh   pred2cb2rk   r    rl   rm   rn   r   s                             r   test_scbzTestPredFunc.test_scb   s    			sII1Q%(!Q$9 6	(H9$II%%bq%1kk))+	&&*Z'***2S89kk**,	Z'II$$!$,kk**,	FF1a,EYY[F &  ("(wi#$A.!277O	%7#)Yv&O"sF%7#)Y&4V&E"sF 	jjlXX347*ME
(;!;S&(QT&OQT&9QT'ARSQT':557BmmB?u%

+"5JJ1;JJ}26		083F3F3HHI""3'A (-6	(r   c                 B	   t         j                  j                  d       d}t         j                  j                  |      }t         j                  j                  |      }t         j                  j	                  dd|      }t        j
                  |D cg c]  }d|   	 c}      }dd|d	z  z  z   |d
k(  z   }ddt        j                  |       z   z  }dt         j                  j                  |      |k  z  }	t        j                  |	|||d      }
d}t        j                  j                  |t        j                  j                         |
      }|j                         }dt         j                   i}dD ]  }dd
i}t#        |d|||      \  }}}ddi}t#        |d|||      \  }}}dd|d	z  z  z   dz   }dd|d	z  z  z   }|s8ddt        j                  |       z   z  }ddt        j                  |       z   z  }t%        j&                          t%        j(                         }t%        j*                  g d      }t%        j,                  ||dd       t%        j,                  ||dd       t%        j,                  ||dd       t%        j,                  ||dd       |j/                         \  }}t%        j0                  ||d       t%        j2                  dd       |rt%        j4                  d d       nt%        j4                  d!d       t%        j6                  d"       | j9                  |       t%        j&                          t%        j(                         }t%        j*                  g d      }t%        j,                  ||ddd#$       t%        j:                  ||d d df   |d d df   d%&       t%        j,                  ||ddd'$       t%        j:                  ||d d df   |d d df   d%&       |j/                         \  }}t%        j0                  ||d       t%        j2                  dd       |rt%        j4                  d d       nt%        j4                  d!d       t%        j6                  d"       | j9                  |        y c c}w )(Nr#   r$   r%   r      ABCr   r)   r*   rB   rr   zy ~ x1 + I(x1**2) + x2 + C(x3))r   r3   r.   r   r/   r-   )r   r5   r6   r8   zx3=Br9   zx3=Czx3=B (exact)zx3=C (exact)r;   r<   r>   r?   zFitted linear predictorzFitted probabilityzBinomial GLM predictionrz   )r:   rE   rC   rD   r   )r   rF   rG   rH   rI   rJ   r   r   rK   rL   rM   r   rO   r   r   rP   rQ   r   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r!   r\   )r   r]   r^   r-   r.   r/   r_   lin_predprobr,   r`   ra   rb   rc   rd   r   re   rf   rg   rh   ri   rj   rk   exact1exact2r    rl   rm   rn   s                                r   test_glm_formulazTestPredFunc.test_glm_formula   s    			sYY1%YY1%YYq!!,ZZ2.aq./BE	>R3Y/Ay))*"""*T12\\2R@A.##C0D0D0FR#P277O	! /	$FC[F1&$	6Z`aCfC[F1&$	6Z`aCf#fai-'!+F#fai-'Fa"&&&/12a"&&&/12GGI**,C./BHHVS#V4HHVS#V4HHVVS?HHVVS?113FBMM"bn5JJ'b1

42>

/b9II/0s#GGI**,C./BHHVS#V8DVSAYAqD	HHHVS#V6BVSAYAqD	H113FBMM"bn5JJ'b1

42>

/b9II/0s#_/	$ /s   Rc           	         t         j                  j                  d       d}t         j                  j                  |      }t         j                  j                  |      }t         j                  j                  |      }||z
  t         j                  j                  |      z   }t        j                  |||f      j
                  }t        j                  ||      }|j                         }	dt        d      i}
ddi}t        |	d|
|      \  }}}dd	i}t        |	d|
|      \  }}}t        j                          t        j                         }t        j                  g d
      }t        j                  ||ddddd       t        j                  ||ddddd       |j!                         \  }}t        j"                  ||d      }|j%                  d       t        j&                  dd       t        j(                  dd       t        j*                  d       | j-                  |       t        j                          t        j                         }t        j                  g d
      }t        j                  ||ddddd       t        j.                  ||d d df   |d d df   d       t        j                  ||ddddd       t        j.                  ||d d df   |d d df   d       |j!                         \  }}t        j"                  ||d       t        j&                  dd       t        j(                  dd       t        j*                  d       | j-                  |       y )Ni"  rq   r%   r/   r4   r.   rB   r-   r   r6   r8   zx2=1r{   g333333?rz   )r:   r}   alpharE   zx2=-1r   r;   r<   Fr>   r?   r@   rA   r   rC   rD   )r   rF   rG   rH   vstackTrM   rN   rP   r   r   rR   rS   rT   rU   rV   rW   rX   r   rY   rZ   r[   r!   r\   )r   r]   r^   r-   r.   r/   r,   exogrb   rc   rd   re   rf   rg   rh   ri   rj   rk   r    rl   rm   rn   r   s                          r   test_noformula_predictionz&TestPredFunc.test_noformula_prediction%  s    			tYY1%YY1%YY1%Gbii&&A&..yy"b"&((q$4:&	-fdIvNS&-fdIvNS&	jjlXX*+cASQcQcP--/BmmB7u

#"-

=r*		+,3	jjlXX*+cASQQTC1IVDcASOQTC1IVD--/Bb".1

#"-

=r*		+,3r   N)__name__
__module____qualname__classmethodr   r   r!   pytestmark
matplotlibro   r   r   r   r   r   r   r   r   r   r      s    9 9
  " [[2  2 h [[     D [[!  ! F [[=( =(~ [[B$ B$H [[.  . r   r   )&statsmodels.sandbox.predict_functionalr   numpyr   pandasrK   r   statsmodels.apiapirM   r   matplotlib.pyplotpyplotrR   ImportErrorr   r   r   r   r   <module>r      sH    E     
	#/A  A   		s   0 88