【问题标题】:Histogram with curve in RR中带有曲线的直方图
【发布时间】:2013-01-23 14:50:56
【问题描述】:

我的数据需要一个直方图,但找不到带有曲线的直方图。谁能建议一个直方图显示频率(不是密度)和下面的数据曲线?喜欢花哨的,但如果不是,请不要担心:)

x <- rnorm(1000)
hist(x)

【问题讨论】:

标签: r histogram curve


【解决方案1】:

这是缓慢的分步版本。

这是您的数据。

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"
)

【讨论】:

  • 它看起来很棒。感谢您的宝贵时间
【解决方案2】:

也许是这样的......?

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 轴中。

【讨论】:

  • 他们确实指定了他们想要直方图中的频率而不是密度。
【解决方案3】:

通常您会使用密度曲线。

试试这个:

x <- rnorm(1000)
hist(x)
curve(dnorm, col = 2, add = TRUE)

【讨论】:

  • 直方图看起来不错,但我想曲线似乎不起作用?
  • 哦,好吧,你想要一个显示频率的直方图,而不仅仅是密度,我错了。 Richie Cotton 的回答很直接。
猜你喜欢
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 2010-12-02
  • 1970-01-01
相关资源
最近更新 更多