Если использовать процедуру scipy.mstats.theilslopes для набора данных с отсутствующими значениями, результаты нижней и верхней границ для оценки наклона будут неверными. Верхняя граница часто/всегда (?) NaN, а нижняя граница просто неверна. Это происходит из-за того, что подпрограмма theilslopes вычисляет индекс в отсортированном массиве склонов, и этот массив содержит наклоны отсутствующих значений, которых не должно быть.
Решение состоит в том, чтобы удалить пропущенные значения перед анализом, но это нигде не задокументировано.
Чтобы продемонстрировать проблему, вот простой фрагмент кода: импортируйте numpy как np из scipy.stats import mstats
x = np.arange(12)
y = np.array([28.9, 26.2, 27.2, 26.5, 28.4, 25.3, 26.1, 24.8, 27.7,
np.nan, np.nan, 29.6])
slope, intercept, lo_slope, up_slope = mstats.theilslopes(y, x,
alpha=0.1)
print "incorrect: ", slope, lo_slope, up_slope
idx = [0, 1, 2, 3, 4, 5, 6, 7, 8, 11]
x = x[idx] # equivalent to pandas series.dropna()
y = y[idx]
slope, intercept, lo_slope, up_slope = mstats.theilslopes(y, x,
alpha=0.1)
print "correct: ", slope, lo_slope, up_slope