
    M/Ph2                         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 n# e$ r Y nw xY wd Z G d d          ZdS )    )predict_functionalNFc                       fdS )Nc                 4    t          j        | dz            S )Nd   )np
percentile)xqs    q/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/sandbox/tests/test_predict_functional.py<lambda>zpctl.<locals>.<lambda>   s    bmAsAv..      )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d
S )TestPredFuncc                 D    t           rddlm}  |d          | _        d S d S )Nr   )PdfPageszpredict_functional.pdf)
pdf_outputmatplotlib.backends.backend_pdfr   pdf)clsr   s     r   setup_classzTestPredFunc.setup_class   s<     	9@@@@@@h788CGGG	9 	9r   c                 J    t           r| j                                         d S d S N)r   r   close)r   s    r   teardown_classzTestPredFunc.teardown_class   s'     	GMMOOOOO	 	r   c                 L    t           r| j                            |           d S d S r   )r   r   savefig)selffigs     r   close_or_savezTestPredFunc.close_or_save    s0     	"HS!!!!!	" 	"r   c           	         t           j                            d           d}t           j                            |          }t           j                            |          }t           j                            |          }t           j                            dd|          }t          j        d |D                       }t           j                            |          }d|dz  z  |d	k    z   d
|d	k    z  |dz  z  z   |z   t           j                            |          z   }t          j        ||||||d          }	d}
t          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           |                                \  }}t          j        ||d           t          j        dd           t          j        dd           t          j        d           |                     |           t          j                     t          j                    }t          j        g d          }t          j        ||dd           t          j        ||d d df         |d d df         d            t          j        ||dd           t          j        ||d d df         |d d df         d            |                                \  }}t          j        ||d           t          j        dd           t          j        dd           t          j        d           |                     |           d S )!N    sizer      c                     g | ]
}d |         S )ABCDEr   .0is     r   
<listcomp>z-TestPredFunc.test_formula.<locals>.<listcomp>-   s    000000r   g333333?   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      ?)r2   r4   r6   r5   r3   Cr0   r0   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nr2   r3   r4   r5   r6   r1   dffmlmodelresult	summariesvaluespr1ci1fvals1pr2ci2fvals2r    axhalbs                            r   test_formulazTestPredFunc.test_formula$   s    		sY1%%Y1%%Y1%%Yq!!,,Z00R00011Y1%%AIs#c29ob!e&;;b@29CSCSYZCSC[C[[\2RrQSTTUU_##Cb#117$t**BGDD	-fdIvNNS&-fdIvNNS&			jllX***++c0000c0000--//Bb".1111
#"----
=r****	+,,,3			jllX***++c0000QQQTC1IVDDDDc0000QQQTC1IVDDDD--//Bb".1111
#"----
=r****	+,,,3r   c                    t           j                            d           d}t           j                            |          }t           j                            |          }t           j                            |          }|d|z  z   |z   ||z  z
  ||z  z   t           j                            |          z   }t	          j        ||||d          }d}t          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           |                                \  }}t          j        ||d          }|                    d           t          j        dd           t          j        dd           t          j        d           |                     |           d S )Nr#      r%   r.   r1   r2   r3   r4   z y ~ x1 + x2 + x3 + x1*x2 + x2*x3r7   rG   r3   r4   r   r2   schefferi   values2	ci_methodr0   r0   gq=
