
    M/Ph>                         d dl Zd dlmZmZmZ d dlmZ d dlm	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 d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#dS )    N)assert_equalassert_assert_allclose)OLS)GLM)Binomial)
_calc_grad_calc_wdesign_mat_est_regularized_debiased_join_debiased_est_regularized_naive_est_unregularized_naive_join_naiveDistributedModelc              #     K   |j         d         }t          j        ||z            }t          j        ||z            }|||z  z
  }d}||dz
  k     rOt	          ||z            }t	          ||dz   z            }| ||         |||ddf         fV  |dz  }||dz
  k     Ot	          ||z            }t	          ||dz   z  |z             }| ||         |||ddf         fV  dS )partitions datar      N)shapenpceilfloorint)	endogexog
partitionsn_exogn_partremstpiijjs	            r/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/base/tests/test_distributed_estimation.py	_data_genr#      s%      Z]FWVj())FXfz)**F
6J&
&C
C
a
 
 #37#$$BrElDBN****q	 a
 
  
Vc\		B	VsQw#%	&	&B
2,RUAAAX
&&&&&&    c                     t           j                            d           t           j                            d          } t           j                            ddd          }t           j                            d          }t          ||           }t          ||dd	i           }t          |t          j        g d
          dd           d S )NA 2      sizer      r(   r)   g{Gz?r   )g"3@gy~g^zoL@ư>atolrtol)	r   randomseednormalrandintr   r	   r   array)Xybetamodgrads        r"   test_calc_gradr;   "   s     INN6
	g&&A
	!QR((A9##D
a))Cc4q"--DD"(#A#A#ABBA' ' ' ' ' 'r$   c            	      `   t           j                            d           t           j                            d          } t           j                            ddd          }t           j                            d          }t          ||           }t          ||i           }t          |t          j        g dg dg d	g          d
d           t          || t                                }t          ||i           }t          |t          j        g dg dg dg          d
d           d S )Nr&   )r)   r)   r*   r   r,   r)   )g>D?gc~gYU9?)g7L4HAgXE޿gi4)g
g(5
?g >r-   r.   family)gZ'&?glTOg F6?)gSпgPv0οg/m8,տ)gLƼg3ڪ$?gSVs)r   r1   r2   r3   r4   r   r
   r   r5   r   r   )r6   r7   r8   r9   dmats        r"   test_calc_wdesign_matr@   3   sY    INN6
	f%%A
	!QQ''A9##D
a))CS$++DD"($C$C$C$E$E$E$D$D$D$F G G A' ' ' '
 a8::
&
&
&CS$++DD"($B$B$B$E$E$E$C$C$C$E F F A' ' ' ' ' 'r$   c                  T   t           j                            d           t           j                            d          } t           j                            ddd          }t           j                            d          }t          ||           }t          |dddd	i
          }|d         }|d         }|d         }|d         }t          t          |t                               t          |j        |j                   t          |j        |j                   t          t          |t                               t          t          |t                               t          t          |          t          |                     t          |d         j        d           t          t          |d         t                               t          || t!                                }t          |dddd	i
          }|d         }|d         }|d         }|d         }t          t          |t                               t          |j        |j                   t          |j        |j                   t          t          |t                               t          t          |t                               t          t          |          t          |                     t          |d         j        d           t          t          |d         t                               d S )Nr&   r'   r*   r   r,   r(   r)   alpha      ?fit_kwdsr   )r,   r=   )r   r1   r2   r3   r4   r   r   r   
isinstancetupler   r   listlenfloatr   r   )	r6   r7   r8   r9   resbhatr:   ghat_lthat_ls	            r"   test_est_regularized_debiasedrO   M   s    INN6
	g&&A
	!QR((A9##D
a))C
#CA#
G
G
GCq6Dq6DVFVFJsE""###TZ(((TZ(((Jvt$$%%%Jvt$$%%%Vc&kk***$'''Jvay%(()))
a8::
&
&
&C
#CA#
G
G
GCq6Dq6DVFVFJsE""###TZ(((TZ(((Jvt$$%%%Jvt$$%%%Vc&kk***$'''Jvay%(()))))r$   c                      t           j                            d           t           j                            d          } t           j                            ddd          }t           j                            d          }t          ||           }t          |dddd	i
          }t          |j        |j                   t          || t                                }t          |dddd	i
          }t          |j        |j                   d S Nr&   r'   r*   r   r,   r(   r)   rB   rC   rD   r=   )r   r1   r2   r3   r4   r   r   r   r   r   r   r6   r7   r8   r9   rK   s        r"   test_est_regularized_naiverS   x   s     INN6
	g&&A
	!QR((A9##D
a))C
 ags^
