2010-04-07 18 views
0

J'essaie de trouver la ligne de tendance linéaire pour un ensemble de données. L'ensemble contient des paires de dates (valeurs x) et de scores (valeurs y). J'utilise une version de this code comme base de mon algorithme.Régression linéaire et dates Java

Les résultats que je reçois sont de quelques ordres de grandeur. Je suppose qu'il y a un problème avec l'arrondi d'erreur ou de débordement parce que j'utilise la méthode getTime de Date qui vous donne un grand nombre de millisecondes. Quelqu'un at-il une suggestion sur la façon de minimiser les erreurs et de calculer les bons résultats?

Répondre

2

Peut-être que cela aide à transformer la valeur longue que Date retourne en quelque chose de plus petit.

Si vous n'avez pas besoin de précision milliseconde, vous pouvez simplement diviser par 1000. Peut-être que vous ne même pas besoin de secondes, diviser par 60 autres

En outre, la valeur est ancrée au 1er Janvier 1970. Si vous avez seulement besoin de dates plus récentes, vous pouvez soustraire le décalage pour le re-base en 2000.

L'idée est de rendre les différences dans les données plus significatives numériquement (en pourcentage).

0

Le type d'un unix timestamp est un nombre entier et vous lisez des données en double. Selon les tailles relatives, vous êtes presque obligé d'avoir des ennuis. Conservez les heures comme des entiers ou convertissez l'heure en quelque chose de plus approprié à votre problème..

+0

En fait, getTime renvoie un long, le nombre de millisecondes depuis l'époque Unix. Et cet algorithme nécessite des valeurs non-entières (par exemple la moyenne), donc je ne pense pas que les garder comme int ou s est une option. –