R 中的分布和密度

Distributions and densities in R

我正在研究截断分布,特别是截断帕累托分布。它有一个已知的密度函数和概率函数,因此可以设计分位数函数和 'random generate numbers' 函数。

但是现在我有了这些函数,假设 dtp(x,lower,upper,alpha) 是我的密度函数,我该如何绘制密度?我知道存在像 density() 这样使用核估计的命令,但是应该能够借助密度函数本身和遵循所述分布的随机数来绘制密度函数?

绘图的标准方法是有 x 个值和 y 个值,然后绘制它们。您有一个将 x 值转换为 y 值的函数,这意味着您需要做的就是选择 x 值来绘制并将它们提供给您的函数,例如:

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

请注意,如果您有合适的 lowerupperalpha 默认值,或者如果您需要指定它们等

或者,一些函数如 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