Методологии или алгоритмы заполнения недостающих данных - PullRequest
4 голосов
/ 25 февраля 2011

Я имею дело с наборами данных с отсутствующими данными и должен иметь возможность заполнять пробелы вперед и назад.Так, например, если у меня есть данные с 1 января 2000 года по 31 декабря 2010 года, и некоторые дни пропущены, когда пользователь запрашивает интервал времени, который начинается до, заканчивается после или охватывает отсутствующие точки данных, мне нужно "заполните эти пропущенные значения.

Есть ли подходящий термин для обозначения этой концепции заполнения данных?Импутация - это один термин, хотя я не знаю, является ли он «термином» для него.

Я предполагаю, что существует множество алгоритмов и методологий для заполнения пропущенных данных (используйте последнее измеренное значение, используя медиану / среднее значение / перемещениесреднее и т. д. между 2 известными числами и т. д.

Кто-нибудь знает правильный термин для этой проблемы, любые онлайн-ресурсы по этой теме или в идеале ссылки на реализации некоторых алгоритмов с открытым исходным кодом (желательно C #, но любой язык будетбыть полезным)

Ответы [ 3 ]

2 голосов
/ 25 февраля 2011

Используемый вами алгоритм будет во многом зависеть от самих данных, размера пробелов по сравнению с доступными данными и его предсказуемости на основе существующих данных. Он также может включать другую информацию, которую вы, возможно, знаете о том, чего не хватает, как это обычно бывает в статистике, когда ваши фактические данные могут не отражать то же распределение, что и юниверс по определенным категориям.

Линейная и кубическая интерполяция - типичные алгоритмы, которые нетрудно реализовать, попробуйте поискать их в Google.

Вот хороший пример с кодом:

http://paulbourke.net/miscellaneous/interpolation/

Контекст обсуждения в этой ссылке - графика, но понятия применимы повсеместно.

2 голосов
/ 25 февраля 2011

Вы ищете термин интерполяция . (обязательная вики-ссылка)

Вы запрашиваете решение C # с наборами данных, но вам также следует рассмотреть возможность сделать это на уровне базы данных, подобном этому .

Простой, грубый подход в C # может заключаться в построении массива последовательных дат с начальными и конечными значениями в качестве значений min / max. Затем используйте этот массив, чтобы объединить «интерполированные» значения даты в ваш набор данных, вставив строки, в которых нет соответствующей даты для вашего массива даты в наборе данных.

Вот пост SO , который приближается к тому, что вам нужно: интерполяция пропущенных дат с помощью C #. Не существует принятого решения, но чтение вопроса и попытки ответить на него могут дать вам представление о том, что вам нужно делать дальше. Например. Используйте данные DateTime в терминах Ticks (тип длинного значения), а затем используйте схему интерполяции для этих данных. Преобразовать интерполированные длинные значения в значения DateTime.

0 голосов
/ 25 февраля 2011

В целях подачи статистических тестов хорошим поисковым термином является вменение - например, http://en.wikipedia.org/wiki/Imputation_%28statistics%29

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...