Распределения и плотности в R

Я занимаюсь исследованием усеченных распределений, особенно усеченного распределения Парето. Это имеет известную функцию плотности и функцию вероятности, поэтому можно разработать функцию квантиля, а вместе с ней и функцию «случайного генерирования чисел».

Но теперь, когда у меня есть эти функции, предположим, что dtp(x,lower,upper,alpha) — это моя функция плотности, как мне на самом деле построить график плотности? Я знаю, что существуют такие команды, как density(), которые используют оценку ядра, но, тем не менее, можно построить график функции плотности с помощью самой функции плотности и случайных чисел, следующих за указанным распределением?


person Riley    schedule 30.03.2016    source источник
comment
Может быть, как curve(dtp(x, lower, upper, alpha)). Если это так, то мы можем закрыть ваш вопрос как дублирующий этот: stackoverflow.com/q/26091323   -  person Frank    schedule 30.03.2016
comment
@ Фрэнк, я сейчас же проверю!   -  person Riley    schedule 30.03.2016
comment
Хорошая находка на дупе. Ничего особенного в построении функций плотности нет.   -  person Gregor Thomas    schedule 30.03.2016
comment
Извините, ребята, за неудобства. Мне удалить этот вопрос или как мне с этим справиться?   -  person Riley    schedule 30.03.2016
comment
Нет, нормально повторять вопросы. Кто-то может найти ваш через Google, и теперь, когда два вопроса связаны, они могут увидеть ответы в обоих местах.   -  person Frank    schedule 30.03.2016


Ответы (1)


Стандартный способ построения графика состоит в том, чтобы иметь значения x и значения y, а затем отображать их. У вас есть функция, которая преобразует значения x в значения y, что означает, что все, что вам нужно сделать, это выбрать x значений для построения и передать их вашей функции, например:

x = seq(0, 10, length.out = 100)
y = dtp(x = x)
plot(x, y, type = "l")

Обратите внимание, что я понятия не имею, подходит ли этот домен для вашей плотности, есть ли у вас подходящие значения по умолчанию для lower, upper, alpha или вам нужно указать их и т. д.

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

curve(dtp, from = 0, to = 10, n = 101)
curve(dtp, from = 0, to = 10, n = 101, alpha = 0.2) # specifying alpha

Если вы предпочитаете ggplot, то stat_function — это функция для вас.

library(ggplot2)
ggplot(data.frame(x = c(0, 10), aes(x = x)) +
  stat_function(fun = dtp)

ggplot(data.frame(x = c(0, 10), aes(x = x)) +
  stat_function(fun = dtp, args = list(alpha = 0.2))
  # passing alpha to dtp via args
person Gregor Thomas    schedule 30.03.2016