更新数组以减少方差

Update Array to reduce Variance

我有一个具有浮点值和固定大小的数组 X。我需要将 p (浮点值)添加到 X 的任何元素,以便 X 的方差减少。

如何 select 正确的元素?

例如:

X = [0,1.2,1.7,2.1,1.7,0,1.3] 

p = 0.5

什么是新的X

方差由元素与平均值的距离决定。如果向元素添加 p 使该元素更接近均值,那么您将降低方差。例如:

from statistics import variance, mean

X = [0,1.2,1.7,2.1,1.7,0,1.3] 
p = .5

def change(X, p):
    mu = mean(X)
    for n in X:
        if abs(mu - n) > abs(mu - (n + p)):
            yield n + p
        else:
            yield n


variance(X), variance(change(X, p))
# (0.6961904761904762, 0.3747619047619048)

方差是衡量值与均值的差距。

因此,您可以评估哪个更改的值使该度量的减少幅度更大。

import numpy as np
def Reduce_variance(X, p):
    #Calculate mean
    mean = np.mean(X)
    #Calculate the variance terms
    x=(np.array(X)-mean)**2
    #Calculate the variance terms added p
    y=(np.array(X)+p-mean)**2
    #Calculate the difference
    z=x-y
    #Check the index of the best improvement
    index=np.where(z==max(z))[0][0]
    #Replace
    X[index]=X[index]+p
    return X