
    !g>                         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#y)    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  r?t	        ||z        }t	        ||dz   z        }| || |||ddf   f |dz  }||dz
  k  r?t	        ||z        }t	        ||dz   z  |z         }| || |||ddf   f yw)partitions datar      N)shapenpceilfloorint)	endogexog
partitionsn_exogn_partremstpiijjs	            o/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/base/tests/test_distributed_estimation.py	_data_genr#      s      ZZ]FWWVj()FXXfz)*F
6J&
&C
C
a
 #37#$BrlDBN**q	 a
  
Vc\	B	VsQw#%	&B
2,RUAX
&&s   BC5Cc                     t         j                  j                  d       t         j                  j                  d      } t         j                  j	                  ddd      }t         j                  j                  d      }t        ||       }t        ||dd	i       }t        |t        j                  g d
      dd       y )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     IINN6
		g&A
		!QR(A99#D
a)Cc4q"-DD"((#ABA'    c            	      *   t         j                  j                  d       t         j                  j                  d      } t         j                  j	                  ddd      }t         j                  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       y )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   r0   r1   r2   r3   r   r
   r   r4   r   r   )r5   r6   r7   r8   dmats        r"   test_calc_wdesign_matr@   3   s     IINN6
		f%A
		!QQ'A99#D
a)CS$+DD"(($C$E$D$F G A'
 a8:
&CS$+DD"(($B$E$C$E F A'r;   c                  V   t         j                  j                  d       t         j                  j                  d      } t         j                  j	                  ddd      }t         j                  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                     y )Nr%   r&   r)   r   r+   r'   r(   alpha      ?fit_kwdsr   )r+   r=   )r   r0   r1   r2   r3   r   r   r   
isinstancetupler   r   listlenfloatr   r   )	r5   r6   r7   r8   resbhatr9   ghat_lthat_ls	            r"   test_est_regularized_debiasedrO   M   s    IINN6
		g&A
		!QR(A99#D
a)C
#CA#
GCq6Dq6DVFVFJsE"#TZZ(TZZ(Jvt$%Jvt$%Vc&k*$'Jvay%()
a8:
&C
#CA#
GCq6Dq6DVFVFJsE"#TZZ(TZZ(Jvt$%Jvt$%Vc&k*$'Jvay%()r;   c                     t         j                  j                  d       t         j                  j                  d      } t         j                  j	                  ddd      }t         j                  j                  d      }t        ||       }t        |dddd	i
      }t        |j                  |j                         t        || t                     }t        |dddd	i
      }t        |j                  |j                         y Nr%   r&   r)   r   r+   r'   r(   rB   rC   rD   r=   )r   r0   r1   r2   r3   r   r   r   r   r   r   r5   r6   r7   r8   rK   s        r"   test_est_regularized_naiverS   x   s     IINN6
		g&A
		!QR(A99#D
a)C
 ags^
DCDJJ'
a8:
&C
 ags^
