【问题标题】:Scaling stat_function in R在 R 中缩放 stat_function
【发布时间】:2022-11-11 23:48:45
【问题描述】:

我从标准正态分布中抽取 30 个数据点的随机样本,并在 R 中绘制生成的直方图。我想展示一个重叠的正态分布,说明样本分布如何接近总体分布。但是,我不知道如何缩放正态曲线。这是我到目前为止在 R 中的内容:

library(ggplot2)

n <- 30
set.seed(42)
X <- rnorm(n, mean = 0, sd = 1)
X <- as.data.frame(X)

ggplot(X, aes(x = X)) +
  geom_histogram(bins = 6) +
  stat_function(fun = dnorm, args = list(
    mean = 0, sd = 1
  ))

如何垂直拉伸正态分布的 PDF 以解释$n = 30$?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    A) 使用频率作为直方图中的 y 轴

    我在函数rcompanion::plotNormalHistogram 中有一个解决方案

    n <- 30
    set.seed(42)
    X <- rnorm(n, mean = 0, sd = 1)
    
    library(rcompanion)
    
    plotNormalHistogram(X)
    

    我认为您正在寻找默认 prob=FALSE 的场景。在那里,我从hist() 函数中提取了一些关于计数和密度的信息,并使用它因素垂直拉伸法线曲线。

    我不知道如何在 ggplot2 中做同样的事情,但我怀疑有办法。

    您可以使用library(rcompanion); plotNormalHistogram 来查看代码。

    B) 使用密度作为直方图中的 y 轴

    library(ggplot2)
    
    n <- 30
    set.seed(42)
    X <- rnorm(n, mean = 0, sd = 1)
    X <- as.data.frame(X)
    
    ggplot(X, aes(x=X)) +
      geom_histogram(aes(y = ..density..), bins=6) +
                     stat_function(fun = dnorm, args = list(
                     mean = 0, sd = 1))
    

    【讨论】: