代码之家  ›  专栏  ›  技术社区  ›  Hendrra

创建贝塔分布Q-Q图[R]

r
  •  2
  • Hendrra  · 技术社区  · 6 年前

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

    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
    

    有什么问题吗?

    1 回复  |  直到 5 年前
        1
  •  3
  •   Julius Vainora    6 年前

    首先,您必须指定 list(shape = 1, rate = 1) start 参数现在,此列表被视为 confbounds 参数第二,事实并非如此 shape rate 但是 shape1 shape2 ,例如。, ?dbeta

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

    enter image description here

    再次检查 ?qqPlot 你可以看到 ... 其他图形参数:(见第。 “因此,您可以按自己喜欢的方式修改绘图;e、 g.加入 col = 'red' .

    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')
    

    enter image description here


    然而,人们可以注意到,这两个情节有点不同。考虑到你的任务,你似乎需要第二个。

    在第一个例子中,它看起来像 qqPlot 为数据拟合beta分布并使用其分位数,这显然不是身份函数。也就是说,它没有使用关于参数的确切知识。第二个情节利用了这一知识。