DCDJJ'r;   c                     t         j                  j                  d       t         j                  j                  d      } t         j                  j	                  ddd      }t         j                  j                  d      }t        ||       }t        |dddd	i
      }t        |j                  |j                         t        || t                     }t        |dddd	i
      }t        |j                  |j                         y rQ   )r   r0   r1   r2   r3   r   r   r   r   r   r   rR   s        r"   test_est_unregularized_naiverU      s     IINN6
		g&A
		!QR(A99#D
a)C
"31~
FCDJJ'
a8:
&C
"31~
FCDJJ'r;   c                     t         j                  j                  d       t         j                  j                  d      } t         j                  j	                  ddd      }t        ||       }g }t        d      D ]$  }t        ||dddi	      }|j                  |       & t        |      }t        |t        j                  g d
      dd       t        || t                     }g }t        d      D ]$  }t        ||dddi	      }|j                  |       & t        |      }t        |t        j                  g d      dd       y )Nr%   r&   r)   r   r+   r'   rB   皙?rD   )gNA~6rſguŌgJOcֿr,   r-   r=   gYſgKu/3lڿg{Ic̿)r   r0   r1   r2   r3   r   ranger   appendr   r   r4   r   r   r5   r6   r8   res_lirK   joineds          r"   test_join_debiasedr_      s!    IINN6
		g&A
		!QR(A
a)CE1X 'QWcNKS E"FFBHH%EFA' a8:
&CE1X 'QWcNKS E"FFBHH%FGA'r;   c                     t         j                  j                  d       t         j                  j                  d      } t         j                  j	                  ddd      }t        ||       }g }t        d      D ]$  }t        ||dddi	      }|j                  |       & t        |      }t        |t        j                  g d
      dd       t        || t                     }g }t        d      D ]$  }t        ||dddi	      }|j                  |       & t        |      }t        |t        j                  g d      dd       y )Nr%   r&   r)   r   r+   r'   rB   rW   rD   )gYRA        ra   r,   r-   r=   )ra   ra   ra   )r   r0   r1   r2   r3   r   rY   r   rZ   r   r   r4   r   r   r[   s          r"   test_join_naiverb      s     IINN6
		g&A
		!QR(A
a)CE1X $S!Q'3HS FFBHH%89A' a8:
&CE1X $S!Q'3HS FFBHH\2A'r;   c                     t         j                  j                  d       t         j                  j                  d      } t         j                  j	                  ddd      }t        dt              }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       t        dt              }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       t        dt              }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       t        dt        dt               i      }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       t        dt        dt               i      }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       t        dt        dt               i      }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       y )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   r0   r1   r2   r3   r   r   fitr#   r   paramsr4   r   r   r5   r6   r8   rq   s       r"   test_fit_sequentialrt      sX    IINN6
		g&A
		!QR(A
1#
.C
'')Aq!$l#S>  +CCJJ)J KA'
1#
.C
'')Aq!$l#S>  +CCJJ)J KA'
1#
.C
'')Aq!$l#S>  +CCJJ)J KA' 1#&.
%;=C
'')Aq!$l#S>  +CCJJ)J KA'
1#&.
%;=C
'')Aq!$l#S>  +CCJJ)J KA'
1#&.
%;=C
'')Aq!$l#S>  +CCJJ)J KA'r;   c                     t         j                  j                  d       t         j                  j                  d      } t         j                  j	                  ddd      }t        dt              }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       t        dt              }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       t        dt              }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       t        dt        dt               i      }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       t        dt        dt               i      }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       t        dt        dt               i      }|j                  t        || d      d	d
di      }t        |j                  t        j                  g d      dd       y )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     sX    IINN6
		g&A
		!QR(A
1#
.C
'')Aq!$h#S>  +CCJJ)J KA'
1#
.C
'')Aq!$h#S>  +CCJJ)J KA'
1#
.C
'')Aq!$h#S>  +CCJJ)J KA' 1#&.
%;=C
'')Aq!$h#S>  +CCJJ)J KA'
1#&.
%;=C
'')Aq!$h#S>  +CCJJ)J KA'
1#&.
%;=C
'')Aq!$h#S>  +CCJJ)J KA'r;   c                     t         j                  j                  d       d} d}d}t         j                  j                  |      }|t         j                  j	                  dd|      z  }t         j                  j                  | |f      }|j                  |      t         j                  j                  |       z   }t        |      }|j                  t        |||      ddi	      }t        |t        t        
      }|j                  t        |||      ddi	      }	t        ||      }
|
j                  d      }t        |j                  |j                         t        |	j                  |j                         t        |t        t        
      }|j                  t        |||      ddi	      }	t        ||      }
|
j                  d      }t        |	j                  |j                         y )Nr%      
   r   r)   r   r+   rB   rD   estimation_methodjoin_methodrB   rW   )r   r0   r1   r2   r3   dotr   rq   r#   r   r   r   r   rr   fit_regularized)Npmr7   r5   r6   db_modfitOLSdbnv_modfitOLSnvols_modfitOLSs               r"   test_single_partitionr   <  s    IINN6A
A	A99#D"))##Aq!,,D
		q!f%A	dbii&&A&..A a Fzz)Aq!,|zDHa3I*57Fzz)Aq!,|zDH!QiG[[q[!FHOOV]]3HOOV]]3 a3I*57Fzz)Aq!,~zFH!QiG$$3$/FHOOV]]3r;   c                  0   t         j                  j                  d       d} d}d}t         j                  j                  |      }|t         j                  j	                  dd|      z  }t         j                  j                  | |f      }|j                  |      t         j                  j                  |       z   }t        |      }|j                  t        |||      ddi	      }t        t        j                  t        j                  |j                              d       t        |t        t        
      }|j                  t        |||      ddi	      }	t        t        j                  t        j                  |	j                              d       y )Nr%   (      r)   r   r+   rB   rW   rD   r{   )r   r0   r1   r2   r3   r   r   rq   r#   r   sumisnanrr   r   r   )
