Моделирование с помощью ядра оценки плотности с переменной базовой сеткой

У меня есть набор данных, который я использую для создания эмпирического распределения вероятностей путем оценки плотности ядра. Сейчас я использую _1 _ из МАССОВОГО пакета. После оценки распределения вероятностей я использую sample < / a> для выборки из срезов 2D-распределения по оси x. Я использую sample так же, как описано здесь. Пример кода будет выглядеть так

library(MASS)
set.seed(123)
x = rnorm(100, 1, 0.1)
set.seed(456)
y = rnorm(100, 1, 0.5)
den <- kde2d(x, y, n = 50, lims = c(-2, 2, -2, 2))
#to plot this 2d kde:
#library(lattice)
#persp(den)
conditional_probabilty_density = list(x = den$y, y = den$z[40, ])
#to plot the slice:
#plot(conditional_probabilty_density)
simulated_sample = sample(conditional_probabilty_density$x, size = 10, replace = TRUE, prob = conditional_probabilty_density$y)

den выглядит так

kde2d

В моих данных есть известные области, где наблюдается много колебаний, требующих мелкой детализации сетки. В других областях практически нет точек данных, и там ничего не происходит. Было бы хорошо, если бы я мог просто установить параметр n в kde2d на очень большое число, чтобы везде иметь хорошее разрешение моих данных. Увы, это невозможно из-за нехватки памяти.

Вот почему я подумал, что могу изменить функцию kde2d, чтобы получить непостоянную степень детализации.
Вот исходный код функции kde2d. Можно изменить строку

gy <- seq.int(lims[3L], lims[4L], length.out = n[2L])

и поместите желаемую степень детализации на ось Y. Например

a <- seq(-1, 0, 0.5)
gy <- c(a, seq.int(0.1, 2, length.out = n[2L]-length(a)))

А модифицированный kde2d возвращает оценку плотности ядра в указанных позициях. Работает очень хорошо. Предположим, у меня сейчас

kde2d_2

Проблема в том, что я больше не могу использовать sample для выборки из срезов по оси x. Потому что часть в левой части распределения намного мельче и, следовательно, имеет более высокую вероятность быть отобранной sample.

Что я могу сделать, чтобы иметь мелкую сетку там, где она мне нужна, но выборку из распределения в соответствии с ее надлежащей плотностью? Большое тебе спасибо.


person Clawish    schedule 20.11.2017    source источник


Ответы (1)


Используйте approx на conditional_probabilty_density с новым n.

person Clawish    schedule 21.11.2017