D
D
DCDJ'''
a8::
&
&
&C
 ags^
D
D
DCDJ'''''r$   c                      t           j                            d           t           j                            d          } t           j                            ddd          }t           j                            d          }t          ||           }t          |dddd	i
          }t          |j        |j                   t          || t                                }t          |dddd	i
          }t          |j        |j                   d S rQ   )r   r1   r2   r3   r4   r   r   r   r   r   r   rR   s        r"   test_est_unregularized_naiverU      s     INN6
	g&&A
	!QR((A9##D
a))C
"31~
F
F
FCDJ'''
a8::
&
&
&C
"31~
F
F
FCDJ'''''r$   c                     t           j                            d           t           j                            d          } t           j                            ddd          }t          ||           }g }t          d          D ],}t          ||dddi	          }|                    |           -t          |          }t          |t          j        g d
          dd           t          || t                                }g }t          d          D ],}t          ||dddi	          }|                    |           -t          |          }t          |t          j        g d          dd           d S )Nr&   r'   r*   r   r,   r(   rB   皙?rD   )gNA~6rſguŌgJOcֿr-   r.   r=   gYſgKu/3lڿg{Ic̿)r   r1   r2   r3   r4   r   ranger   appendr   r   r5   r   r   r6   r7   r9   res_lirK   joineds          r"   test_join_debiasedr_      s    INN6
	g&&A
	!QR((A
a))CE1XX  'QWcNKKKSE""FFBH%E%E%EFFA' ' ' ' a8::
&
&
&CE1XX  'QWcNKKKSE""FFBH%F%F%FGGA' ' ' ' ' 'r$   c                     t           j                            d           t           j                            d          } t           j                            ddd          }t          ||           }g }t          d          D ],}t          ||dddi	          }|                    |           -t          |          }t          |t          j        g d
          dd           t          || t                                }g }t          d          D ],}t          ||dddi	          }|                    |           -t          |          }t          |t          j        g d          dd           d S )Nr&   r'   r*   r   r,   r(   rB   rW   rD   )gYRA        ra   r-   r.   r=   )ra   ra   ra   )r   r1   r2   r3   r4   r   rY   r   rZ   r   r   r5   r   r   r[   s          r"   test_join_naiverb      s    INN6
	g&&A
	!QR((A
a))CE1XX  $S!Q'3HHHSFFBH%8%8%899A' ' ' ' a8::
&
&
&CE1XX  $S!Q'3HHHSFFBH\\\22A' ' ' ' ' 'r$   c                  &   t           j                            d           t           j                            d          } t           j                            ddd          }t          dt                    }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           t          dt                    }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           t          dt                    }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           t          dt          dt                      i          }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           t          dt          dt                      i          }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           t          dt          dt                      i          }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           d S )Nr&   r'   r*   r   r,   r(   r   model_class
sequentialrB   rC   parallel_methodrE   g۟ȿg$gNx	N}ֿr-   r.   gP5&Ŀg8Zgۃ/޿r)   gHgIpg|}Kٿr>   re   	init_kwdsrX   gܞ =¿gd׿gY9ҿg@CHgĐӿg_8Ͽr   r1   r2   r3   r4   r   r   fitr#   r   paramsr5   r   r   r6   r7   r9   rq   s       r"   test_fit_sequentialrt      sF    INN6
	g&&A
	!QR((A
1#
.
.
.C
'')Aq!$$l#S>  + +CCJ)J)J)J K KA' ' ' '
1#
.
.
.C
'')Aq!$$l#S>  + +CCJ)J)J)J K KA' ' ' '
1#
.
.
.C
'')Aq!$$l#S>  + +CCJ)J)J)J K KA' ' ' ' 1#&.

