我有一个数组,其中包含作为距离的数字,另一个数组表示该距离处的某些值。如何以固定的距离值计算所有数据的标准误差?
标准误差是标准差/观察数的平方根。
例如距离(d):
[1 1 14 6 1 12 14 6 6 7 4 3 7 9 1 3 3 6 5 8]
例如对应于距离输入的数据:
因此在d = 1时值为3.3;在d = 1时值= 2,1;在d = 14时值为3.5;等。
[3.3 2.1 3.5 2.5 4.6 7.4 2.6 7.8 9.2 10.11 14.3 2.5 6.7 3.4 7.5 8.5 9.7 4.3 2.8 4.1]
例如,在距离d = 6处,我应计算标准误差2.5、7.8、9.2和4.3,这是这些值的标准偏差除以值总数的平方根(在这种情况下为4 )。
我使用了下面的代码,但是我不知道如何将结果除以每个距离的值总数的平方根:
import numpy as np
result = []
for d in set(key):
result.append(np.std[dist[i] for i in range(len(key)) if key[i] == d])
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
有帮助吗?
for d in set(key):
result.append(np.std[dist[i] for i in range(len(key)) if key[i] == d] / np.sqrt(dist.count(d)))
答案 1 :(得分:0)
我很难说清楚要如何组织事物,但是我建议使用字典,这样您就可以知道哪个结果与哪个键值相关。如果您的数据是这样的:
>>> key
array([ 1, 1, 14, 6, 1, 12, 14, 6, 6, 7, 4, 3, 7, 9, 1, 3, 3,
6, 5, 8])
>>> values
array([ 3.3 , 2.1 , 3.5 , 2.5 , 4.6 , 7.4 , 2.6 , 7.8 , 9.2 ,
10.11, 14.3 , 2.5 , 6.7 , 3.4 , 7.5 , 8.5 , 9.7 , 4.3 ,
2.8 , 4.1 ])
您可以按照以下说明使用字典理解来建立字典:
result = {f'distance_{i}':np.std(values[key==i]) / np.sqrt(sum(key==i)) for i in set(key)}
>>> result
{'distance_1': 1.0045988005169029, 'distance_3': 1.818424226264781, 'distance_4': 0.0, 'distance_5': 0.0, 'distance_6': 1.3372079120316331, 'distance_7': 1.2056170619230633, 'distance_8': 0.0, 'distance_9': 0.0, 'distance_12': 0.0, 'distance_14': 0.3181980515339463}