Рассчитать линию тренда, когда ось X использует даты - PullRequest
2 голосов
/ 17 июня 2009

Пост о расчете линий тренда на точечной диаграмме ( Как рассчитать линию тренда для графика? ) весьма полезен, но мне интересно, как можно найти линию тренда на график, где ось x является полем DateTime, а не целым числом. Например, рассмотрим случай составления графика количества подписчиков на список рассылки с течением времени:

1 января: 100 подписчиков
Янв 2: 105 подписчиков
5 января: 120 подписчиков
10 января: 117 подписчиков
и т.д ...

Проблема, с которой я сталкиваюсь, состоит в том, чтобы вычислить часть 'run' (delta x) этого ... так как интервалы не будут равномерно распределены, мы не можем просто предположить, что проходит одна единица времени между каждым измерением. У меня есть предчувствие, что мне придется выработать какой-то масштаб, но я застрял там.

Может кто-нибудь объяснить, как рассчитать линию тренда, когда ось X является полем DateTime? (Если вы разместите пример кода, C #, VB.NET или Java будут наиболее полезны!)

Ответы [ 4 ]

3 голосов
/ 17 июня 2009

вы всегда можете преобразовать дату в целое число

Интернет приводит этот пример:

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 голос
/ 17 июня 2009

Вам нужно будет выполнить своего рода линейную интерполяцию. Вам необходимо преобразовать даты и время в линейный масштаб. Хорошей новостью является то, что вы можете выбрать эту шкалу. Так что посчитайте, сколько минут, или секунд, или часов ... прошло с начала вашего сюжета. Затем вы можете использовать это как часть «запуска».

В вашем примере мы можем выходить из дней:

1 января: 0 дней, 100 подписчиков Янв 2: 1 день, 105 подписчиков 5 января, 4 дня, 120 подписчиков янв 10: 9 дней, 117 подписчиков

0 голосов
/ 17 июня 2009

Укажите дату происхождения и рассмотрите ее x = 1. Выберите часы или 8-часовой период, если вы хотите быть более конкретным.

The first day:
jan 1, 2006 -> x = 1
45 days later
February 13th?? -> x = 45
2 years later:
jan 1, 2008 -> x = 730
0 голосов
/ 17 июня 2009

Даже если ваши сэмплы расположены неравномерно, ваша линия тренда все еще может иметь постоянный «пробег».

Например, вы можете выбрать интервалы в 1 неделю. В этом случае возьмите среднее число подписчиков за 1,2 и 5 января и наметьте точку 7 января. Затем возьмите среднее для 10 и 13 января и наметьте точку 14 января и т. Д.

Если у вас много исторических данных, используйте интервалы в 1 месяц или, может быть, квартальные данные лучше подойдут для ваших данных.

...