
    M/Ph                     p    d dl Zd dlZd dlZd dlmZmZmZm	Z	 d dl
mZmZ d dlmZ d Zd Zd Zd Zd	 ZdS )
    N)SlicedInverseRegSAVEPHDCORE)assert_equalassert_allclose)approx_fprimec                     t           j                            d           t           j                            d          } d| d d df         z  t          j        d          | d d df         z  z   | d d df<   d| d d df         z  t          j        d          | d d d	f         z  z   | d d d	f<   t           j        d
         }t          j        | |          }t          j        |          }t           j                            |          }t          d          D ]`}|dk    r&t          ||           }|                                }n2|dk    r(t          ||           }|                    d          }n|dk    r)t          || d          }|                    d          }n|d	k    rxt          j        || d d df         | d d df         | d d df         | d d d	f         | d d df         d          }t          j        d|          }|                                }nW|dk    r%t!          ||           }|                                }n,|dk    r&t!          ||           }|                    d          }t#          t          j        |j        d         |j        d         z            dk    d           t          j        |j                  }	t          j        |	d d df         |          }
|
t          j        t          j        |	d d df         dz                      z  }
|
t          j        t          j        |dz                      z  }
t#          t          j        |
          dk    d           bd S )Ni  )i     size      ?r   g      ?         )r   r   r   r      d   )slice_nT)bc   )yx0x1x2x3x4zy ~ 0 + x0 + x1 + x2 + x3 + x4)datar   )residgffffff?)nprandomseednormalsqrtr_dotexppoissonranger   fitr   pd	DataFramefrom_formular   r   abseigsasarrayparamssum)xmatblprevr   methodmodelrsltdfr1   qs              h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/regression/tests/test_dimred.pytest_poissonr=      sS   INN5 9**DT!!!Q$Z"'*"5"5QQQT
"BBDAJT!!!Q$Z"'*"5"5QQQT
"BBDAJ
A
&q//C	B
	"A(( &- &-Q;;$Q--E99;;DDq[[DMME99S9))DDq[[DT***E99S9))DDq[[A%)!!!Q$Z%)!!!Q$Z%)!!!Q$Z%)!!!Q$Z%)!!!Q$Z1 1 2 2B %18rC C CE99;;DDq[[4LLE99;;DDq[[4LLE9949((D 	RVDIaL49Q<7881<dCCC DK((F6!!!Q$<##	RWRVF111a4L!O,,---	RWRVAqD\\"""RVAYY%t,,,,M&- &-    c                  0   t           j                            d           d} d}t           j                            | |f          }t          j        |t          j        dd|                    }|                    d          }|d|dz  z   z  t           j                            |           z   }t          ||          }|                                }t          j	        |dz
  |f          }t          |dz
            D ]}	g d||	|	|	d	z   f<   t          j        t          d
          5  |                    dd	|z            }d d d            n# 1 swxY w Y   t          d          D ]}t           j                            |df          }
t           j                            |
d          \  }
}}t#          |
                                |j        d          }|                    |
                                          }t+          ||dd           d S )N*m   
   r   r   r   r   )r   r   r   zSIR.fit_regularized did notmatchr   r   Hz>h㈵>g-C6?atolrtol)r    r!   r"   r#   r&   linspacer2   r   r*   zerosr)   pytestwarnsUserWarningfit_regularizedlinalgsvdr	   ravel_regularized_objective_regularized_gradr   )npr3   y1y2r   r8   _fmatipagngrs                r<   test_sir_regularized_numdiffr`   B   s,    INN5A
A9!Q((D	bk"a++	,	,B	!B
a"a%i29+++333AQ%%E		A 8QqS!HD1Q3ZZ $ $#Q!A#X	k)F	G	G	G - -!!!QtV,,- - - - - - - - - - - - - - - 1XX 6 6YAq6**9==Q''Aq288::u'CTJJ$$RXXZZ00BT555556 6s   +EEEc            	         t           j                            d           d} d}t           j                            | |f          }t          j        |d d ddf         t           j        d                   t           j                            |           z   }t          ||          }|                                }t          j        d|f          }d	d
g|dddf<   d	d
g|d	ddf<   |	                    d	d|z            }t          j        |          }g d|dd<   |j
        d d df         }	|j
        d d ddf         }
