更新数组以减少方差
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
我有一个具有浮点值和固定大小的数组 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