有人要求我这样做:
对于的值 (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
我做错了什么?
答案 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))