@@ -252,43 +252,15 @@ def _test_moments_consistency_var_debiasing_factors(
252252 var_debiasing_factors_x = var_debiasing_factors (x )
253253 tm .assert_equal (var_unbiased_x , var_biased_x * var_debiasing_factors_x )
254254
255- def _test_moments_consistency (
256- self ,
257- min_periods ,
258- count ,
259- mean ,
260- corr ,
261- var_unbiased = None ,
262- std_unbiased = None ,
263- cov_unbiased = None ,
264- var_biased = None ,
265- std_biased = None ,
266- cov_biased = None ,
255+ def _test_moments_consistency_var_data (
256+ self , min_periods , count , mean , var_unbiased , var_biased
267257 ):
268-
269258 for (x , is_constant , no_nans ) in self .data :
270259 count_x = count (x )
271260 mean_x = mean (x )
272-
273- for (std , var , cov ) in [
274- (std_biased , var_biased , cov_biased ),
275- (std_unbiased , var_unbiased , cov_unbiased ),
276- ]:
277-
278- # check that var(x), std(x), and cov(x) are all >= 0
261+ for var in [var_biased , var_unbiased ]:
279262 var_x = var (x )
280- std_x = std (x )
281263 assert not (var_x < 0 ).any ().any ()
282- assert not (std_x < 0 ).any ().any ()
283- if cov :
284- cov_x_x = cov (x , x )
285- assert not (cov_x_x < 0 ).any ().any ()
286-
287- # check that var(x) == cov(x, x)
288- tm .assert_equal (var_x , cov_x_x )
289-
290- # check that var(x) == std(x)^2
291- tm .assert_equal (var_x , std_x * std_x )
292264
293265 if var is var_biased :
294266 # check that biased var(x) == mean(x^2) - mean(x)^2
@@ -304,45 +276,88 @@ def _test_moments_consistency(
304276 expected [count_x < 2 ] = np .nan
305277 tm .assert_equal (var_x , expected )
306278
307- if isinstance (x , Series ):
308- for (y , is_constant , no_nans ) in self .data :
309- if not x .isna ().equals (y .isna ()):
310- # can only easily test two Series with similar
311- # structure
312- continue
313-
314- # check that cor(x, y) is symmetric
315- corr_x_y = corr (x , y )
316- corr_y_x = corr (y , x )
317- tm .assert_equal (corr_x_y , corr_y_x )
318-
319- if cov :
320- # check that cov(x, y) is symmetric
321- cov_x_y = cov (x , y )
322- cov_y_x = cov (y , x )
323- tm .assert_equal (cov_x_y , cov_y_x )
324-
325- # check that cov(x, y) == (var(x+y) - var(x) -
326- # var(y)) / 2
327- var_x_plus_y = var (x + y )
328- var_y = var (y )
329- tm .assert_equal (
330- cov_x_y , 0.5 * (var_x_plus_y - var_x - var_y )
331- )
332-
333- # check that corr(x, y) == cov(x, y) / (std(x) *
334- # std(y))
335- std_y = std (y )
336- tm .assert_equal (corr_x_y , cov_x_y / (std_x * std_y ))
337-
338- if cov is cov_biased :
339- # check that biased cov(x, y) == mean(x*y) -
340- # mean(x)*mean(y)
341- mean_y = mean (y )
342- mean_x_times_y = mean (x * y )
343- tm .assert_equal (
344- cov_x_y , mean_x_times_y - (mean_x * mean_y )
345- )
279+ def _test_moments_consistency_std_data (
280+ self , std_unbiased , var_unbiased , std_biased , var_biased
281+ ):
282+ for (x , is_constant , no_nans ) in self .data :
283+ for (std , var ) in [(std_biased , var_biased ), (std_unbiased , var_unbiased )]:
284+ var_x = var (x )
285+ std_x = std (x )
286+ assert not (var_x < 0 ).any ().any ()
287+ assert not (std_x < 0 ).any ().any ()
288+
289+ # check that var(x) == std(x)^2
290+ tm .assert_equal (var_x , std_x * std_x )
291+
292+ def _test_moments_consistency_cov_data (
293+ self , cov_unbiased , var_unbiased , cov_biased , var_biased
294+ ):
295+ for (x , is_constant , no_nans ) in self .data :
296+ for (cov , var ) in [(cov_biased , var_biased ), (cov_unbiased , var_unbiased )]:
297+ var_x = var (x )
298+ assert not (var_x < 0 ).any ().any ()
299+ if cov :
300+ cov_x_x = cov (x , x )
301+ assert not (cov_x_x < 0 ).any ().any ()
302+
303+ # check that var(x) == cov(x, x)
304+ tm .assert_equal (var_x , cov_x_x )
305+
306+ def _test_moments_consistency_series_data (
307+ self ,
308+ corr ,
309+ mean ,
310+ std_biased ,
311+ std_unbiased ,
312+ cov_unbiased ,
313+ var_unbiased ,
314+ var_biased ,
315+ cov_biased ,
316+ ):
317+ for (x , is_constant , no_nans ) in self .data :
318+ if isinstance (x , Series ):
319+ y = x
320+ mean_x = mean (x )
321+ if not x .isna ().equals (y .isna ()):
322+ # can only easily test two Series with similar
323+ # structure
324+ pass
325+
326+ # check that cor(x, y) is symmetric
327+ corr_x_y = corr (x , y )
328+ corr_y_x = corr (y , x )
329+ tm .assert_equal (corr_x_y , corr_y_x )
330+
331+ for (std , var , cov ) in [
332+ (std_biased , var_biased , cov_biased ),
333+ (std_unbiased , var_unbiased , cov_unbiased ),
334+ ]:
335+ var_x = var (x )
336+ std_x = std (x )
337+
338+ if cov :
339+ # check that cov(x, y) is symmetric
340+ cov_x_y = cov (x , y )
341+ cov_y_x = cov (y , x )
342+ tm .assert_equal (cov_x_y , cov_y_x )
343+
344+ # check that cov(x, y) == (var(x+y) - var(x) -
345+ # var(y)) / 2
346+ var_x_plus_y = var (x + y )
347+ var_y = var (y )
348+ tm .assert_equal (cov_x_y , 0.5 * (var_x_plus_y - var_x - var_y ))
349+
350+ # check that corr(x, y) == cov(x, y) / (std(x) *
351+ # std(y))
352+ std_y = std (y )
353+ tm .assert_equal (corr_x_y , cov_x_y / (std_x * std_y ))
354+
355+ if cov is cov_biased :
356+ # check that biased cov(x, y) == mean(x*y) -
357+ # mean(x)*mean(y)
358+ mean_y = mean (y )
359+ mean_x_times_y = mean (x * y )
360+ tm .assert_equal (cov_x_y , mean_x_times_y - (mean_x * mean_y ))
346361
347362 def _check_pairwise_moment (self , dispatch , name , ** kwargs ):
348363 def get_result (obj , obj2 = None ):
0 commit comments