Я ищу статистически обоснованный способ нормализации данных гистограммы, чтобы сумма каждой точки была равна 1 и прошла тест Колмогорова-Смирнова для 2 выборок с использованием python.
Данные, которые у меня есть, эквивалентны использованию numpy .histogram () в данных образца, но у меня нет доступа к данным образца.
Сейчас я просто применяю что-то вроде:
norm_x = x i / sum (x)
Это дает мне массив, который суммирует 1, но терпит неудачу scipi.stats.ks_2samp (x, norm_x), потому что пропорция "вероятностей" не поддерживается.
Я смотрел на использование скейлеров Scikitlearn (MinMaxScaler, RobustScaler, Normalizer и т. Д. c ...), но, похоже, они требуют исходных данных, а не массива точек, к которым у меня есть доступ.
Изменить для ясности:
У меня есть таблица pandas, которая представляет данные гистограммы, аналогичные:
Counts
+-----+-------+
| Bin | Count |
+-----+-------+
| .01 | 23 |
| .02 | 48 |
| .03 | 32 |
| .04 | 62 |
| .05 | 42 |
| .06 | 15 |
| .07 | 6 |
| .08 | 0 |
| .09 | 0 |
| .1 | 0 |
+-----+-------+
Я хочу нормализовать это так, что сумма столбца 'Count' равна 1, а тест Колмогорова-Смирнова показывает, что они получены из одного и того же распределения.
Сейчас я делаю что-то вроде:
normalized = counts.apply(lambda x: x['Count'] / x['Count'].sum())
Это не всегда дает результат, который проходит тест KS.