
    Cd9                    x   d Z ddlmZ ddlZddlmZ ddlZddlm	Z
 ddlmZ ddlmZ ddlmZ 	 ddlZn# e$ rZ ed          edZ[ww xY wdd	lmZ dd
lmZ  edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          Z edd          ZdddddddZg dZ  eej!                  d1d            Z" eej!                  d2d            Z# eej!                  d2d            Z$ eej!                  d3d             Z% eej!                  d4d!            Z& eej!                  d5d"            Z' eej!                  d2d#            Z( eej!                  d6d$            Z) eej!                  d2d%            Z* eej!                  d2d&            Z+ eej!                  d'             Z, eej!                  d7d(            Z- eej.        e)          Z/ eej0        e)          Z1d* Z2d+ Z3d, Z4d- Z5d8d.Z6d9d/Z7d9d0Z8dS ):zu
Statistical functions and tests, following scipy.stats.

Some differences

- We don't handle missing values at all

    )annotationsN)
namedtuple)delayed)wrap_elemwise)derived_fromz4`dask.array.stats` requires `scipy` to be installed.)special)distributionsF_onewayResult)	statisticpvalueKurtosistestResultNormaltestResultPower_divergenceResultSkewtestResultTtest_1sampResultTtest_indResultTtest_relResult   g      gUUUUUU?)pearsonzlog-likelihoodzfreeman-tukeyzmod-log-likelihoodneymanzcressie-read)	ttest_indttest_1samp	ttest_rel	chisquarepower_divergenceskewskewtestkurtosiskurtosistest
normaltestf_onewaymomentTc                   t          j        | |d          }t          j        ||d          }| j        |         }|j        |         }|rt          ||||          \  }}	nt	          ||||          \  }}	t          t          j        | |          t          j        ||          |	|          }
 t          t          d          |
 S )Nr   ddof   nout)	davarshape_equal_var_ttest_denom_unequal_var_ttest_denom_ttest_ind_from_statsmeanr   r   )abaxis	equal_varv1v2n1n2dfdenomress              0lib/python3.11/site-packages/dask/array/stats.pyr   r   Y   s    	4a	 	 	 B	4a	 	 	 B	
B	
B =*2r2r::	EE,RR<<	E
4 0 0"'!T2B2BE2
N
NC+7?+++S11    	propagatec                   |dk    rt          d          | j        |         }|dz
  }t          j        | |          |z
  }t          j        | |d          }t          j        |t          |          z            }t          j        dd          5  t          j	        ||          }	d d d            n# 1 swxY w Y   t          ||	          \  }	}
 t          t          d          |	|
          S 	Nr?   >`nan_policy` other than 'propagate' have not been implemented.r   r&   ignoredivideinvalidr(   r)   )NotImplementedErrorr-   r+   r1   r,   sqrtfloatnperrstaterE   _ttest_finishr   r   )r2   popmeanr4   
nan_policynr:   dvr;   tprobs              r=   r   r   j   s+   [  !L
 
 	
 	
A	
QB
47"A
q$QAGAaL!!E	Hh	7	7	7    Ia                             B""GAt-7$1---a666s   B33B7:B7c                :   |dk    rt          d          | j        |         }t          |dz
            }| |z
                      t          j                  }t          j        ||d          }t          j        ||          }t          j	        |t          |          z            }	t	          j
        dd          5  t          j        ||	          }