%;= = =C
'')Aq!$$l#S>  + +CCJ)J)J)J K KA' ' ' '
1#&.

%;= = =C
'')Aq!$$l#S>  + +CCJ)J)J)J K KA' ' ' '
1#&.

%;= = =C
'')Aq!$$l#S>  + +CCJ)J)J)J K KA' ' ' ' ' 'r$   c                  &   t           j                            d           t           j                            d          } t           j                            ddd          }t          dt                    }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           t          dt                    }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           t          dt                    }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           t          dt          dt                      i          }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           t          dt          dt                      i          }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           t          dt          dt                      i          }|                    t          || d          d	d
di          }t          |j
        t          j        g d          dd           d S )Nr&   r'   r*   r   r,   r(   r   rd   joblibrB   rC   rg   ri   r-   r.   rj   r)   rk   r>   rl   rX   rn   ro   rp   rs   s       r"   test_fit_joblibrw     sF    INN6
	g&&A
	!QR((A
1#
.
.
.C
'')Aq!$$h#S>  + +CCJ)J)J)J K KA' ' ' '
1#
.
.
.C
'')Aq!$$h#S>  + +CCJ)J)J)J K KA' ' ' '
1#
.
.
.C
'')Aq!$$h#S>  + +CCJ)J)J)J K KA' ' ' ' 1#&.

%;= = =C
'')Aq!$$h#S>  + +CCJ)J)J)J K KA' ' ' '
1#&.

%;= = =C
'')Aq!$$h#S>  + +CCJ)J)J)J K KA' ' ' '
1#&.

%;= = =C
'')Aq!$$h#S>  + +CCJ)J)J)J K KA' ' ' ' ' 'r$   c                  :   t           j                            d           d} d}d}t           j                            |          }|t           j                            dd|          z  }t           j                            | |f          }|                    |          t           j                            |           z   }t          |          }|                    t          |||          ddi	          }t          |t          t          
          }|                    t          |||          ddi	          }	t          ||          }
|
                    d          }t          |j        |j                   t          |	j        |j                   t          |t          t          
          }|                    t          |||          ddi	          }	t          ||          }
|
                    d          }t          |	j        |j                   d S )Nr&      
   r   r*   r   r,   rB   rD   estimation_methodjoin_methodrB   rW   )r   r1   r2   r3   r4   dotr   rq   r#   r   r   r   r   rr   fit_regularized)Npmr8   r6   r7   db_modfitOLSdbnv_modfitOLSnvols_modfitOLSs               r"   test_single_partitionr   <  s    INN6A
A	A9##D")##Aq!,,,D
	q!f%%A	dbi&&A&...A a  Fzz)Aq!,,|zDDHa3I*57 7 7Fzz)Aq!,,|zDDH!QiiG[[q[!!FHOV]333HOV]333 a3I*57 7 7Fzz)Aq!,,~zFFH!QiiG$$3$//FHOV]33333r$   c                  b   t           j                            d           d} d}d}t           j                            |          }|t           j                            dd|          z  }t           j                            | |f          }|                    |          t           j                            |           z   }t          |          }|                    t          |||          ddi	          }t          t          j
        t          j        |j                            d           t          |t          t          
          }|                    t          |||          ddi	          }	t          t          j
        t          j        |	j                            d           d S )Nr&   (      r*   r   r,   rB   rW   rD   r{   )r   r1   r2   r3   r4   r   r   rq   r#   r   sumisnanrr   r   r   )
r   r   r   r8   r6   r7   r   r   r   r   s
             r"   test_larger_pr   c  se    INN6
A
A	A9##D")##Aq!,,,D
	q!f%%A	dbi&&A&...Aa  Fzz)Aq!,,~zFFH1122A666a3I*57 7 7Fzz)Aq!,,~zFFH1122A66666r$   c                     t           j                            d           d} d}d}t           j                            |          }|t           j                            dd|          z  }t           j                            | |f          }|                    |          t           j                            |           z   }t          |dd	i
          }|                    t          |||          ddi          }t          ||          }|
                    d          }	d|j        dk    z  }
