Стандартная ошибка значений в массиве, соответствующих значениям в другом массиве - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть массив, который содержит числа, которые являются расстояниями, и другой, который представляет определенные значения на этом расстоянии.Как рассчитать стандартную ошибку всех данных при фиксированном значении расстояния?

Стандартной ошибкой является стандартное отклонение / квадратный корень из числа наблюдений.

например, расстояния (d):

[1 1 14 6 1 12 14 6 6 7 4 3 7 9 1 3 3 6 5 8]

например, данные, соответствующие вводу расстояний:

, поэтому значение = 3,3 при d = 1;значение = 2,1 при d = 1;значение = 3,5 при d = 14;и т. д.

[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 голосов
/ 13 декабря 2018

Мне трудно сказать, как именно вы хотите, чтобы все было структурировано, но я бы порекомендовал словарь, чтобы вы могли знать, какой результат связан с каким значением ключа.Если ваши данные выглядят так:

>>> 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}
0 голосов
/ 13 декабря 2018

Помогает ли это?

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)))
...