帕累托分布和 R 的问题

机器算法验证 r 帕累托分布
2022-04-04 02:33:27

我正在尝试测试帕累托分布的这个属性:让 f(x) 成为帕累托分布

f(x)=αxmαxα+1

所以我们有 cdf 是

CDF(x)=xmxαtmαtα+1dt=1xmαxα

那么的概率是x>x0

P(x>x0)=1CDF(x)=xmαxα

所以我们有

P(x>x0)f(x)=xα

现在我正在尝试用 R 测试它。

 library(PtProcess)
 dd<-rpareto(10000,1.5,0.01)
 cdf<-ecdf(dd)
 df<-density(dd)
 ff<-(1-cdf(df$x))/df$y

如果我绘制 ff

 plot(df$x,ff)

我没有得到正确的直线。我猜这是由于 density() 和 ecdf() 的工作方式。我需要这种形式的测试(fd 和 cdf 的后验评估),以便对未知来源的数据样本执行相同的测试。我想我需要一种方法来分箱 ecdf() 函数,就像 hist() 是密度的分箱版本一样。

所以我的问题是:

  • 是否存在 ecdf() 的等效分箱函数,因为 hist() 是密度 () 的分箱函数?
  • 或者我可以用 hist() 模拟 ecdf() 吗?
1个回答

通过使用ecdfand density,您实际上并没有进行帕累托计算,而是使用基于样本的估计值,由于它们的非参数性质,不能保证(阅读:不会)具有所需的属性。

尝试以下操作:

x <- seq(0.1,10,by=0.1)
fx <- dpareto(x, 1.5, 0.05)
Fx <- ppareto(x, 1.5, 0.05)
plot((1-Fx)/fx ~ x)

你会得到很好的直线: 在此处输入图像描述