2009-06-17 8 views
2

Le message sur le calcul des lignes de tendance sur un nuage de points (How do I calculate a trendline for a graph?) est très utile, mais je suis curieux de savoir comment trouver une ligne de tendance sur un graphique où x -axis est un champ DateTime plutôt qu'un entier. Par exemple, considérons le cas de tracer le nombre d'abonnés à une liste de diffusion au fil du temps:Calculer une ligne de tendance lorsque l'axe des x utilise des dates

1 janvier: 100 abonnés
2 janvier: 105 abonnés
Jan 5: 120 abonnés
Jan 10: 117 abonnés
etc ...

Le problème que je rencontre est de trouver la partie 'run' (delta x) de cette ... puisque les intervalles ne seront pas espacés uniformément, nous ne pouvons pas supposer une seule unité de temps passant entre chaque mesure. J'ai l'intuition que je vais devoir travailler sur une sorte d'échelle, mais je suis coincé là-bas.

Quelqu'un peut-il expliquer comment calculer une ligne de tendance lorsque l'axe des x est un champ DateTime? (! Si vous publiez un exemple de code, C#, VB.NET, ou Java serait le plus apprécié)

Répondre

1

Vous devrez effectuer une sorte d'interpolation linéaire. Vous devez convertir les dates et les heures en une échelle linéaire. Les bonnes nouvelles sont que vous obtenez de choisir cette échelle. Calculez donc le nombre de minutes, de secondes ou d'heures écoulées depuis le début de votre intrigue. Vous pouvez ensuite utiliser cela comme la partie "exécuter".

Dans votre exemple, nous pouvons partir de jours:

Jan 1: 0 jours, 100 abonnés Jan 2: 1 jour, 105 abonnés Jan 5: 4 jours, 120 abonnés 10 janvier: 9 jours, 117 abonnés

+0

Ok, donc j'étais sur la bonne voie après tout :) Je pense que cette approche fonctionnera très bien, merci! –

3

vous pouvez toujours convertir la date à un nombre entier

le web donne cet exemple:

DateTime given = new DateTime(2008, 7, 31, 10, 0, 0); 
TimeSpan t = given.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, 0)); 
long unixTime = (long) t.TotalSeconds; 
+1

-1, réponse inutile qui a assumé le Cole est un idiot –

+0

+1, Il n'y a rien de mal avec cette réponse. C'est complètement correct. –

+0

-1 retiré, édité répondre beaucoup mieux =) –

0

Même si vos échantillons ne sont pas uniformément espacés, votre courbe de tendance peut toujours avoir une "exécution" constante.

Par exemple, vous pouvez choisir des intervalles d'une semaine. Dans ce cas, prendre le nombre moyen d'abonnés pour Janvier 1,2, & 5 et tracer un point le 7 janvier. Prochaine prendre la moyenne pour Janvier 10 & 13, et tracer un point sur Janvier 14. etc.

Si vous avez beaucoup de données historiques, utilisez des intervalles d'un mois, ou peut-être trimestriel serait mieux adapté à vos données.

0

Spécifiez une date d'origine et considérez-la x = 1. Choisissez des heures ou des périodes de 8 heures si vous souhaitez être plus précis.

The first day: 
jan 1, 2006 -> x = 1 
45 days later 
February 13th?? -> x = 45 
2 years later: 
jan 1, 2008 -> x = 730 
Questions connexes