ףp?r<   r=   Estimateorange   r?   rJ   lwTruthlimerH   rI   r@   rA   FrC   rD   zMean contrastzLinear model contrast)r   rK   rL   rM   rP   rQ   rR   rS   rT   rU   r   rW   rX   rY   rZ   r[   ra   r\   r]   
draw_framer^   r_   r`   r!   )r   rb   rc   r2   r3   r4   r1   rd   re   rf   rg   ri   rz   prcbfvalsr    rp   rq   rr   legs                        r   test_lm_contrastzTestPredFunc.test_lm_contrastY   sZ    		sY1%%Y1%%Y1%%2INRU"RU*RY-=-=1-=-E-EE\2R@@AA0##Cb#11##!$$*643:iQ Q QB 				jllX+++,,CzaHHHHE	3gVJJJJ111a4"QQQT(&AAAA--//BmB777u
#"----
?,,,,	)***3r   c                 T   t           j                            d           d}t           j                            |          }t           j                            |          }t           j                            |          }dd|z  z   d|z  z   d|z  z   d|z  |z  z
  }t           j                            t          j        |          t          |                    }t          j        ||||d          }d}	t          j
                            |	|t          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           |                                \  }}t!          j        ||d          }|                    d           t!          j        dd           t!          j        dd           t!          j        d            |                     |           d S )!Nr#   2   r%   r'   r0   rv   zy ~ x1 + x2 + x3 + x1*x2)r8   familyrG   rw   r   r2   simultaneousry   r|   r=   r}   r~   r   r   g?r   r   rH   rI   r@   rA   FrC   rD   zLinear predictor contrastzPoisson regression contrast)r   rK   rL   rM   poissonexplenrP   rQ   rR   GLMrT   familiesPoissonrU   r   rW   rX   rY   rZ   r[   ra   r\   r]   r   r^   r_   r`   r!   )r   rb   rc   r2   r3   r4   mnr1   rd   re   rf   rg   ri   rz   r   r   r   r    rp   rq   rr   r   s                         r   test_glm_formula_contrastz&TestPredFunc.test_glm_formula_contrast|   s    		sY1%%Y1%%Y1%%RZ#b& 3r6)CF2I5IbfRjjs2ww77\2R@@AA(##Cb9L9L9N9N#OO##!$$*643:nV V VB 				jllX+++,,CzaHHHHc%iG6aPPPP111a4"QQQT(&AAAA--//BmB777u
#"----
.R8888	/0003r   c                 D   t           j                            d           d}t           j                            |df          }d|d d df<   dD ]O}|dk    rVt           j                            d	|          }t
          j                                        }d	}t          j        d	          }n|d
k    rJdt           j        	                    |          dk     z  }t
          j        
                                }d}d}nH|dk    rBt           j                            |          }t
          j                                        }d}d}t          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           |                                \  }}t!          j        ||d!"          }|                    d#           t!          j        d$d%           |rt!          j        d&d%           nt!          j        d'd%           t!          j        d(|                                z             |                     |           +Qd S ))Ni  r   r   r%   rG   r   )r   binomialgaussianr      r         ?r   )r   FT)constr3   r4   r2   )ri   rh   linearr   )ri   rh   r{   r   )r0   r0   g(\?r<   r=   blackr}   )rJ   r?   purpler   bluezPointwise CBrI   greenzSimultaneous CBr@   rA   FrC   rD   zLinear predictorrE   z%s family prediction)r   rK   rL   rM   r   rR   r   r   loguniformBinomialGaussianr   rU   rV   r   rW   rX   rY   rZ   r[   onesr   r\   r]   r   r^   r_   r`   