d d d            n# 1 swxY w Y   t          ||
          \  }
} t          t          d          |
|          S rA   )rG   r-   rI   astyperJ   float64r+   r,   r1   rH   rK   rE   rL   r   r   )r2   r3   r4   rN   rO   r:   rP   rQ   dmr;   rR   rS   s               r=   r   r   }   sB   [  !L
 
 	
 	
A	q1uB	
Qrz""A
q$QA	D		BGAaL!!E	Hh	7	7	7 ! !Ib%  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !B""GAt+7?+++At444s   =CC#&C#c                *    t          | |||d          S )Nr   )f_expr'   r4   lambda_)r   )f_obsrY   r'   r4   s       r=   r   r      s    ETiXXXXr>   c                   t          |t                    rg|t          vrPt          t	          t                                                              dd         }t          d|d|           t          |         }n|d}|n|                     |d          }|dk    r| |z
  dz  |z  }nV|dk    rd	t          | | |z            z  }n9|dk    rd	t          ||| z            z  }n| | |z  |z  dz
  z  }|d
|z  |dz   z  z  }|	                    |          }t          ||          } t          t          j        j                  ||dz
  |z
            }	 t          t          d          ||	          S )Nr   r   zinvalid string for lambda_: z. Valid strings are T)r4   keepdimsr(   r          @      ?r4   r)   )
isinstancestr_power_div_lambda_namesreprlistkeys
ValueErrorr1   _xlogysum_countr   r	   chi2sfr   )
r[   rY   r'   r4   rZ   namestermsstatnum_obsps
             r=   r   r      s   '3 	1115::<<==>>qtDE-w - -%*- -   *'2	

t
44
 !||1$u,	AfUEEM222	BfUEEM222 %%-G3a78w'A+..99$9DU&&&G&"%&&tWq[4-?@@A27)2224;;;r>   c                4   |dk    rt          d          | j        |         }t          | d|          }t          | d|          }|dk    }t          j        | ||dz  z  d          }|st          d          |j        dk    r|                                S |S )	Nr?   rB   r(      r   g      ?g        bias=False is not implemented.)rG   r-   r$   r+   wherendimmin)	r2   r4   biasrN   rO   m2m3zerovalss	            r=   r   r      s    [  !L
 
 	
 	
A	1d		B	1d		B7D8TE2C<--D  D!"BCCCyA~~xxzzKr>   c           	        |dk    rt          d          t          | |          }t          | j        |                   }|dk     rt	          dt          |          z            |t          j        |dz   |dz   z  d|dz
  z  z            z  }d	|dz  d
|z  z   dz
  z  |dz   z  |dz   z  |dz
  |dz   z  |dz   z  |dz   z  z  }dt          j        d|dz
  z            z   }dt          j        dt          j        |          z            z  }t          j        d|dz
  z            }	t          j
        |dk    d|          }|t          j        ||	z  t          j        ||	z  dz  dz             z             z  }
 t          t          d          |
dt          j                            t          j        |
                    z            S )Nr?   rB      zFskewtest is not valid with less than 8 samples; %i samples were given.r   rs         @r(         @   F   r^         	   r   r_   r   r)   )rG   r   rI   r-   rg   intmathrH   logrJ   ru   r   r   r	   normrl   abs)r2   r4   rN   b2rO   ybeta2W2deltaalphaZs              r=   r   r      s   [  !L
 
 	
 
aBagdmA1uu VV$
 
 	
 	TYQ1q5)cQUm<===Aa4"q&=2	q5	 q5	 GA!a%(AE2		4 
 
diUQY((	(B	#,---EIcR!Vn%%E
aAAq5y27AI!+;a+?#@#@@AAAA*7>***1a-2D2G2Gq		2R2R.RSSSr>   c                   |dk    rt          d          | j        |         }t          | d|          }t          | d|          }|dk    }t          j        d          }		 t          j        |d||dz  z            }
t          j        di |	 n# t          j        di |	 w xY w|st          d	          |r|
d
z
  S |
j        dk    r|
                                S |
S )Nr?   rB   r(      r   rC   )allr^   rt   rs    )	rG   r-   r$   rJ   seterrr+   ru   rv   rw   )r2   r4   fisherrx   rN   rO   ry   m4r{   olderrr|   s              r=   r    r       s   [  !L
 
 	
 	
A	1d		B	1d		B7DY8$$$Fxab#g..
	F	F D!"BCCC ax9>>88::s   !B B"c           	     L   |dk    rt          d          t          | j        |                   }t          | |d          }d|dz
  z  |dz   z  }d|z  |dz
  z  |d	z
  z  |dz   |d
z   z  |d	z   z  |dz   z  z  }||z
  t	          j        |          z  }d||z  d|z  z
  dz   z  |dz   |dz   z  z  t	          j        d|d	z   z  |dz   z  ||dz
  z  |d	z
  z  z            z  }dd|z  d|z  t	          j        dd|dz  z  z             z   z  z   }	ddd|	z  z  z
  }
d|t	          j        d|	dz
  z            z  z   }t	          j        |dk     d|          }t	          j        |dk     |
t	          j        dd|	z  z
  |z  d                    }|
|z
  t	          j        dd|	z  z            z  }t	          j        |dk    d|          }|j        dk    r|d         } t          t          d          |dt          j                            t	          j        |                    z            S )Nr?   rB   F)r   r   r   g      8@r(   rs         ?r   r   r   r   g       @r^   g      @g      "@r   c   gUUUUUU?r   r)   )rG   rI   r-   r    rJ   rH   ru   powerrv   r   r   r	   r   rl   r   )r2   r4   rN   rO   r   Evarb2x	sqrtbeta1Aterm1r;   term2r   s                 r=   r!   r!     sl   [  !L
 
 	
 	agdmA	!T%	(	(	(Bq1uQAqAEa!e$Q1s7(;q1u(EQ(OP 
 
a275>>!A 	q51q5=1	Ea!e	 '3!a%=AE*qAE{a!e/DE
F
F	G  	cIoy271siQRl?S;S3T3T!TUUAS1WEBGASM****EHUQYE**EHUQYrxS1W0Ew'O'OPPE	"'!sQw-000A
"a##Av{{bE /7%A...q!m6H6K6KBFSTII6V6V2VWWWr>   c                   |dk    rt          d          t          | |          \  }}t          | |          \  }}||z  ||z  z   } t          t          d          | t          t
          j        j                  |d                    S )Nr?   rB   r(   r)   )rG   r   r!   r   r   r	   rk   rl   )r2   r4   rN   s_kk2s          r=   r"   r"   A  s    [  !L
 
 	
 AtDAq4  DAq	
QQB,7#!,,,R1O9K9N1O1OPRTU1V1VWWWr>   c                 ~   t          |           }t          j        |           }t          |          }|                                }||z  }t	          |          t          |          t          |          z  z
  }d}| D ]4}|t          ||z
            t          t          |                    z  z  }5|t          |          t          |          z  z  }||z
  }|dz
  }	||z
  }
|t          |	          z  }|t          |
          z  }||z  }t          |	|
|          } t          t          d          ||          S )Nr   r   r(   r)   )
lenr+   concatenater1   _sum_of_squares_square_of_sumsrI   _fdtrcr   r
   )args
