我正在研究GoF(拟合优度(检验,并想看看数据向量的分位数是否遵循正态分布N(0,1(的预期频率,在运行卡方检验之前,我为正态分布生成了这些频率:
< -2 SD
(标准差(、-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