Обновите массив, чтобы уменьшить дисперсию

#math #optimization #statistics #standard-deviation #variance

Вопрос:

У меня есть массив X со значениями с плавающей точкой и фиксированным размером. Мне нужно добавить p (значение с плавающей точкой) к любому элементу X так, чтобы дисперсия X уменьшалась.

Как мне выбрать нужный элемент?

Напр.:

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

и

 p = 0.5
 

Что же нового X ?

Комментарии:

1. Это вопрос статистики, а не вопрос программирования.

Ответ №1:

Дисперсия-это показатель того, насколько значения далеки от среднего.

Таким образом, вы можете оценить, какое измененное значение приводит к большему уменьшению этой меры.

 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
 

Ответ №2:

Дисперсия определяется тем, насколько далеки элементы от среднего значения. Если добавление 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)