首页 > 解决方案 > 创建 beta 分布 QQ 图

问题描述

我的任务是从 beta 分布中创建 100 个随机生成的数字,并使用分位数图将该随机变量与 beta 分布进行比较。
这是我的尝试:

library(MASS)
library(qualityTools)
Random_Numbers_Beta <- rbeta(100, 1, 1)
qqPlot(Random_Numbers_Beta, "beta", list(shape = 1, rate = 1))

不幸的是,出了点问题。这是发生的错误:

Error in (function (x, densfun, start, ...)  : 
'start' must be a named list

可以解决这个问题吗?

标签: r

解决方案


首先,您必须指定list(shape = 1, rate = 1)参数start;现在这个列表被视为confbounds参数的值。其次,它实际上不是shapeand rate,而是shape1and shape2,例如?dbeta

qqPlot(Random_Numbers_Beta, "beta", start = list(shape1 = 1, shape2 = 1))

在此处输入图像描述

再次检查?qqPlot您可能会看到这...是针对“进一步的图形参数:(参见标准)。 ”因此,您可以按照自己喜欢的方式修改绘图;例如,添加col = 'red'.

还要注意 Beta(1,1) 只是 [0,1] 上的均匀分布,因此,它的分位数函数是恒等函数。也就是说,qbeta(x, 1, 1) == x对于x[0,1] 中的任何一个。因此,您也可以直接使用

x <- seq(0, 1, length = 500)
plot(quantile(Random_Numbers_Beta, x), x)
abline(a = 0, b = 1, col = 'red')

在此处输入图像描述

如果您不需要置信区间。


然而,人们可以注意到,这两个情节略有不同。鉴于您的任务,您似乎需要第二个任务。

在第一个中,它看起来qqPlot适合您的数据的 beta 分布并使用它的分位数,这显然不是恒等函数。也就是说,它不使用有关参数的确切知识。第二个情节使用了这些知识。


推荐阅读