d|	j        dk    z  }t          |
|           d S )Nr&   ry   rz   r   r*   r   r,   	thresholdgp=
ף?)	join_kwdsrB   rW   rD   r~   r   )r   r1   r2   r3   r4   r   r   rq   r#   r   r   rr   r   )r   r   r   r8   r6   r7   r   r   r   r   nz_params_dbnz_params_olss               r"   test_non_zero_paramsr   {  s7    INN6A
A	A9##D")##Aq!,,,D
	q!f%%A	dbi&&A&...AaK+>???Fzz)Aq!,,~zFFH!QiiG$$3$//F1,-L!+,ML-00000r$   c                     t           j                            d           d} d}d}t           j                            |          }|t           j                            dd|          z  }t           j                            | |f          }|                    |          t           j                            |           z   }d }t          |t          t          	          }|	                     ||||          d
di          }t          ||          }	|	                    d          }
t          |j        |
j                   d S )Nr&   ry   rz   r   r*   r   r,   c              3      K   |j         d         }t          j        ||z            }d}||k     r | |fV  |t          |          z  }||k     dS dS )r   r   N)r   r   r   r   )r   r   r   r   r   r    s         r"   _rep_data_genz,test_repeat_partition.<locals>._rep_data_gen  sh       A*,--6kk+#f++B 6kkkkkkr$   r{   rB   rW   rD   r~   )r   r1   r2   r3   r4   r   r   r   r   rq   r   r   r   rr   )r   r   r   r8   r6   r7   r   r   r   r   r   s              r"   test_repeat_partitionr     s1   
 INN6A
A	A9##D")##Aq!,,,D
	q!f%%A	dbi&&A&...A	 	 	 a3I*57 7 7Fzz--1a00GS>zJJH!QiiG$$3$//FHOV]33333r$   c                     t           j                            d           d} d}d}t           j                            |          }|t           j                            dd|          z  }t           j                            | |f          }|                    |          t           j                            |           z   }t          |          }|                    t          |||          dd	i
          }t           j	        
                    |j        |z
            }t          |t          t                    }	|	                    t          |||          dd	i
          }
t           j	        
                    |
j        |z
            }t          ||k                ddt          j        |                    |           t           j                            |           z             z   z  }d|dk    z  }t          |t           dt#                      i          }|                    t          |||          dd	i
          }t           j	        
                    |j        |z
            }t          |t           dt#                      it          t                    }	|	                    t          |||          dd	i
          }t           j	        
                    |j        |z
            }t          ||k                d S )Nr&   ry   rz      r*   r   r,   rB   g?rD   r{   r   g      ?rC   r>   rl   )re   rm   r|   r}   )r   r1   r2   r3   r4   r   r   rq   r#   linalgnormrr   r   r   r   expr   r   )r   r   r   r8   r6   r7   r   r   olsdbn_modfitOLSnolsnprobfitGLMdbglmdbfitGLMnglmns                    r"   test_debiased_v_averager     s   
 INN6A
A	A9##D")##Aq!,,,D
	q!f%%A	dbi&&A&...Aa  Fzz)Aq!,,~zFFHINN8?T122EQ2H)46 6 6Eii	!Q**gs^iDDG9>>'.4/00DEDLBFAEE$KK<")*:*:*:*B*BBCCCDD
dSjAaS)18::(>@ @ @Fzz)Aq!,,~zFFHINN8?T122EQC(0(**'=/E)46 6 6E ii	!Q**gs^iDDG9>>'.4/00DEDLr$   )$numpyr   numpy.testingr   r   r   #statsmodels.regression.linear_modelr   +statsmodels.genmod.generalized_linear_modelr   statsmodels.genmod.familiesr   'statsmodels.base.distributed_estimationr	   r
   r   r   r   r   r   r   r#   r;   r@   rO   rS   rU   r_   rb   rt   rw   r   r   r   r   r    r$   r"   <module>r      s       @ @ @ @ @ @ @ @ @ @ 3 3 3 3 3 3 ; ; ; ; ; ; 0 0 0 0 0 0                   ' ' ',' ' '"' ' '4(* (* (*V( ( (*( ( (*' ' ':' ' ':-' -' -'`-' -' -'`$4 $4 $4N7 7 701 1 12!4 !4 !4H' ' ' ' 'r$   