我的数据需要直方图,但找不到带曲线的直方图。任何人都可以建议直方图显示频率(而不是密度)与下面的数据曲线?花哨的是首选,但如果没有,则不用担心:)
x <- rnorm(1000)
hist(x)
答案 0 :(得分:5)
这是缓慢的,逐步的版本。
这是您的数据。
population_mean <- 0
population_sd <- 1
n <- 1000
x <- rnorm(n, population_mean, population_sd)
这些是绘制曲线的x
坐标。请注意使用qnorm
从正态分布中获取较低和较高的分位数。
population_x <- seq(
qnorm(0.001, population_mean, population_sd),
qnorm(0.999, population_mean, population_sd),
length.out = 1000
)
为了从密度转换为计数,我们需要知道binwidth。如果我们自己指定它,这是最简单的。
binwidth <- 0.5
breaks <- seq(floor(min(x)), ceiling(max(x)), binwidth)
这是我们的直方图。
hist(x, breaks)
计数曲线是正常密度乘以数据点数除以binwidth。
lines(
population_x,
n * dnorm(population_x, population_mean, population_sd) * binwidth,
col = "red"
)
让我们再看一下样本分布而不是人口分布。
sample_mean <- mean(x)
sample_sd <- sd(x)
sample_x <- seq(
qnorm(0.001, sample_mean, sample_sd),
qnorm(0.999, sample_mean, sample_sd),
length.out = 1000
)
lines(
population_x,
n * dnorm(sample_x, sample_mean, sample_sd) * binwidth,
col = "blue"
)
答案 1 :(得分:4)
也许是这样的......?
set.seed(1)
x <- rnorm(1000)
hist(x, las=1)
par(new=TRUE)
plot(density(x), col=2, yaxt="n", xaxt="n",
bty='n', xlab="", ylab="", main='')
axis(4, las=1)
频率在左 y 轴中描述,概率(对于密度线)在右 y 轴。
答案 2 :(得分:-1)
通常你会使用密度曲线。
试试这个:
x <- rnorm(1000)
hist(x)
curve(dnorm, col = 2, add = TRUE)