R中的随机Pareto分布,其中30%的值是< =指定的量

时间:2014-02-15 01:43:33

标签: r

首先让我说这是R课程介绍的课程作业。

首先,在VGAM中为什么会有dparetoI,ParetoI,pparetoI,qparetoI& rparetoI?
它们不一样吗?

我的问题: 我想在帕累托分布中生成50个随机数。 我希望范围是1-60,但我还需要有30%的值<= 4。

使用VGAM我已经尝试了各种功能和帕累托的组合,我可以在文档中找到它以及在线的一些东西。

我试验了拟合,分位数和强迫我发现的例子中的序列,但我是新的,并没有太多意义。

我一直在用这个:

alpha <- 1   # location 
k <- 2 # shape     
mySteps <- rpareto(50,alpha,k)
range(mySteps)
str(mySteps[mySteps <= 4])

经过足够的迭代后,范围将被接受,但条目&lt; = 4永远不会关闭。

所以我的问题是:

我使用正确的帕累托功能吗? 如果没有,你能指出我正确的方向吗? 如果是这样,我会继续运行它,直到“正确”的数据出现?

感谢您的指导。

1 个答案:

答案 0 :(得分:1)

因此,阅读帕累托分布的Wikipedia entry,您可以看到帕累托分布的CDF由下式给出:

  

F X (x)= 1 - (x m / x)α

CDF给出了X(你的随机变量)&lt; x(给定值)。你想要帕累托分布

  

Prob(X&lt; 4)≡F X (4)= 0.3

  

0.3 = 1 - (x m / 4)α

这定义了x m 和α

之间的关系
  

x m = 4 *(0.7) 1 /α

在R代码中:

library(VGAM)
set.seed(1)
alpha <- 1
k     <- 4 * (0.7)^(1/alpha)
X     <- rpareto(50,k,alpha)
quantile(X,0.3)   # confirm that 30% are < 4
#      30% 
# 3.891941

绘制直方图和分布

hist(X, breaks=c(1:60,Inf),xlim=c(1,60))
x <- 1:60
lines(x,dpareto(x,k,alpha), col="red")

如果对不同的alpha重复此过程,您将获得不同的分布函数,但在所有情况下,约30%的样本将<&lt; 4.它只有大约30%的原因是你有一个有限的样本量(50)。