我生成一个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,但这并没有改变错误消息.
我想我已经解决了.你需要通过分布参数的指定值的一个列表dparams在stat_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)
| 归档时间: |
|
| 查看次数: |
2867 次 |
| 最近记录: |