Z-Score 作为分歧值的测量

问题描述 投票:0回答:1

我一直在尝试使用 z 分数来过滤 python 中的奇数值。对于计算,我使用了 scipy 提供的版本,而不是使用 numpy 以及 Mean 和 std 函数自己计算。结果是一样的。我认为 -1 到 1 的 p 值应该会产生 68.1% 的样本,或者也许我的概念是错误的,它仅代表值本身。

但是,在下面的示例中,我期望输出接近 0.682,而不是 0.57。

import numpy
from scipy import stats

arr = numpy.array(range(1, 1000))

col_z_score = stats.zscore(arr)

print((~numpy.bitwise_or(-1 >= col_z_score, 1 <= col_z_score)).sum() / len(col_z_score))
print((numpy.bitwise_and(1 >= col_z_score, -1 <= col_z_score)).sum() / len(col_z_score))
python scipy statistics
1个回答
0
投票

68.1% 规则适用于正态分布。

arr = np.array(range(1, 1000))
遵循均匀分布,因此为 57%。

要生成正态分布,您可以使用以下方法:

arr = np.random.normal(0, 1, 1000)

此外,在这种情况下,

bitwise_or
bitwise_and
是错误的,您应该使用
logical_or
logical_and

within_range = np.logical_and(col_z_score >= -1, col_z_score <= 1)

proportion_within_range = within_range.sum() / len(col_z_score)
© www.soinside.com 2019 - 2024. All rights reserved.