dnorm pnorm qnorm rnorm详解
2020-02-22 本文已影响0人
多啦A梦詹
dnorm 返回值是正态分布概率密度函数值,比如dnorm(z)则表示:标准正态分布密度函数f(x)在x=z处的函数值.
dnorm(0, mean = 0, sd = 1)
## [1] 0.3989423
dnorm(0)
## [1] 0.3989423
dnorm(2, mean = 5, sd = 3)
## [1] 0.08065691
z_scores <- seq(-3, 3, by = .1)
z_scores
## [1] -3.0 -2.9 -2.8 -2.7 -2.6 -2.5 -2.4 -2.3 -2.2 -2.1 -2.0 -1.9
## [13] -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1.0 -0.9 -0.8 -0.7
## [25] -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0.0 0.1 0.2 0.3 0.4 0.5
## [37] 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7
## [49] 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9
## [61] 3.0
dvalues <- dnorm(z_scores)
dvalues
## [1] 0.004431848 0.005952532 0.007915452 0.010420935 0.013582969
## [6] 0.017528300 0.022394530 0.028327038 0.035474593 0.043983596
## [11] 0.053990967 0.065615815 0.078950158 0.094049077 0.110920835
## [16] 0.129517596 0.149727466 0.171368592 0.194186055 0.217852177
## [21] 0.241970725 0.266085250 0.289691553 0.312253933 0.333224603
## [26] 0.352065327 0.368270140 0.381387815 0.391042694 0.396952547
## [31] 0.398942280 0.396952547 0.391042694 0.381387815 0.368270140
## [36] 0.352065327 0.333224603 0.312253933 0.289691553 0.266085250
## [41] 0.241970725 0.217852177 0.194186055 0.171368592 0.149727466
## [46] 0.129517596 0.110920835 0.094049077 0.078950158 0.065615815
## [51] 0.053990967 0.043983596 0.035474593 0.028327038 0.022394530
## [56] 0.017528300 0.013582969 0.010420935 0.007915452 0.005952532
## [61] 0.004431848
plot(dvalues, # Plot where y = values and x = index of the value in the vector
xaxt = "n", # Don't label the x-axis
type = "l", # Make it a line plot
main = "pdf of the Standard Normal",
xlab= "Z-score")
# These commands label the x-axis
axis(1, at=which(dvalues == dnorm(0)), labels=c(0))
axis(1, at=which(dvalues == dnorm(1)), labels=c(-1, 1))
axis(1, at=which(dvalues == dnorm(2)), labels=c(-2, 2))
unnamed-chunk-1-1.png
pnorm 返回值是正态分布的分布函数值,比如pnorm(z)等价于P[X ≤ z].
pnorm(0)
## [1] 0.5
pnorm(2)
## [1] 0.9772499
pnorm(2, mean = 5, sd = 3)
## [1] 0.1586553
pnorm(2, mean = 5, sd = 3, lower.tail = FALSE)
## [1] 0.8413447
1 - pnorm(2, mean = 5, sd = 3, lower.tail = FALSE)
## [1] 0.1586553
pvalues <- pnorm(z_scores)
# Now we'll plot these values
plot(pvalues, # Plot where y = values and x = index of the value in the vector
xaxt = "n", # Don't label the x-axis
type = "l", # Make it a line plot
main = "cdf of the Standard Normal",
xlab= "Quantiles",
ylab="Probability Density")
# These commands label the x-axis
axis(1, at=which(pvalues == pnorm(-2)), labels=round(pnorm(-2), 2))
axis(1, at=which(pvalues == pnorm(-1)), labels=round(pnorm(-1), 2))
axis(1, at=which(pvalues == pnorm(0)), labels=c(.5))
axis(1, at=which(pvalues == pnorm(1)), labels=round(pnorm(1), 2))
axis(1, at=which(pvalues == pnorm(2)), labels=round(pnorm(2), 2))
unnamed-chunk-2-1.png
qnorm 返回值是给定概率p后的下分位点.
qnorm(.5)
## [1] 0
qnorm(.96)
## [1] 1.750686
qnorm(.99)
## [1] 2.326348
pnorm(qnorm(0))
## [1] 0
qnorm(pnorm(0))
## [1] 0
# This is for getting two graphs next to each other
oldpar <- par()
par(mfrow=c(1,2))
# Let's make a vector of quantiles: from 0 to 1 by increments of .05
quantiles <- seq(0, 1, by = .05)
quantiles
## [1] 0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55
## [13] 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00
qvalues <- qnorm(quantiles)
qvalues
## [1] -Inf -1.6448536 -1.2815516 -1.0364334 -0.8416212
## [6] -0.6744898 -0.5244005 -0.3853205 -0.2533471 -0.1256613
## [11] 0.0000000 0.1256613 0.2533471 0.3853205 0.5244005
## [16] 0.6744898 0.8416212 1.0364334 1.2815516 1.6448536
## [21] Inf
plot(qvalues,
type = "l", # We want a line graph
xaxt = "n", # No x-axis
xlab="Probability Density",
ylab="Z-scores")
# Same pnorm plot from before
plot(pvalues, # Plot where y = values and x = index of the value in the vector
xaxt = "n", # Don't label the x-axis
type = "l", # Make it a line plot
main = "cdf of the Standard Normal",
xlab= "Quantiles",
ylab="Probability Density")
# These commands label the x-axis
axis(1, at=which(pvalues == pnorm(-2)), labels=round(pnorm(-2), 2))
axis(1, at=which(pvalues == pnorm(-1)), labels=round(pnorm(-1), 2))
axis(1, at=which(pvalues == pnorm(0)), labels=c(.5))
axis(1, at=which(pvalues == pnorm(1)), labels=round(pnorm(1), 2))
axis(1, at=which(pvalues == pnorm(2)), labels=round(pnorm(2), 2))
unnamed-chunk-3-1.png
par(oldpar)
rnorm 返回值是n个正态分布随机数构成的向量.
set.seed(10 - 1 - 2015)
rnorm(5)
## [1] -0.7197035 -1.4442137 -1.0120381 1.4577066 -0.1212466
set.seed(10 - 1 - 2015)
rnorm(5)
## [1] -0.7197035 -1.4442137 -1.0120381 1.4577066 -0.1212466
n10 <- rnorm(10, mean = 70, sd = 5)
n100 <- rnorm(100, mean = 70, sd = 5)
n10000 <- rnorm(10000, mean = 70, sd = 5)
n10
## [1] 54.70832 72.89000 70.27049 69.16508 72.97937 67.91004
## [7] 67.77183 72.29231 74.33411 63.57151
# This is for getting two graphs next to each other
oldpar <- par()
par(mfrow = c(1, 3))
# The breaks argument specifies how many bars are in the
# histogram
hist(n10, breaks = 5)
hist(n100, breaks = 20)
hist(n10000, breaks = 100)
unnamed-chunk-4-1.png
par(oldpar)