Как найти биннинг для сильно искаженных дистрибутивов - PullRequest
0 голосов
/ 24 июня 2019

Мне нужно создать некоторые тестовые данные для помещения в мою тестовую базу данных.Я не могу использовать живые данные, и когда я хочу проверить свою логику, мне нужно иметь «правдоподобные» данные в моей тестовой базе данных.Допустим, я работаю только с одной таблицей T (мне нужно будет сделать то же самое для многих таблиц), которая имеет несколько столбцов, некоторые числовые и некоторые категориальные.Для категориальных «измерений» легко создать «правдоподобные строки»: если, например, у меня есть 3 категории, и я вижу, что 50% реальных строк имеют категорию A, 30% имеют категорию B и 20% имеют категорию C, тогдадля каждой строки теста, которую я создаю, я могу сгенерировать случайное число и: если оно меньше 0,5, я выбираю A, если оно выше 0,8, я выбираю C, B в противном случае.

Я хотел бы получить аналогичноеметод для непрерывных измерений, и с этой целью я подумал о биннинге.Проблема в том, что я не знаю, сколько лотков использовать, и было бы лучше использовать лотки разных размеров.В идеале я хотел бы, чтобы корзина включала все последовательные значения, которые появляются с одинаковой частотой.К сожалению, у меня есть несколько крайне искаженных дистрибутивов.Пример: столбец C имеет значение 0 1,4 миллиона раз, а в оставшихся строках 0,1 миллиона он принимает 80К различных значений с частотами в диапазоне от 1 до 250.

Мне нужен алгоритм, который может обрабатывать такие экстремальные ситуации безнеобходимость вмешательства человека.Возможное распределение здесь будет следующим: для каждой строки взять число от 1 до 15. Если оно меньше 15, значение тестового столбца равно 0, в противном случае это случайное значение от 0 до максимального значенияколонка.Я не уверен, что это хорошее представление таблицы, и, прежде всего, мне нужно найти это распределение автоматически для возможных реальных распределений стоимости.

Я уже пробовал с правилом Фридмана – Диакониса, но это даетмне бины шириной 0, потому что IQR равен 0. Есть ли другие алгоритмы, которые я мог бы использовать?

Большое спасибо

...