J'ai quelques semaines de données avec des unités vendues données
xs[weeks] = [1,2,3,4]
ys['Units Sold'] = [1043,6582,5452,7571]
à partir de la série donnée, nous pouvons voir que, même s'il existe une chute de XS [2] à XS [3], mais dans l'ensemble, la tendance augmente. Comment détecter la tendance dans le petit jeu de données de la série TIME.
Trouver une pente pour la ligne est la meilleure façon? Et comment calculer l'angle de pente d'une ligne dans Python?
J'ai traversé le même problème que vous êtes confronté aujourd'hui. Afin de détecter la tendance, je n'ai pas pu trouver une fonction spécifique pour gérer la situation.
J'ai trouvé une fonction vraiment utile, c'est-à-dire numpy.polyfit ()
numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)
[Vérifiez cette documentation officielle]
Vous pouvez utiliser la fonction comme celle-ci
def trenddetector(list_of_index,array_of_data, order=1):
result = np.polyfit(list_of_index, list(data), order)
slope = result[-2]
return float(slope)
cette fonction renvoie une valeur de flotteur qui indique la tendance de vos données et que vous pouvez aussi anlayez-le par quelque chose comme ça
par exemple,
si la pente est une valeur de + ve -> tendance croissante
si la pente est une valeur de -ve -> Tendance décroissante
si la pente est une valeur zéro -> aucune tendance
jouez avec cette fonction et découvrez le seuil correct selon votre problème et donnez-le comme une condition.
Exemple de code pour votre solution
import numpy as np
def trendline(index,data, order=1):
coeffs = np.polyfit(index, list(data), order)
slope = coeffs[-2]
return float(slope)
index=[1,2,3,4]
List=[1043,6582,5452,7571]
resultent=trendline(index,List)
print(resultent)
[~ # ~] résultat [~ # ~]
1845.3999999999999
Selon cette sortie, le résultat est beaucoup plus grand que zéro, ce qui montre que vos données augmentent régulièrement.
Une approche pourrait être d'utiliser une moyenne mobile (beaucoup de variations de ceci, vous pouvez voir EMA ou SMA projetée autour de l'EMA ou SMA) qui examine l'étape de l'heure actuelle et N Nombre d'étapes précédentes, en moyenne et utilise cela comme une sorte de ' Valeur lissée. Cela vous donnera une meilleure indication de la manière dont les données se déplacent réellement, car une faible diminution ne va pas avoir un impact dramatique sur le gradient de la ligne.
Selon le domaine de votre problème, il peut également être utile de vérifier certaines statistiques utilisées dans le secteur financier, telles que le DMI (indicateur de mouvement directionnel) ou la MACD.
J'espère que cela t'aides