3
qd                 @   sz   d dl Zd dlmZ d dljZdd Zdd Zdd Z	d	d
 Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    N)Seriesc                sd   d fdd	}|| }|j td dfdf }|jjd|_|| d | d }tj||dd d S )Nc                s   t t |  f |S )N)getattr)objobj2)dispatchkwargsname </tmp/pip-build-7vycvbft/pandas/pandas/tests/window/common.py
get_result   s    z)check_pairwise_moment.<locals>.get_result      F)Zcheck_names)N)locsliceindexZ	dropleveltmassert_series_equal)framer   r   r   r   resultexpectedr	   )r   r   r   r
   check_pairwise_moment   s    r   c             K   s   t | j|f|||S )N)r   Zewm)ABcomr   r   r	   r	   r
   ew_func   s    r   c             C   sP   t ||d| dd}tj|jd d j s.ttj|jdd  j  sLtd S )N   r   )r   r   r   r   min_periods   )r   npisnanvaluesallAssertionErrorany)r   r   r   r   r	   r	   r
   check_binary_ew   s    r$   c             C   s   t ||d| |d}tj|jd d j s.ttj|jdd  j  sLttg tjd}t ||d| |d}t	j
|| t tdgtdgd| |d}t	j
|ttjg d S )Nr   )r   r      )Zdtype2   g      ?)r   r   r   r    r!   r"   r#   r   float64r   r   NaN)r   r   r   r   r   emptyr	   r	   r
   check_binary_ew_min_periods   s    r*   c             C   s*   || }|r&|| }t j||jd d S )Nr'   )r   assert_equalZastype)xmeanZ	mock_meanmean_xr   r	   r	   r
   moments_consistency_mock_mean1   s    r/   c             C   s   || }|| }|| | }|r~t | tr0| j n
| j j }	| tj }
|	|
|t|dk< tj||
 tj|
d d < tj||
 d S )Nr   )
isinstancer   maxr   nanr   r+   )r,   is_constantr   countr-   corrcount_xr.   Zcorr_x_xexpr   r	   r	   r
   moments_consistency_is_constant;   s    

r8   c             C   s8   |r4|r4|r4|| }|| }|| }t j|||  d S )N)r   r+   )r,   
var_biasedvar_unbiasedZvar_debiasing_factorsZvar_unbiased_xZvar_biased_xZvar_debiasing_factors_xr	   r	   r
   )moments_consistency_var_debiasing_factorsN   s
    r;   c             C   s   || }|| }x||gD ]}	|	| }
|
dk j  j   s<t|	|krd|| |  }tj|
|||   |r|
dkj  j   s~t| tj }d||t|dk< |	|krtj||dk < tj|
| qW d S )Nr   g        r      )r#   r"   r   r+   r   r2   r1   )r,   r3   r   r4   r-   r:   r9   r6   r.   varvar_xZmean_x2r   r	   r	   r
   moments_consistency_var_dataY   s    
r?   c       	      C   sn   xh||f||fgD ]T\}}|| }|| }|dk j  j   s@t|dk j  j   sVttj|||  qW d S )Nr   )r#   r"   r   r+   )	r,   std_unbiasedr:   
std_biasedr9   stdr=   r>   std_xr	   r	   r
   moments_consistency_std_dataq   s    rD   c       	      C   sp   xj||f||fgD ]V\}}|| }|dk j  j   s8t|r|| | }|dk j  j   s\ttj|| qW d S )Nr   )r#   r"   r   r+   )	r,   cov_unbiasedr:   
cov_biasedr9   covr=   r>   Zcov_x_xr	   r	   r
   moments_consistency_cov_data|   s    
rH   c	             C   s  t | tr| }	|| }
| j j|	j s*|| |	}||	| }tj|| x|||f|||fgD ]\}}}|| }|| }|r`|| |	}||	| }tj|| || |	 }||	}tj|d|| |   ||	}tj||||   ||kr`||	}|| |	 }tj|||
|   q`W d S )Ng      ?)r0   r   Zisnaequalsr   r+   )r,   r5   r-   rA   r@   rE   r:   r9   rF   yr.   Zcorr_x_yZcorr_y_xrB   r=   rG   r>   rC   Zcov_x_yZcov_y_xZvar_x_plus_yZvar_yZstd_yZmean_yZmean_x_times_yr	   r	   r
   moments_consistency_series_data   s2    



rK   )numpyr   Zpandasr   Zpandas._testingZ_testingr   r   r   r$   r*   r/   r8   r;   r?   rD   rH   rK   r	   r	   r	   r
   <module>   s   

