#python #statistics #distribution
Вопрос:
Я хочу рассчитать сходство или расстояние между двумя наборами образцов.
Каждый набор указывает время игры пользователя.
Например, предположим, что есть два пользователя, и первый пользователь (X1) играет пять раз, а другой играет четыре раза четыре раза следующим образом.
X1={1,2,3,1,2}
X2={1,2,3,4}
Я хочу рассчитать сходство или расстояние между X1
ними и X2
с помощью python. Как я могу это рассчитать?
Примечание 1. порядок не важен.
Я имею в виду, что {1,2,3,4} и {4,1,2,3} следует рассматривать как один и тот же набор.
Примечание 2. элемент (т. е. 1, 2, 3, 4) не является фиксированным. Я имею в виду, что время воспроизведения-это непрерывная переменная.
Комментарии:
1. Во-первых, вы должны определить проблему: являются ли эти наборы образцов или неупорядоченные коллекции? Набор не имеет повторяющихся значений. Поскольку вы указываете длину как проблему, я предполагаю, что у вас есть коллекция.
2. Во-вторых, вы должны определить, что вы подразумеваете под расстоянием между двумя наборами. Поскольку вы не используете какую-либо стандартную метрику расстояния, вы должны определить свою собственную. Мы мало что можем для вас сделать, пока вы не предоставите этот показатель.
3. Вам также придется объяснить, что вы подразумеваете под коллекциями, являющимися «непрерывными случайными выборками», с точки зрения этой метрики расстояния. В целом, вы, похоже, ищете справку по дизайну (обычно это не проблема переполнения стека) для парадигмы проблемы, которую вы еще не указали.
Ответ №1:
Ну, вы могли бы использовать тест образцов Колмогорова-Смирнова 2, из https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ks_2samp.html, описанный здесь
Это должно работать для образцов разного размера.
В Python, например
import scipy.stats as st
x = np.random.normal(0,1,1000)
y = np.random.normal(0,1,1000)
z = np.random.normal(1.1,0.9,1000)
st.ks_2samp(x, y)
st.ks_2samp(x, z)
Он возвращает статистику D (а также значение p), которое является абсолютным максимальным расстоянием (супремумом) между CDFS двух выборок. Это твоя дистанция. Подробности смотрите здесь
Комментарии:
1. Ваш пример был бы более убедительным, если бы вы создали разные размеры выборки.
2. Спасибо за ваш ответ. Это тот ответ, которого я хочу.