代码之家  ›  专栏  ›  技术社区  ›  mayen

Z-Score作为差异值的度量

  •  0
  • mayen  · 技术社区  · 1 年前

    我一直在尝试使用z-score来过滤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))
    
    1 回复  |  直到 1 年前
        1
  •  2
  •   Federicofkt    1 年前

    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)