r - 创建 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
可以解决这个问题吗?
解决方案
首先,您必须指定list(shape = 1, rate = 1)
参数start
;现在这个列表被视为confbounds
参数的值。其次,它实际上不是shape
and rate
,而是shape1
and 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 分布并使用它的分位数,这显然不是恒等函数。也就是说,它不使用有关参数的确切知识。第二个情节使用了这些知识。
推荐阅读
- java - 使用 Java 和 Apache POI 使用地图的结果填充 xlsx 文件的空单元格
- android - 单击添加按钮时,如何在现有卡片视图下方添加卡片视图?
- java - 多线程并行查询中的 ResultSetHandler 问题
- networking - 只允许特定国家连接服务器(谷歌云平台)
- vue.js - 从模板访问 vuex 状态数据
- r - 在ggplot中设置y轴标签之间的距离
- maven - 在 Github Actions 中获取 Maven 项目版本
- java - 如何获取二维数组中一个点的所有邻居?
- c++ - 可执行文件找不到 SDL2.dll
- python - 我的代码完全运行,直到我在 .kv 文件中使用 ScreenManger