r   r   r   r7   r5   r6   r   r   r   r   s
             r"   test_larger_pr   c  s0    IINN6
A
A	A99#D"))##Aq!,,D
		q!f%A	dbii&&A&..Aa Fzz)Aq!,~zFH12A6a3I*57Fzz)Aq!,~zFH12A6r;   c                  x   t         j                  j                  d       d} d}d}t         j                  j                  |      }|t         j                  j	                  dd|      z  }t         j                  j                  | |f      }|j                  |      t         j                  j                  |       z   }t        |dd	i
      }|j                  t        |||      ddi      }t        ||      }|j                  d      }	d|j                  dk7  z  }
d|	j                  dk7  z  }t        |
|       y )Nr%   ry   rz   r   r)   r   r+   	thresholdgp=
ף?)	join_kwdsrB   rW   rD   r~   r   )r   r0   r1   r2   r3   r   r   rq   r#   r   r   rr   r   )r   r   r   r7   r5   r6   r   r   r   r   nz_params_dbnz_params_olss               r"   test_non_zero_paramsr   {  s    IINN6A
A	A99#D"))##Aq!,,D
		q!f%A	dbii&&A&..AaK+>?Fzz)Aq!,~zFH!QiG$$3$/F1,-L!+,ML-0r;   c                  f   t         j                  j                  d       d} d}d}t         j                  j                  |      }|t         j                  j	                  dd|      z  }t         j                  j                  | |f      }|j                  |      t         j                  j                  |       z   }d }t        |t        t        	      }|j                   ||||      d
di      }t        ||      }	|	j                  d      }
t        |j                  |
j                         y )Nr%   ry   rz   r   r)   r   r+   c              3      K   |j                   d   }t        j                  ||z        }d}||k  r| |f |t        |      z  }||k  ryyw)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  sU      A*,-6k+#f+B 6ks   AAAr{   rB   rW   rD   r~   )r   r0   r1   r2   r3   r   r   r   r   rq   r   r   r   rr   )r   r   r   r7   r5   r6   r   r   r   r   r   s              r"   test_repeat_partitionr     s    
 IINN6A
A	A99#D"))##Aq!,,D
		q!f%A	dbii&&A&..A	 a3I*57Fzz-1a0GS>zJH!QiG$$3$/FHOOV]]3r;   c                     t         j                  j                  d       d} d}d}t         j                  j                  |      }|t         j                  j	                  dd|      z  }t         j                  j                  | |f      }|j                  |      t         j                  j                  |       z   }t        |      }|j                  t        |||      dd	i
      }t         j                  j                  |j                  |z
        }t        |t        t              }	|	j                  t        |||      dd	i
      }
t         j                  j                  |
j                  |z
        }t        ||k         ddt        j                  |j                  |       t         j                  j                  |       z         z   z  }d|dkD  z  }t        |t         dt#               i      }|j                  t        |||      dd	i
      }t         j                  j                  |j                  |z
        }t        |t         dt#               it        t              }	|	j                  t        |||      dd	i
      }t         j                  j                  |j                  |z
        }t        ||k         y )Nr%   ry   rz      r)   r   r+   rB   g?rD   r{   r   g      ?rC   r>   rl   )re   rm   r|   r}   )r   r0   r1   r2   r3   r   r   rq   r#   linalgnormrr   r   r   r   expr   r   )r   r   r   r7   r5   r6   r   r   olsdbn_modfitOLSnolsnprobfitGLMdbglmdbfitGLMnglmns                    r"   test_debiased_v_averager     s2   
 IINN6A
A	A99#D"))##Aq!,,D
		q!f%A	dbii&&A&..Aa Fzz)Aq!,~zFHIINN8??T12EQ2H)46Eii	!Q*gs^iDG99>>'..4/0DEDLBFFAEE$K<"))*:*:*:*BBCCDD
dSjAaS)18:(>@Fzz)Aq!,~zFHIINN8??T12EQC(0(*'=/E)46E ii	!Q*gs^iDG99>>'..4/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      sv     @ @ 3 ; 0  ','"'4(*V(*(*':':-'`-'`$4N7012!4H'r;   