@@ -252,43 +252,15 @@ def _test_moments_consistency_var_debiasing_factors(
252
252
var_debiasing_factors_x = var_debiasing_factors (x )
253
253
tm .assert_equal (var_unbiased_x , var_biased_x * var_debiasing_factors_x )
254
254
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
267
257
):
268
-
269
258
for (x , is_constant , no_nans ) in self .data :
270
259
count_x = count (x )
271
260
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 ]:
279
262
var_x = var (x )
280
- std_x = std (x )
281
263
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 )
292
264
293
265
if var is var_biased :
294
266
# check that biased var(x) == mean(x^2) - mean(x)^2
@@ -304,45 +276,88 @@ def _test_moments_consistency(
304
276
expected [count_x < 2 ] = np .nan
305
277
tm .assert_equal (var_x , expected )
306
278
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 ))
346
361
347
362
def _check_pairwise_moment (self , dispatch , name , ** kwargs ):
348
363
def get_result (obj , obj2 = None ):
0 commit comments