У меня есть массив times
, содержащий массивы временных меток, которые могут быть сгенерированы следующим образом.
a = [
["15:50:46", "15:50:47", "15:50:46", "15:50:47"],
["15:50:46", "15:50:46", "15:50:45", "15:50:45"],
["15:50:46", "15:50:46", "15:50:47", "15:50:47", "15:50:50", "15:50:49",
"15:50:49", "15:50:48", "15:50:48", "15:50:50", "15:50:53", "15:50:52",
"15:50:53", "15:50:51", "15:50:52", "15:50:51"],
["15:50:46", "15:50:46", "15:50:45", "15:50:45", "15:50:48", "15:50:48",
"15:50:49", "15:50:49", "15:50:47", "15:50:47", "15:50:51", "15:50:52",
"15:50:52", "15:50:51", "15:50:50", "15:50:50"],
["15:50:46", "15:50:47", "15:50:51", "15:50:47", "15:50:50", "15:50:51",
"15:50:50", "15:50:46", "15:50:49", "15:50:48", "15:50:48", "15:50:44",
"15:50:49", "15:50:44", "15:50:45", "15:50:45"],
["15:50:46", "15:50:46", "15:50:45", "15:50:45", "15:50:42", "15:50:43",
"15:50:42", "15:50:44", "15:50:43", "15:50:48", "15:50:49", "15:50:49",
"15:50:48", "15:50:44", "15:50:47", "15:50:47"],
["15:50:46", "15:50:47", "15:50:46", "15:50:43", "15:50:47", "15:50:45",
"15:50:44", "15:50:44", "15:50:48", "15:50:48", "15:50:45", "15:50:41",
"15:50:43", "15:50:42", "15:50:42"],
["15:50:46", "15:50:47", "15:50:47", "15:50:43", "15:50:43", "15:50:42",
"15:50:46", "15:50:44", "15:50:45", "15:50:40", "15:50:40", "15:50:41",
"15:50:45", "15:50:42", "15:50:44", "15:50:41"],
["15:50:29", "15:50:26", "15:50:29"]
]
require 'time'
times = a.map { |b|
b.map { |s| DateTime.strptime('2019-01-24 '+s, '%Y-%m-%d %H:%M:%S').to_time } }
#=> [[2019-01-24 15:50:46 +0000, 2019-01-24 15:50:47 +0000,
# 2019-01-24 15:50:46 +0000, 2019-01-24 15:50:47 +0000]
# ...
# [2019-01-24 15:50:29 +0000, 2019-01-24 15:50:26 +0000,
# 2019-01-24 15:50:29 +0000]]
Каждый элемент в массиве верхнего уровня является точкой, каждая точка имеет несколько временных отметок, которые она оценивает. Однако для каждой точки может использоваться только одна временная метка. Цель состоит в том, чтобы найти значение, которое в сочетании с допуском (скажем, 3 секунды для этого примера) будет содержать наибольшее количество точек. Оптимальное значение на самом деле не может быть одной из точек, так же как прямая линия на графике не может касаться каких-либо точек.
Я подумал об использовании декартовой системы для определения среднего (среднего или среднего) и стандартного отклонения данных, но это может быть медленным и все же не дать мне правильный результат.
Заранее спасибо.