#r
#r
Вопрос:
Давайте просто скажем, что у меня есть следующая диаграмма рассеяния:
set.seed(665544)
n <- 100
x <- cbind(
x=runif(10, 0, 5) rnorm(n, sd=0.4),
y=runif(10, 0, 5) rnorm(n, sd=0.4)
)
plot(x)
Я хочу разделить эту диаграмму рассеяния на квадратные ячейки указанного размера, а затем подсчитать, сколько точек попадает в каждую уникальную ячейку. Это, по сути, даст мне значение локальной плотности этой ячейки. Каков наилучший способ сделать это? Есть ли пакет R, который может помочь? Возможно, метод 2D-гистограммы, как в Matlab?
Краткие пояснения:
1.) Я бы хотел, чтобы функция / метод принимал следующие 3 аргумента: размеры общей площади, размеры ячейки (ИЛИ количество ячеек) и данные. Тогда, возможно, будет выведена матрица, в которой каждое значение соответствует количеству точек в ячейке.
2.) Вопрос: Почему вы хотите использовать этот метод для определения локальной плотности? Разве это не намного проще:
library(dbscan)
pointdensity(x, eps = .1, type = "frequency")
О: Этот метод вычисляет локальную плотность вокруг каждой точки. Хотя это простое определение локальной плотности, оно очень затрудняет (требуются алгоритмы оптимизации) назначение новых данных таким образом, чтобы они соответствовали распределению локальной плотности исходного набора данных.
Комментарии:
1. Для подсчета
gplot::hist2d
, для построенияggplot2::geom_bin2d
графика. Или базовый способ R без дополнительных пакетов: используйтеcut
для каждого измерения иtable
результатов.