R中的曲线直方图

Gün*_*nal 2 curve r histogram

我需要一个直方图来获取我的数据,但找不到一个有曲线的直方图.任何人都可以建议直方图显示频率(而不是密度)与下面的数据曲线?花哨的是首选,但不担心,如果不是:)

x <- rnorm(1000)
hist(x)
Run Code Online (Sandbox Code Playgroud)

Ric*_*ton 5

这是一个缓慢的,逐步的版本.

这是你的数据.

population_mean <- 0
population_sd <- 1
n <- 1000
x <- rnorm(n, population_mean, population_sd)
Run Code Online (Sandbox Code Playgroud)

这些是x绘制曲线的一些坐标.注意使用qnorm从正态分布中获得较低和较高的分位数.

population_x <- seq(
  qnorm(0.001, population_mean, population_sd), 
  qnorm(0.999, population_mean, population_sd), 
  length.out = 1000
)
Run Code Online (Sandbox Code Playgroud)

为了从密度转换为计数,我们需要知道binwidth.如果我们自己指定它,这是最简单的.

binwidth <- 0.5
breaks <- seq(floor(min(x)), ceiling(max(x)), binwidth)
Run Code Online (Sandbox Code Playgroud)

这是我们的直方图.

hist(x, breaks)
Run Code Online (Sandbox Code Playgroud)

计数曲线是正常密度乘以数据点数除以binwidth.

lines(
  population_x, 
  n * dnorm(population_x, population_mean, population_sd) * binwidth, 
  col = "red"
)
Run Code Online (Sandbox Code Playgroud)

让我们再看一下样本分布而不是人口分布.

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"
)
Run Code Online (Sandbox Code Playgroud)

具有频率曲线的直方图