R函数计算相邻标准差之间正态曲线下的面积

R function to calculate area under the normal curve between adjacent standard deviations

我正在研究 GoF(拟合优度)测试,想看看数据向量的分位数是否遵循正态分布 N(0, 1) 的预期频率,并且在 [=31 之前=] 卡方检验,我为正态分布生成了这些频率:

< -2 SD's(标准差),-2 and -1 SD之间,-1 and 0 SD之间,0 and 1 SD之间,1 and 2 SD之间, 和 more than 2 SD 的。

为此我走了很长的路:

(Normal_distr <- c(pnorm(-2), pnorm(-1) - pnorm(-2), pnorm(0) - pnorm(-1),
                  pnorm(1) - pnorm(0), pnorm(2) - pnorm(1), pnorm(2, lower.tail = F)))

[1]    0.02275013 0.13590512 0.34134475 0.34134475 0.13590512 0.02275013

我看到对称性允许我减少代码的长度,但是有没有更简单的方法......一些东西(我认为这行不通,但想法...... ) 就像 pnorm(-2:-1)pnorm(-1) - pnorm(-2) = 0.13590512?

返回相同的值

问题:是否有一个 R 函数可以计算分位数之间正态曲线下的面积,以便我们可以通过它传递一个向量,例如 c(-3:3),而不是减去 pnorm() 的相邻标准偏差或其他分位数?

我不确定是否有特定的功能可以做到这一点,但您可以像这样非常简单地做到这一点:

#Get difference between adjacent quantiles
diff(pnorm(-2:-1))
[1] 0.1359051

#Get area under normal curve from -2 to 2 sd's:
sum(diff(pnorm(-2:2)))
[1] 0.9544997