数组中值的标准错误对应于另一个数组中的值

时间:2018-12-12 22:10:46

标签: python numpy statistics standard-error

我有一个数组,其中包含作为距离的数字,另一个数组表示该距离处的某些值。如何以固定的距离值计算所有数据的标准误差?

标准误差是标准差/观察数的平方根。

例如距离(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])

任何帮助将不胜感激。谢谢!

2 个答案:

答案 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}