d }t           |||	           |||
          k    d           t           |||
          dk     d           t          t          j        t          j        ||	          dz            t          j        t          j        ||
          dz            k    d           d S )Nr@   rA   rB   r   r   r   r   r   r   r   r   r   r   r   c                    | t          j        t          j        | | z                      z  } |t          j        t          j        ||z                      z  }dt          j        t          j        | |                    z
  S )Nr   )r    r$   r2   r.   r&   )xr   s     r<   simz$test_sir_regularized_1d.<locals>.sim}   sa    q1u&&&q1u&&&26"&A,,''''r>   TMbP?)r    r!   r"   r#   r&   r%   r   r*   rL   rP   r1   r   r2   )rV   rW   r3   r   r8   r9   r[   rslt2pa0pa1pa2re   s               r<   test_sir_regularized_1drk   b   s   
 INN5A
A9!Q((D
tAAAqsF|RU<011BI4D4D!4D4L4LLAQ%%E99;;D 8QFDr7DAaCLr7DAaCL!!!QtV,,E
(1++C~~C!H
+aaad
C
,qqq!A#v
C( ( ( S#S#.555 S#%t,,, tS))1,--rvdC7H7H!7K0L0LL    r>   c                  N   t           j                            d           d} d}t           j                            | |f          }t          j        |d d ddf         t           j        d                   }t          j        |d d ddf         t           j        d                   }|t          j        |          z   t           j                            |           z   }t          ||          }|                                }t          j	        d	|f          }d
D ]}	|	dk     r|
                    |	|          }
nIt          j        t          d          5  |
                    |	|          }
d d d            n# 1 swxY w Y   |j        d d d|	f         }t           j                            |d          \  }}}|
j        }t           j                            t          j        |j        |                    \  }}}t%          t          j        |          |	dd           	d S )Nr@   rA   rB   r   r   r   rb      r   )r   r   r   r   r   zSIR.fit_regularized didrD   g?rH   )r    r!   r"   r#   r&   r%   arctanr   r*   rL   rP   rM   rN   rO   r1   rQ   rR   Tr   r2   )rV   rW   r3   rX   rY   r   r8   rslt1r[   drg   ri   rZ   rj   ss                  r<   test_sir_regularized_2drs      s#    INN5A
A9!Q((D	QQQ!VbeL1	2	2B	QQQ!VbeL1	2	2B
RYr]]RY--1-555AQ%%EIIKKE8QFD 
< 
<q55))!T22EEk1JKKK 7 7--a667 7 7 7 7 7 7 7 7 7 7 7 7 7 7l111ac6"IMM#q))	Ql)--suc 2 2331aq		14d;;;;;
< 
<s   E::E>	E>	c            	      D   t           j                            d           d} g }g }t          d          D ]}t          j        |           }t           j                            d          }t          j        |j        |          |ddddf<   t           j        	                    |          }d|z  d	|z  z   }t           j                            || f          }t          j        ||j                  }|
                    |           |
                    |t          j        |          z             t          j        |          }t          j        |d
          }dD ]}t          |||          }t           j                            | |f          }	t           j                            |	d          \  }	}
}
t          |	                                |j        d          }|                    |	                                          }t'          ||dd           |                                }|j        }t-          |j        d         |            t-          |j        d         |           t'          t          j        |j        |          t          j        |          dd           |dk    rpt          j        | df          }t          j        d          |ddddf<   t'          t          j        t          j        |j        |                    ddd           d S )Ni  r   r   )r   r   r   r   r   rA   2   )axis)r   r   r   rF   rG   r   g:0yE>rf   )rJ   rI   )r    r!   r"   r)   eyer#   r&   ro   rQ   choleskyappendonesconcatenater   rR   r	   rS   loglikescorer   r*   r1   r   shaperL   trace)rW   endogexogkcrd   crmdimptrZ   r^   gr9   projprojts                   r<   test_covreducer      s   INN5	AED1XX % %F1III&)) fQS!nn!A#qs(Y""FRTMI1a&))F1bdOOAQ^$$$$N5!!E>$Q'''D 2 2%s##YAs8,,9==Q''Aq288::rz488HHRXXZZ  2tT***vvxx{TZ]A&&&TZ]C(((tvt,,bfSkk4FFF!88HaV$$E fQiiE!A#qs(OBHRVDFE%:%:;;Q!%D2 2 2 2+2 2r>   )numpyr    pandasr+   rM   statsmodels.regression.dimredr   r   r   r   numpy.testingr   r   statsmodels.tools.numdiffr	   r=   r`   rk   rs   r    r>   r<   <module>r      s            ( ( ( ( ( ( ( ( ( ( ( ( 9 9 9 9 9 9 9 9 3 3 3 3 3 34- 4- 4-n6 6 6@( ( (V< < <<.2 .2 .2 .2 .2r>   