標準常態分佈-累積機率值計算
- 網路資源:
- Normal Distribution Calculator/Table
- 通常求『標準常態分佈』累積機率值,必須要透過查表,本方法用『梯形面積逼近法』求其近似值。
- 使用 GNU R 統計程式語言。
- 分別提供百分位及千分位精確度。
- 標準常態分佈特性:
- 圖形對稱於平均值軸
- 從負無限至平均值軸,其累積值等於 0.5。
- 從平均值軸至正無限,其累積值等於 0.5。
# Standard Normal Probability Distribution
magicNum <- 1 / sqrt(2 * pi)
StandardNormalDesicityOriginal <- function(x) {
result <- exp(-0.5 * (x ^ 2)) / sqrt(2 * pi)
result
}
StandardNormalDesicity <- function(x) {
result <- magicNum * (1 / sqrt(exp(x ^ 2)))
result
}
StandardNormalProbabilityMargin <- function(x) {
if (x == 0) {
area <- 0.5
}
else {
if (x < 0) {
num <- x * 100
area <- 0.5
for (s in c(0:num)) {
area <- area - ((StandardNormalDesicity(s * 0.01) + StandardNormalDesicity(s * 0.01 - 0.01)) * 0.01 * 0.5)
}
}
else {
num <- x * 100 - 1
area <- 0.0
for (s in c(0:num)) {
area <- area + (StandardNormalDesicity(s * 0.01) + StandardNormalDesicity(s * 0.01 + 0.01)) * 0.01 * 0.5
}
area <- 0.5 + area
}
}
area
}
StandardNormalProbabilityMargin2 <- function(x) {
if (x == 0) {
area <- 0.5
}
else {
if (x < 0) {
num <- x * 1000
area <- 0.5
for (s in c(0:num)) {
area <- area - ((StandardNormalDesicity(s * 0.001) + StandardNormalDesicity(s * 0.001 - 0.001)) * 0.001 * 0.5)
}
}
else {
num <- x * 1000 - 1
area <- 0.0
for (s in c(0:num)) {
area <- area + (StandardNormalDesicity(s * 0.001) + StandardNormalDesicity(s * 0.001 + 0.001)) * 0.001 * 0.5
}
area <- 0.5 + area
}
}
area
}
StandardNormalProbabilityRange <- function(x, y) {
if (x > y) {
m <- y
n <- x
}
else {
m <- x
n <- y
}
area <- StandardNormalProbabilityMargin(n) - StandardNormalProbabilityMargin(m)
area
}
StandardNormalProbabilityRange2 <- function(x, y) {
if (x > y) {
m <- y
n <- x
}
else {
m <- x
n <- y
}
area <- StandardNormalProbabilityMargin2(n) - StandardNormalProbabilityMargin2(m)
area
}
###################################################################################
d <- StandardNormalProbabilityMargin(-1.02)
print(d)
d <- StandardNormalProbabilityMargin(1.02)
print(d)
d <- StandardNormalProbabilityRange(0, 1.02)
print(d)