
    !g                         d Z ddlmZ ddlZddlZddlm	Z	m
Z
 ddlmZ ddlmZ  G d d      Z G d	 d
e      Z G d de      Zy)z
Tests for Results.predict
    )testingN)assert_allcloseassert_equal)OLS)GLMc                       e Zd Zd Zd Zd Zy)CheckPredictReturnsc           	         | j                   }| j                  }|j                  j                  ddd   }|j	                  |j                  ddd         }t        j                  |j                  |j                         t        |j                  |j                  d       t        t        |j                  |j                  ddd   j                  j                              }|j	                  |      }t        |j                  t        j                   t#        |                   t        |j                  |j                  d       y )N   
      vIh%<=rtol)resdatafittedvaluesilocpredictpdtassert_index_equalindexr   valuesdictzipcolumnsTr   nparangelen)selfr   r   fittedpredxds         `/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/base/tests/test_predict.pytest_2dzCheckPredictReturns.test_2d   s    hhyy!!&&qAv.{{499Qr!V,-tzz6<<8V]]? #dllDIIa1f$5$<$<$>$>?@{{2TZZ3t9!56V]]?    c                    | j                   }| j                  }|j                  |j                  d d       }t	        j
                  |j                  |j                  d d j                         t        j                  |j                        }t        |j                  |d   d       |j                  j                         }|j                         }|j                  |j                         j                        }t        |j                  t        j                   d             t        ||d       |j                  |j                               }t        |j                  t        j                   d             t        |j                  |d       |j                  |j                         j#                               }t        |j                  t        j                   d             t        |j                  |d       y )Nr   r   r   r   )r   r   r   r   r   r   r   r   asarrayr   r   r   meanto_framer   r   r   to_dict)r!   r   r   r#   fvfittedmxmeans          r%   test_1dzCheckPredictReturns.test_1d!   sU   hhyy{{499Ra=)tzz499Ra=+>+>?ZZ(()RU7""'')		{{5>>+--.TZZ1.gE2 {{499;'TZZ1.W59 {{499;..01TZZ1.W59r'   c                    | j                   }| j                  }|j                  j                  ddd   }|j	                  |j
                  j                  ddd   d      }t        ||j                  d       t        j                  |j
                  j                  ddd   |j                  ddd   |j
                  j                        }|j	                  |      }t        j                  |j                  |j                         t        |j                  |j                  d       |j	                  |j
                  j                  d   d      }t        ||j                  d	   d       |j	                  |j                  d	         }t        j                  |j                  |j                  d d        t        |j                  d	   |j                  d	   d       y )
Nr   r   r   F)	transformr   r   )r   r   r   )r   r   r   r   r   modelexogr   r   pd	DataFramer   
exog_namesr   r   )r!   r   r   r"   r#   xs         r%   test_nopatsyz CheckPredictReturns.test_nopatsy<   sp   hhyy!!&&qAv. {{399>>!Bq&1U{Cfmm%8 LL"Q/!%AbF!3!$!5!57 {{1~tzz6<<8V]]? {{399>>!,{>fmmA.U; {{166!9%tzz6<<+;<Aa(8uEr'   N)__name__
__module____qualname__r&   r0   r9    r'   r%   r	   r	      s    @ :6Fr'   r	   c                       e Zd Zed        Zy)TestPredictOLSc                 8   d}t         j                  j                  d       t         j                  j                  |d      }|j	                  d      t         j                  j                  |      z   }t        |      D cg c]  }d|z  	 }}t        j                  t        j                  t        j                  ||f      d      dj                         |      | _        t        j                  d	| j                  
      j                         | _        y c c}w N   i    r   zobs%02d   zy var1 var2 var3)r   r   zy ~ var1 + var2)r   )r   randomseedrandnsumranger5   r6   roundcolumn_stacksplitr   r   from_formulafitr   clsnobsr8   yir   s         r%   setup_classzTestPredictOLS.setup_classY       
		vIIOOD!$EE!Hryyt,,(-d41Q44<<!Q)@! D(:(@(@(B&+- ""#4388DHHJ 5    DN)r:   r;   r<   classmethodrT   r=   r'   r%   r?   r?   W   s    K Kr'   r?   c                   "    e Zd Zed        Zd Zy)TestPredictGLMc                 8   d}t         j                  j                  d       t         j                  j                  |d      }|j	                  d      t         j                  j                  |      z   }t        |      D cg c]  }d|z  	 }}t        j                  t        j                  t        j                  ||f      d      dj                         |      | _        t        j                  d	| j                  
      j                         | _        y c c}w rA   )r   rE   rF   rG   rH   rI   r5   r6   rJ   rK   rL   r   r   rM   rN   r   rO   s         r%   rT   zTestPredictGLM.setup_classj   rU   rV   c           	         | j                   }| j                  }|j                  j                  ddd   }t	        j
                  t        |            }||z   }|j                  |j                  ddd   |      }t        j                  |j                  |j                         t        |j                  |j                  d       t        t        |j                  |j                  ddd   j                  j                               }|j                  ||      }t#        |j                  t	        j
                  t        |                   t        |j                  |j                  d       |j                  ddd   j%                         }||d<   |j                  ||d         }t        j                  |j                  |j                         t        |j                  |j                  d       |j                  ddd   j%                         }||d<   t        j&                  |j                  d<   |j                  ||d         }t        j                  |j                  |j                         |j%                         }t        j&                  |j                  d	<   t        |j                  |j                  d       y )
Nr   r   r   )offsetr   r   r\   )r   r   r   )r   r   r   r   r   r   r    r   r   r   r   r   r   r   r   r   r   r   copynan)	r!   r   r   r"   r\   r#   r$   data2
fitted_nans	            r%   test_predict_offsetz"TestPredictGLM.test_predict_offsetx   s   hhyy!!&&qAv.3v;'&{{499Qr!V,V{<tzz6<<8V]]? #dllDIIa1f$5$<$<$>$>?@{{2f{-TZZ3t9!56V]]? 		!Bq&!&&( h{{5x{9tzz6<<8V]]? 		!Bq&!&&( h66

4{{5x{9tzz6<<8[[]
VV
Z%6%6UCr'   N)r:   r;   r<   rW   rT   ra   r=   r'   r%   rY   rY   h   s    K K!Dr'   rY   )__doc__statsmodels.compat.pandasr   r   numpyr   pandasr5   numpy.testingr   r   #statsmodels.regression.linear_modelr   +statsmodels.genmod.generalized_linear_modelr   r	   r?   rY   r=   r'   r%   <module>ri      sK    5   7 3 ;EF EFPK( K"1D( 1Dr'   