2010-04-07 3 views
0

Я пытаюсь найти линейную линию тренда для набора данных. Набор содержит пары дат (значения x) и оценки (значения y). Я использую версию this code в качестве основы для моего алгоритма.Линейная регрессия и Java Даты

Результаты, которые я получаю, находятся на несколько порядков. Я предполагаю, что есть некоторая проблема с ошибкой округления или переполнением, потому что я использую метод getTime Date, который дает вам огромное количество миллисекунд. Есть ли у кого-нибудь предложение о том, как свести к минимуму ошибки и вычислить правильные результаты?

ответ

2

Возможно, это помогает преобразовать длинное значение, которое возвращает дата в нечто меньшее.

Если вам не нужна точность миллисекунды, вы можете просто разделить на 1000. Может быть, вам не нужны даже секунды, разделите на другом 60.

Кроме того, значение пришвартовано 1 января 1970 года If вам нужны только более поздние даты, вы могли бы вычесть смещение, чтобы восстановить его в 2000 году.

Вся идея состоит в том, чтобы сделать различия в данных более значимыми численно (в процентах).

0

Тип unix timestamp является целым числом, и вы читаете данные как двойные. В зависимости от относительных размеров вы почти наверняка попадете в беду.

Сохраняйте отметки времени как целые числа или преобразуйте время в нечто более подходящее для вашей проблемы.

+0

На самом деле getTime возвращает длинное число миллисекунд с эпохи Unix. И этот алгоритм требует нецелого значения (например, среднего), поэтому я не думаю, что держать их как 'int's или' long's является опцией. –

Смежные вопросы