如何标准化 R 中的一列数据并获取贝尔曲线直方图以找出落在范围内的百分比?

How to Standardize a Column of Data in R and Get Bell Curve Histogram to fins a percentage that falls within a ranges?

我有一个数据集,其中一列包含 300 到 400 之间的随机数。我正在尝试使用 R 找出该列在 320 到 350 之间的比例。据我了解,我需要标准化此数据并首先创建钟形曲线。我有均值和标准差,但是当我执行 (X - mean)/SD 并从此列中获取直方图时,它仍然不是钟形曲线。

这是我试过的代码。

myData$C1 <- (myData$C1 - C1_mean) / C1_SD

如果你只是简单地统计那个范围内的观察次数,不需要做任何标准化,你可以直接使用

mean(myData$C1 >= 320 & myData$C1 <= 350)

至于标准化,它绝对不会创建任何 "bell curves":它只会移动分布(居中)并重新缩放数据(除以标准差)。除此之外,密度函数的形状本身保持不变。

例如,

x <- c(rnorm(100, mean = 300, sd = 20), rnorm(100, mean = 400, sd = 20))
mean(x >= 320 & x <= 350)
# [1] 0.065
hist(x)
hist((x - mean(x)) / sd(x))

我怀疑您正在寻找的是对真实的、未观察到的比例的估计。如果您必须使用标准正态分布函数的表格值,那么标准化程序将适用。然而,在 R 中,我们可以在没有类似东西的情况下做到这一点。特别是,

pnorm(350, mean = mean(x), sd = sd(x)) - pnorm(320, mean = mean(x), sd = sd(x))
# [1] 0.2091931

这就是概率 P(320 <= X <= 350),其中 X 服从均值 mean(x) 和标准差 sd(x) 的正态分布。该图与上面的图完全不同,因为我们错误地假设它是正态的,从而错误地指定了基础分布;它实际上是两个正态分布的混合。