расчет расчетной дисперсии с numpy вызывает ошибку с недопустимым значением - PullRequest
1 голос
/ 30 марта 2020

При попытке вычислить среднее значение выборки для некоторых данных на основе количества выборок (сначала для 1 выборки, затем для 2 и т. Д.) Я сталкиваюсь с этой проблемой:

/usr/local/lib/python3.6/dist-packages/numpy/core/fromnumeric.py:3584: RuntimeWarning: Degrees of freedom <= 0 for slice
  **kwargs)
/usr/local/lib/python3.6/dist-packages/numpy/core/_methods.py:209: RuntimeWarning: invalid value encountered in double_scalars
  ret = ret.dtype.type(ret / rcount)

при использовании numpy функции «np.var ()» для массива данных.

моя единственная функция такая:

def estimate_var(lam, n):
    np.random.seed(7)
    data = np.random.exponential(scale=1/lam, size=n)
    new_data = [np.var(data[:index + 1], ddof=1) for index in range(len(data))]
    return new_data

(4-я строка вызывает проблему)

1 Ответ

0 голосов
/ 31 марта 2020

Это не ошибка, это предупреждение. Вы получаете предупреждение, потому что вы берете дисперсию (np.var) массива, который имеет только 1 значение, которое не существует.

Когда index=0 в начале вашего понимания списка, вы принимаете дисперсия data[:0+1], которая является просто одним значением.

Если вы хотите взять дисперсию данных, просто выполните np.var(data)

...