#exercise2.9
ex29 <- c(6.5, 4.0, 7.1, 8.3, 5.4, 7.6, 9.0, 15.7, 16.7, 6.4, 5.0, 8.5, 5.7, 7.7, 7.2, 12.4, 7.1, 5.5, 9.7, 4.4, 7.0, 6.3, 8.3, 6.9, 5.7, 7.6, 7.9, 7.9, 6.0, 8.2, 10.4, 9.9, 3.9, 9.8, 8.2, 5.6, 7.9, 6.4, 7.4, 7.0, 13.0, 8.7, 6.4, 6.7, 7.4)
#cut(data, 구간설정, 오른쪽 끝값 '미만', 계급값 표시): 데이터 값과 지정하는 구간 사이의 관계 표시하기
#breaks = seq(시작값, 끝값, 공차)
ex29.cut <- cut(ex29, breaks = seq(3.0, 18.0, by = 3), right = FALSE, labels = c("3.0 이상 - 6.0 미만", "6.0 이상 - 9.0 미만", "9.0 이상 - 12.0 미만", "12.0 이상 - 15.0 미만", "15.0 이상 - 18.0 미만"))
#table(data): 도수분포표 만들기
ex29.table <- table(ex29.cut); ex29.table
## ex29.cut
## 3.0 이상 - 6.0 미만 6.0 이상 - 9.0 미만 9.0 이상 - 12.0 미만
## 9 27 5
## 12.0 이상 - 15.0 미만 15.0 이상 - 18.0 미만
## 2 2
#prop.table(data): 상대도수분포표 만들기
prop.table(ex29.table)
## ex29.cut
## 3.0 이상 - 6.0 미만 6.0 이상 - 9.0 미만 9.0 이상 - 12.0 미만
## 0.20000000 0.60000000 0.11111111
## 12.0 이상 - 15.0 미만 15.0 이상 - 18.0 미만
## 0.04444444 0.04444444
#cbind(table, table): 표 시각화 -> 열 기준
cbind(ex29.table, prop.table(ex29.table))
## ex29.table
## 3.0 이상 - 6.0 미만 9 0.20000000
## 6.0 이상 - 9.0 미만 27 0.60000000
## 9.0 이상 - 12.0 미만 5 0.11111111
## 12.0 이상 - 15.0 미만 2 0.04444444
## 15.0 이상 - 18.0 미만 2 0.04444444
#exercise2.10
ex210 <- ex29
#hist(data, 구간설정, 오른쪽 끝값 '미만') / col = "" : 색 지정하기
hist(ex210, breaks = seq(3, 18, by = 3), right = FALSE, col = "blue")
#exercise211
ex211 <- c(18, 21, 22, 19, 34, 32, 40, 42, 56, 58, 64, 28, 29, 29, 36, 35)
#stem(data): 줄기와 잎 그래프 그리기
stem(ex211)
##
## The decimal point is 1 digit(s) to the right of the |
##
## 1 | 89
## 2 | 12899
## 3 | 2456
## 4 | 02
## 5 | 68
## 6 | 4
#exercise213
ex213 <- ex29
ex213.cut <- cut(ex213, breaks = seq(3.0, 18.0, by = 3), right = FALSE, labels = c("3.0 이상 - 6.0 미만", "6.0이상 - 9.0 미만", "9.0 이상 - 12.0 미만", "12.0 이상 - 15.0 미만", "15.0 이상 - 18.0 미만"))
ex213.table <- table(ex213.cut)
#cumsum(table): 도수분포표 -> 누적도수분포표로 전환하기
ex213.cumtable <- cumsum(ex213.table); ex213.cumtable
## 3.0 이상 - 6.0 미만 6.0이상 - 9.0 미만 9.0 이상 - 12.0 미만
## 9 36 41
## 12.0 이상 - 15.0 미만 15.0 이상 - 18.0 미만
## 43 45
#lines(누적도수table): 오자이브 곡선 그리기기
plot(ex213.cumtable)
lines(ex213.cumtable)
평균: mean(data)
중앙값: median(data)
#exercise3.2
stat <- c(88, 67, 76, 80, 86, 94, 78, 84, 82, 75, 80, 75, 65, 85, 78, 82, 71, 60, 87, 75)
mean <- mean(stat)
n <- length(stat)
min <- min(stat)
max <- max(stat)
c(mean, n, min, max)
## [1] 78.4 20.0 60.0 94.0
summary(stat)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 60.00 75.00 79.00 78.40 84.25 94.00
#exercise3.5
dat35 <- c(1, 2, 2, 2, 3, 4, 3, 5, 7, 9)
table(dat35)
## dat35
## 1 2 3 4 5 7 9
## 1 3 2 1 1 1 1
#exercise3.8
math <- c(90, 80, 70, 60)
count <- c(3, 12, 15, 5)
weight <- count / sum(count)
weighted.mean(math, weight)
## [1] 73.71429
#or
weighted.mean(math, count / sum(count))
## [1] 73.71429
weighted.mean(math, count)
## [1] 73.71429
#ex3.9
dat39 <- c(72, 67, 60, 78, 82)
range <- max(dat39) - min(dat39); range
## [1] 22
#ex3.10
dat310 <- dat39
var(dat310)
## [1] 76.2
sd(dat310)
## [1] 8.729261
#ex3.11
#use cv_val()
#3.12
expenditure <- c(30950, 5800, 87600, 45100, 34000)
#use cv_dat()
#ex3.13
dat313 <- c(11, 17, 18, 10, 22, 14, 13, 12)
library(moments)
skewness(dat313)
## [1] 0.6434934
#ex3.14
dat314 <- c(136, 182, 132, 166, 130, 186, 140, 155)
quantile(dat314, 0.25)
## 25%
## 135
quantile(dat314, 0.3)
## 30%
## 136.4
quantile(dat314, c(0.25, 0.3))
## 25% 30%
## 135.0 136.4
quantile(dat314)
## 0% 25% 50% 75% 100%
## 130.0 135.0 147.5 170.0 186.0
#ex3.18_상자그림 그리기
dat315 <- c(38, 174, 13, 58, 26, 155, 80, 26, 51, 46, 19, 134, 69, 30, 39, 29, 37, 47, 9, 52)
boxplot(dat315, horizontal = TRUE)
quantile(dat315)
## 0% 25% 50% 75% 100%
## 9.00 28.25 42.50 60.75 174.00
#ex3.19_그룹화된 데이터의 평균 구하기
class_mid <- c(15, 25, 35, 45, 55, 65) #c(seq(15, 65, 10)) 사용해도 됨
freq <- c(4, 66, 47, 36, 12, 4)
weighted.mean(class_mid, freq)
## [1] 34.88166
#ex3.20
x <- seq(3.6, 4.9, 0.1)
f <- c(1, 1, 6, 6, 10, 10, 13, 11, 13, 7, 6, 7, 5, 4)
dat <- rep(x, f) #변수에 할당해야 함 or median(rep(x, f)) 처럼 바로 사용
median(dat)
## [1] 4.3
#ex3.22
x <- seq(14.5, 64.5, 10)
f <- c(4, 66, 47, 36, 12, 4)
#ex3.23
xbar <- 400; s <- 4
pnorm(404, xbar, s) - pnorm(396, xbar, s)
## [1] 0.6826895
pnorm(408, xbar, s) - pnorm(392, xbar, s)
## [1] 0.9544997
pnorm(412, xbar, s) - pnorm(388, xbar, s)
## [1] 0.9973002
pnorm(408, xbar, s)
## [1] 0.9772499
pnorm(408, xbar, s) - pnorm(396, xbar, s)
## [1] 0.8185946
#ex5.5 (정의한 함수 사용하지 않고 코딩하는 방법)
x <- c(0, 1, 2, 3)
w <- c(0.10, 0.65, 0.20, 0.05)
wt.mean <- weighted.mean(x, w)
wt.var <- sum((x - wt.mean) ^ 2 * w ); wt.var
## [1] 0.46
#ex5.6
x <- c(1:5)
p <- c(0.1, 0.1, 0.2, 0.25, 0.35)
wt.var <- (sum((x - weighted.mean(x, p))^2 * p)); wt.var
## [1] 1.7275
#ex5.7
x <- seq(0, 20, 5)
p <- c(0.06, 0.12, 0.62, 0.15, 0.05)
weighted.mean(x, p)
## [1] 10.05
wt.var <- sum((x - weighted.mean(x, p))^2 * p); wt.var
## [1] 17.7475
sqrt(wt.var)
## [1] 4.212778
#ex5.10
dbinom(8, 10, 0.9)
## [1] 0.1937102
#ex5.11
dbinom(4, 10, 0.9)
## [1] 0.000137781
#ex5.12
dbinom(c(0:5), 5, 0.2)
## [1] 0.32768 0.40960 0.20480 0.05120 0.00640 0.00032
#네 명 이상이 기한 내에 납부하지 않을 확률 구하기
#1
dbinom(4, 5, 0.2) + dbinom(5, 5, 0.2)
## [1] 0.00672
#2
sum(dbinom(c(4, 5), 5, 0.2))
## [1] 0.00672
#3
1 - pbinom(3, 5, 0.2)
## [1] 0.00672
#ex5.13
x5 <- c(0:5)
p5 <- dbinom(x5, 5, 0.2)
names(p5) <- x5 #p5에 저장되어 있는 확률값에 x5에 저장되어있는 0, 1, .. , 5를 이름붙이라는 뜻
p5
## 0 1 2 3 4 5
## 0.32768 0.40960 0.20480 0.05120 0.00640 0.00032
barplot(p5)
x10 <- c(0:10)
p10 <- dbinom(x10, 10, 0.2)
names(p10) <- x10
p10
## 0 1 2 3 4 5
## 0.1073741824 0.2684354560 0.3019898880 0.2013265920 0.0880803840 0.0264241152
## 6 7 8 9 10
## 0.0055050240 0.0007864320 0.0000737280 0.0000040960 0.0000001024
barplot(p10)
x20 <- c(0:20)
p20 <- dbinom(x20, 20, 0.2)
names(p20) <- x20
p20
## 0 1 2 3 4 5
## 1.152922e-02 5.764608e-02 1.369094e-01 2.053641e-01 2.181994e-01 1.745595e-01
## 6 7 8 9 10 11
## 1.090997e-01 5.454985e-02 2.216088e-02 7.386959e-03 2.031414e-03 4.616849e-04
## 12 13 14 15 16 17
## 8.656592e-05 1.331783e-05 1.664729e-06 1.664729e-07 1.300570e-08 7.650410e-10
## 18 19 20
## 3.187671e-11 8.388608e-13 1.048576e-14
barplot(p20)
#ex5.15
sqrt(0.75 * 0.25 * 20)
## [1] 1.936492
x <- c(0:20)
p <- dbinom(x, 20, 0.75)
names(p) <- x
round(p, 4)
## 0 1 2 3 4 5 6 7 8 9 10
## 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0002 0.0008 0.0030 0.0099
## 11 12 13 14 15 16 17 18 19 20
## 0.0271 0.0609 0.1124 0.1686 0.2023 0.1897 0.1339 0.0669 0.0211 0.0032
p
## 0 1 2 3 4 5
## 9.094947e-13 5.456968e-11 1.555236e-09 2.799425e-08 3.569266e-07 3.426496e-06
## 6 7 8 9 10 11
## 2.569872e-05 1.541923e-04 7.516875e-04 3.006750e-03 9.922275e-03 2.706075e-02
## 12 13 14 15 16 17
## 6.088669e-02 1.124062e-01 1.686093e-01 2.023312e-01 1.896855e-01 1.338956e-01
## 18 19 20
## 6.694781e-02 2.114141e-02 3.171212e-03
barplot(p)
#ex.5.16
#(2)
dbinom(0, 10, 0.1)
## [1] 0.3486784
#(3)
x <- c(0:10)
p <- dbinom(x, 10, 0.1)
names(p) <- x
round(p, 3)
## 0 1 2 3 4 5 6 7 8 9 10
## 0.349 0.387 0.194 0.057 0.011 0.001 0.000 0.000 0.000 0.000 0.000
#(4)
barplot(p)
#(5)
0.1 * 10
## [1] 1
sqrt(0.1 * 0.9 * 10)
## [1] 0.9486833
#ex5.18
dpois(5, 2.75)
## [1] 0.08378618
ppois(2, 2.75)
## [1] 0.4814567
#ex5.19
1 - ppois(4, 6)
## [1] 0.7149435
#ex5.20
dpois(0, 0.4)
## [1] 0.67032
연속형 확률변수
연속형 확률함수
정규분포
정규분포의 확률밀도함수
#ex5.25
#(1)
mu <- c(3, -3, 0, 8)
sigma <- c(1, 5, 1, 8)
pnorm(-8, mu, sigma)
## [1] 1.910660e-28 1.586553e-01 6.220961e-16 2.275013e-02
#(2)
1 - pnorm(16, mu, sigma)
## [1] 0.000000e+00 7.234804e-05 0.000000e+00 1.586553e-01
#ex5.31
#(1)
pnorm(1.11) - pnorm(-2.22)
## [1] 0.8532911
#(2)
pnorm(2.46) - pnorm(1.54)
## [1] 0.05483333
#(3)
1 - pnorm(1.82)
## [1] 0.0343795
#ex5.32
#1 표준화한 값으로 계산하기
q <- 1000; mu <- 1240; sigma <- 160
z <- (q - mu) / sigma
pnorm(z)
## [1] 0.0668072
#2 주어진 값 그대로 계산하기
pnorm(1000, 1240, 160)
## [1] 0.0668072
#ex5.33
#(1)
q <- 1400
z <- (q - mu) / sigma
pnorm(z)
## [1] 0.8413447
#(2)
q <- 1500
z <- (q - mu) / sigma
1 - pnorm(z)
## [1] 0.05208128
#(3)
q3 <- 1200; q4 <- 1300
z1 <- (q3 - mu) / sigma; z2 <- (q4 - mu) / sigma
pnorm(z2) - pnorm(z1)
## [1] 0.2448761
#ex5.34
mu <- 1240; sigma <- 160
qnorm(0.6, 1240, 160)
## [1] 1280.536
#ex5.35
qnorm(0.025)
## [1] -1.959964
#ex5.39
pexp(1.5, 0.2)
## [1] 0.2591818
#ex5.40
#(1)
pexp(3, 0.4) - pexp(1.5, 0.4)
## [1] 0.2476174
#(2)
1 - pexp(3, 0.4)
## [1] 0.3011942
#ex5.41
c(pexp(1, 0.7), 1 - pexp(4, 0.7))
## [1] 0.50341470 0.06081006
표본분표(p.193)
표본평균의 표본분포
표본평균의 표본분포에서의 평균과 표준오차
#ex6.5
mu <- 15; sigma <- 4.5
4.5 / sqrt(40) * sqrt(160 / 199)
## [1] 0.6379931
#ex6.6
#(2)
qnorm(0.025, 850, 40); qnorm(0.975, 850, 40)
## [1] 771.6014
## [1] 928.3986
#ex6.7
mu <- 124
sigma <- 40
n <- 35
s <- sigma / sqrt(n)
xbar <- mu
x = 142
z <- (x - xbar) / s
z
## [1] 2.662236
#ex6.9
se <- 32 / sqrt(40)
#(1)
1 - pnorm(130, 120, se)
## [1] 0.02405341
#(2)
pnorm(124, 120, se)
## [1] 0.7854023
#(3)
pnorm(128, 120, se) - pnorm(112, 120, se)
## [1] 0.8861537
#ex6.10
표본비율
표본비율의 표본분포
표본비율의 표본분포에서의 평균과 표준오차
#ex6.18
pi <- 0.75; n <- 420
se <- sqrt(pi*(1-pi) / n)
#(1)
p1 <- 0.7
z1 <- (p1 - pi) / se
pnorm(z1)
## [1] 0.008980239
#(2)
p2 <- 0.72
z2 <- (p2 - pi) / se
1 - pnorm(z2)
## [1] 0.9221757
#(3)
p3 <- 0.74; p4 <- 0.76
z3 <- (p3 - pi) / se; z4 <- (p4 - pi) / se
pnorm(z4) - pnorm(z3)
## [1] 0.3639911
#ex6.19
p <- 0.6; n <- 1000
se <- sqrt(p*(1-p)/n)
pnorm(0.62, p, se) - pnorm(0.58, p, se)
## [1] 0.8032944
#ex7.15
xbar <- 520; n <- 100; sigma <- 120
se <- sigma / sqrt(n)
z <- qnorm(0.95)
upper <- xbar + z*se
lower <- xbar - z*se
lower; upper
## [1] 500.2618
## [1] 539.7382
#ex7.16
n <- 156; xbar <- 24500; sigma <- 16600
se <- sigma / sqrt(n)
z <- qnorm(0.975); z
## [1] 1.959964
upper <- xbar + z * se
lower <- xbar - z * se
c(lower, upper)
## [1] 21895.08 27104.92
#ex7.17
sigma <- 2400; E <- 400
z <- qnorm(0.975)
n <- (z * sigma / E)^2; n
## [1] 138.2925
#ex7.18
sigma <- 120; n <- 100; z <- qnorm(0.95)
n <- (z * sigma / 10)^2
#ex7.19
#ex7.20
n <- 50; xbar <- 86; sigma <- 45
#(1)
se <- sigma / sqrt(n); se
## [1] 6.363961
#(2)
z <- qnorm(0.95)
upper <- xbar + z * se
lower <- xbar - z * se
c(lower, upper)
## [1] 75.53222 96.46778
#(3)
n90 <- (z * sigma / 8)^2; n90
## [1] 85.60509
#(4)
n95 <- (qnorm(0.975) * sigma / 8)^2; n95
## [1] 121.5462
양측검정
유의수준(p.252)
#ex7.23
#(1)
qnorm(0.95)
## [1] 1.644854
#(2)
qnorm(0.975)
## [1] 1.959964
#(3)
qnorm(0.995)
## [1] 2.575829
#ex7.24
#ex7.30
mu0 <- 100000; xbar <- 108000; n <- 200; s <- 42500
z_xbar <- (xbar - mu0) / (s / sqrt(n)); z_xbar
## [1] 2.662049
z_crt <- qnorm(0.95); z_crt
## [1] 1.644854
#ex7.31
mu0 <- 64; n <- 50; xbar <- 60.5; s <- 28
z_xbar <- (xbar - mu0) / (s / sqrt(n)); z_xbar
## [1] -0.8838835
z_crt <- -qnorm(0.95); z_crt
## [1] -1.644854
#ex7.33
mu0 <- 100000; n <- 200; xbar <- 108000; s <- 42500
z_xbar <- (xbar - mu0) / (s / sqrt(n))
1 - pnorm(z_xbar)
## [1] 0.003883328
1 - pnorm(108000, 100000, 42500 / sqrt(n))
## [1] 0.003883328
pnorm(xbar, mu0, s / sqrt(n), lower.tail = F)
## [1] 0.003883328
#ex7.34
mu0 <- 64; n <- 50; xbar <- 60.5; s <- 28
z_xbar <- (xbar - mu0) / (s / sqrt(n)); z_xbar
## [1] -0.8838835
pnorm(xbar, mu0, s / sqrt(n))
## [1] 0.1883796
pnorm(z_xbar)
## [1] 0.1883796
#ex7.35
n <- 81; xbar <- 58.6; s <- 8.2; mu0 <- 56
z_xbar <- (xbar - mu0) / (s / sqrt(n))
2 * pnorm(z_xbar, lower.tail = F)
## [1] 0.004321896