num_groupsalldatabignoffsetsstotssbnr2   sswndfbndfwnmsbmswfrS   s                  r=   r#   r#   N  s8    TJnT""Gw<<D \\^^FvGG$$(@(@5;;(NOED < <F
++eCFFmm;; 	OG$$uT{{22D4<D>D*D
t
C
t
Cc	A$a  D*7>***1d333r>   c                Z    |dk    rt          d          t          j        | ||          S )Nr?   rB   r`   )rG   r+   r$   )r2   r$   r4   rN   s       r=   r$   r$   q  s;    [  !L
 
 	
 9QT****r>   )sourcec                    ||z   dz
  }|dz
  | z  |dz
  |z  z   |z  }t          j        |d|z  d|z  z   z            }||fS )Nr^   r   r   )r+   rH   )r6   r8   r7   r9   r:   svarr;   s          r=   r.   r.     sY    	b3B!VrMR!VrM)R/DGDC"HsRx/011Eu9r>   c                8   | |z  }||z  }t          j        dd          5  ||z   dz  |dz  |dz
  z  |dz  |dz
  z  z   z  }d d d            n# 1 swxY w Y   t          j        t          j        |          d|          }t          j        ||z             }||fS )NrC   rD   r(   r   )rJ   rK   r+   ru   isnanrH   )r6   r8   r7   r9   vn1vn2r:   r;   s           r=   r/   r/     s    
r'C
r'C	Hh	7	7	7 H HCiAa26!2S!VrAv5F!FGH H H H H H H H H H H H H H H
 
"(2,,2	&	&BGC#IEu9s   !AAAc                    | |z
  }t          j        dd          5  t          j        ||          }d d d            n# 1 swxY w Y   t	          ||          \  }}||fS )NrC   rD   )rJ   rK   r+   rE   rL   )mean1mean2r;   r:   rP   rR   rS   s          r=   r0   r0     s    A	Hh	7	7	7    Ia                             B""GAtt9s   >AAc                     t          t          j        j                  t	          j        |          |           dz  }|j        dk    r|d         }||fS )z+Common code between all 3 t-test functions.r(   r   r   )r   r	   rR   rl   r+   absoluterv   )r:   rR   rS   s      r=   rL   rL     sQ    
 	$"##BKNNB77!; 	 	v{{bEd7Nr>   c                .    || j         S | j        |         S N)sizer-   )r   r4   s     r=   rj   rj     s    |vwt}r>   c                2    t          j        | | z  |          S )a  
    Squares each element of the input array, and returns the sum(s) of that.
    Parameters
    ----------
    a : array_like
        Input array.
    axis : int or None, optional
        Axis along which to calculate. Default is 0. If None, compute over
        the whole array `a`.
    Returns
    -------
    sum_of_squares : ndarray
        The sum along the given axis for (a**2).
    See also
    --------
    _square_of_sums : The square(s) of the sum(s) (the opposite of
    `_sum_of_squares`).
    r+   ri   )r2   r4   s     r=   r   r     s    & 6!a%r>   c                6    t          j        | |          }||z  S )a  
    Sums elements of the input array, and returns the square(s) of that sum.
    Parameters
    ----------
    a : array_like
        Input array.
    axis : int or None, optional
        Axis along which to calculate. Default is 0. If None, compute over
        the whole array `a`.
    Returns
    -------
    square_of_sums : float or ndarray
        The square of the sum over `axis`.
    See also
    --------
    _sum_of_squares : The sum of squares (the opposite of `square_of_sums`).
    r   )r2   r4   r   s      r=   r   r     s    $ 	q$Aq5Lr>   )r   T)r   r?   )Nr   r   )Nr   r   N)r   Tr?   )r   TTr?   )r   r   r?   r   )r   )9__doc__
__future__r   r   collectionsr   numpyrJ   
dask.arrayarrayr+   daskr   dask.array.ufuncr   
dask.utilsr   scipy.statsscipyImportErrorer   r	   r
   r   r   r   r   r   r   r   rc   __all__statsr   r   r   r   r   r   r   r    r!   r"   r#   r$   xlogyrh   fdtrcr   r.   r/   r0   rL   rj   r   r   r   r>   r=   <module>r      s    # " " " " ",  " " " " " "                 * * * * * * # # # # # #U U U U
+L
M
MSTTU       % % % % % % ,.EFFZ 46MNN :02IJJ #$<>UVV ,.EFFJ24KLL *.0GHH*.0GHH     ( ek2 2 2 2  ek7 7 7 7$ ek5 5 5 5* ekY Y Y Y ek)< )< )< )<X ek   2 ekT T T T< ek   : ek!X !X !X !XH ek	X 	X 	X 	X ek4 4 4D ek+ + + + 
w}W	5	5	5	w}W	5	5	5  
 
 
  
 
 
      ,     s   5 AAA