ggplot2和QQ图用于非高斯分布

Mar*_*P S 2 r ggplot2

我生成一个QQ图来比较我的ranom数字生成器与beta分布的分布.我可以使用R via中的常用绘图命令来完成此操作

samples1 <- read.csv("test1-clean.dat")
qqplot( samples1$p0, qbeta(seq(0,1,length=length(samples1$p0)),1,3) )
abline( 0, 1 )
Run Code Online (Sandbox Code Playgroud)

但是我想使用这个ggplot2库,我只是无法理解文档(当涉及到R时我是n00b)

我试过了

qplot( sample = p0, data = samples1 ) + stat_qq( distribution = qbeta, seq(0,1,length=length(samples1$p0)), 1, 3 )
Run Code Online (Sandbox Code Playgroud)

但这会导致表格错误

Error: ggplot2 doesn't know how to deal with data of class numeric
Run Code Online (Sandbox Code Playgroud)

有什么建议?另外,学习R的好参考会很棒(我熟悉C,C++,Matlab等,但R现在对我来说有点奇怪)

更新:

如下所示,我试过了

params = list(shape1 = 1, shape2 = 3, lower.tail = TRUE, log.p = FALSE)

qplot( sample = p0, data = samples3 ) + stat_qq( distribution = qbeta, dparams = params )
Run Code Online (Sandbox Code Playgroud)

这仍然似乎不起作用.我得到的错误是

Error in function (p, shape1, shape2, ncp = 0, lower.tail = TRUE, log.p = FALSE)  : 
  element 2 is empty;
   the part of the args list of '.Internal' being evaluated was:
   (p, shape1, shape2, lower.tail, log.p)
Run Code Online (Sandbox Code Playgroud)

我尝试将lower.tail和log.p添加到params,以及概率列表p,但这并没有改变错误消息.

JoF*_*wld 5

我想我已经解决了.你需要通过分布参数的指定值的一个列表dparamsstat_qq().对于您的数据,那将是(如果我理解您的qbeta()电话)

params = list(shape1 = 1, shape2 = 3)

ggplot(samples1, aes(sample = p0))+
   stat_qq(distribution = qbeta, dparams = params)
Run Code Online (Sandbox Code Playgroud)