@anttoon
Python/Django

Как подсчитать общий тренд?

например дан список [29, 21, 40, 23, 19, 50, 34, 10, 42, 59]
как получить общий тренд вида 'up', 'down' или 'flat' ?
Помогите найти формулу
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
@dmshar
Построить линию линейной регрессии. По знаку коэффициента a ( в некоторых книгах он называется коэффициентом b1, в общем - это коэффициент при Х ) определяется возрастающий или ниспадающий тренд у набора.
В Python, в библиотеке sklearn для этих целей есть функция LinearRegression.
На самом деле, самое трудное - определить то, что вы очевидно назвали "flat" - т.е. отсутствие тренда. Для этого мало определить сам указанный коэффициент, но надо посчитать его доверительный интервал и понять, захватывает-ли он 0.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@anttoon Автор вопроса
Python/Django
Написал такую функцию, для моих целей то что нужно
from sklearn.linear_model import LinearRegression


def get_trand(l):
    data = [[i] for i in l]
    x = [[i] for i in range(len(l))]
    lr = LinearRegression().fit(x, data)
    a = lr.coef_[0][0]
    a = round(a, ndigits=1)

    if a > 0:
        return 'up'
    elif a < 0:
        return 'down'
    else:
        return 'flat'

l = [29, 21, 40, 23, 19, 50, 34, 10, 42, 59]
print(get_trand(l))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы