如何在单个绘图中实现rgamma和dgamma

时间:2018-07-24 22:28:43

标签: r

有人要求我这样做:

  

对于的值   (shape = 5,rate = 1),(shape = 50,rate = 10),(shape = .5,rate = .1),绘制   大小为10000的随机样本的直方图。使用密度而不是   频率直方图,以便您可以为总体添加一条线   密度(提示:您将同时使用rgamma和dgamma进行绘制)。   为总体和样本均值加上一个斜线。另外,添加字幕   报告总体方差和样本方差。

我当前的代码如下:

library(ggplot2)
set.seed(1234)
x = seq(1, 1000)
s = 5
r = 1
plot(x, dgamma(x, shape = s, rate = r), rgamma(x, shape = s, rate = r), sub = 
paste0("Shape = ", s, "Rate = ", r), type = "l", ylab = "Density", xlab = "", main = 
"Gamma Distribution of N = 1000")

运行它后,出现此错误:

Error in plot.window(...) : invalid 'xlim' value

我做错了什么?

1 个答案:

答案 0 :(得分:0)

plot()不接受y1和y2参数。参见?plot。您需要绘制一个y变量(例如,来自rgamma的变量)的直方图(或直方图),然后使用类似lines()的东西来添加第二个y变量(例如,来自dgamma的变量)。

这里是获得想要的东西的一种方法:

#specify parameters
s = 5
r = 1

# plot histogram of random draws
set.seed(1234)
N = 1000
hist(rgamma(N, shape=s, rate=r), breaks=100, freq=FALSE)

# add true density curve
x = seq(from=0, to=20, by=0.1)
lines(x=x, y=dgamma(x, shape=s, rate=r))