capitalizer!   )r   rb   rc   r	   fam_namer1   fam	true_meantrue_lprf   rg   r   trueri   rh   pred1cb1rl   pred2cb2ro   r    rp   rq   rr   r   s                             r   test_scbzTestPredFunc.test_scb   s    		sI1Q%((!!!Q$9 6	( 6	(H9$$I%%bq%11k))++	&**Z''***22S89k**,,	Z''I$$!$,,k**,,	F1a,,,EYY[[F &  (  ("(7wwi#$A..!27O	%7#)Yv&O &O &O"sF%7#)Y&4V&E &E &E"sF 			jllX333447*MMMME

(;(;!;S&( ( ( (QQQT&OOOOQQQT&9999QQQT'ARSSSSQQQT'::::5577BmB???u%%%
+"5555 7J1;;;;;J}26666	083F3F3H3HHIII""3''''A (-6	( 6	(r   c                 :	   t           j                            d           d}t           j                            |          }t           j                            |          }t           j                            dd|          }t          j        d |D                       }dd|d	z  z  z   |d
k    z   }ddt          j        |           z   z  }dt           j                            |          |k     z  }t          j	        ||||d          }	d}
t          j                            |
t          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   }|s6d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           |                                \  }}t%          j        ||d           t%          j        dd           |rt%          j        d d           nt%          j        d!d           t%          j        d"           |                     |           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%&           |                                \  }}t%          j        ||d           t%          j        dd           |rt%          j        d d           nt%          j        d!d           t%          j        d"           |                     |           (d S )(Nr#   r$   r%   r      c                     g | ]
}d |         S )ABCr   r*   s     r   r-   z1TestPredFunc.test_glm_formula.<locals>.<listcomp>   s    ...aq...r   r   r.   r/   rG   rv   zy ~ x1 + I(x1**2) + x2 + C(x3))r   r8   r3   r   r4   r2   )r   r:   r;   r=   zx3=Br>   zx3=Czx3=B (exact)zx3=C (exact)r@   rA   rC   rD   zFitted linear predictorzFitted probabilityzBinomial GLM predictionr~   )r?   rJ   rH   rI   r   )r   rK   rL   rM   rN   rO   r   r   rP   rQ   rR   r   rT   r   r   rU   rV   r   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   r!   ra   )r   rb   rc   r2   r3   r4   lin_predprobr1   rd   re   rf   rg   rh   r   ri   rj   rk   rl   rm   rn   ro   exact1exact2r    rp   rq   rr   s                               r   test_glm_formulazTestPredFunc.test_glm_formula   s    		sY1%%Y1%%Yq!!,,Z..2...//BE	>R3Y/Ay)))*"""**T12\2R@@AA.##C0D0D0F0FR#PP27O	! /	$ /	$FC[F1&$	6Z`aaaCfC[F1&$	6Z`aaaCf#fai-'!+F#fai-'F 3a"&&//12a"&&//12GIII*,,C...//BHVS#V4444HVS#V4444HVVS????HVVS????1133FBM"bn5555J'b1111 :
42>>>>>
/b9999I/000s###GIII*,,C...//BHVS#V8DDDDVSAYAAAqD	HHHHHVS#V6BBBBVSAYAAAqD	HHHH1133FBM"bn5555J'b1111 :
42>>>>>
/b9999I/000s####_/	$ /	$r   c           	         t           j                            d           d}t           j                            |          }t           j                            |          }t           j                            |          }||z
  t           j                            |          z   }t          j        |||f          j        }t          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           |                                \  }}t          j        ||d          }|                    d           t          j        dd           t          j        dd           t          j        d           |                     |           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           |                                \  }}t          j        ||d           t          j        dd           t          j        dd           t          j        d           |                     |           d S )Ni"  ru   r%   r4   r9   r3   rG   r2   r   r;   r=   zx2=1r   g333333?r~   )r?   r   alpharJ   zx2=-1r   r@   rA   FrC   rD   rE   rF   r   rH   rI   )r   rK   rL   rM   vstackTrR   rS   rU   r   r   rW   rX   rY   rZ   r[   r\   r]   r   r^   r_   r`   r!   ra   )r   rb   rc   r2   r3   r4   r1   exogrf   rg   rh   ri   rj   rk   rl   rm   rn   ro   r    rp   rq   rr   r   s                          r   test_noformula_predictionz&TestPredFunc.test_noformula_prediction%  sW    		tY1%%Y1%%Y1%%Gbi&&A&...y"b"&&(q$4::&	-fdIvNNS&-fdIvNNS&			jllX***++cASQQQQcQcPPPP--//BmB777u
#"----
=r****	+,,,3			jllX***++cASQQQQQQQTC1IVDDDDcASOOOOQQQTC1IVDDDD--//Bb".1111
#"----
=r****	+,,,3r   N)__name__
__module____qualname__classmethodr   r   r!   pytestmark
matplotlibrs   r   r   r   r   r   r   r   r   r   r      s%       9 9 [9
   [" " " [2  2  2 h [        D [!  !  ! F [=( =( =(~ [B$ B$ B$H [.  .  .  .  . r   r   )&statsmodels.sandbox.predict_functionalr   numpyr   pandasrP   r   statsmodels.apiapirR   r   matplotlib.pyplotpyplotrW   ImportErrorr   r   r   r   r   <module>r      s    E E E E E E                
	####### 	 	 	D	/ / /A  A  A  A  A  A  A  A  A  A s   # ++