我生成一个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 )
但我想使用ggplot2
库,我只是无法理解文档(对于R来说,我是n00b)
我试过
qplot( sample = p0, data = samples1 ) + stat_qq( distribution = qbeta, seq(0,1,length=length(samples1$p0)), 1, 3 )
但是这会导致格式错误
Error: ggplot2 doesn't know how to deal with data of class numeric
有什么建议吗?另外,关于学习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 )
这仍然似乎不起作用。我得到的错误是
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)
我尝试将lower.tail和log.p添加到params以及概率列表p中,但这并没有改变错误消息。
答案 0 :(得分:5)
我想我已经解决了。您需要将分发参数作为命名值列表传递到dparams
中的stat_qq()
。对于您的数据,这将是(如果我理解您的qbeta()
电话)
params = list(shape1 = 1, shape2 = 3)
ggplot(samples1, aes(sample = p0))+
stat_qq(distribution = qbeta, dparams = params)
答案 1 :(得分:1)
在Stack Overflow上有很多关于学习R. Here's a few的好建议。
您可以在搜索字符串中添加r
来搜索Stack Overflow中标记为[r]
的所有问题。因此,对于上面的链接,我搜索了[r] learning
我会让一个使用ggplot2的人比我更回答你的ggplot问题。