01. 추론
-01 추정
02. 확률분포의 종류
-01 이산형 확률분포
-02 연속형 확률분포
03. 정규분포 , 표준정규분포
-01 정규분포
-02 표준정규분포
-03 정규분포 시각화
-04 표준정규분포에서의 95% 영역 시각화
* [ 참고 - 다양한 함수 ]
04. 중심극한정리
-01 증명
-02 모평균 추정
-03 모평균 가설검정
01. 추론
-01 추정
추정
통계량 ----------> 모수
표본평균 모평균( μ )
표본분산 모분산(σ ² )
표본비율 모비율(P)
1-1) 점추정
1-2) 구간추정
-02 가설검정
02. 확률분포의 종류
-01 이산형 확률분포
1) 베르누이 분포
2) 이항 분포(*)
3) 포아송 분포
...
-02 연속형 확률분포
1) 정규분포 : 하나, 두 집단의 모평균 추정
2) 표준정규분포(*) : 하나, 두 집단의 모평균 추정
3) t분포 : 하나, 두 집단의 모평균 추정
4) 카이제곱분포 : 한집단의 모분산 추정
5) F분포 : 두집단의 모분산비 추정
03. 정규분포 , 표준정규분포
-01 정규분포
- 평균을 중심으로 좌우대칭, 종모양
- 분산에 의해 뾰족함의 정도(첨도)가 달라짐
- 중심극한정리의 기본이 되는 분포(*)
X ~ N( μ , σ ²) # 모평균, 모분산
Z = (X - μ ) / σ ~ N(0,1)
-02 표준정규분포
- 정규분포를 따르는 확률변수(X)를 표준화시킨 표준화된 확률변수(Z)가 따르는 분포
- 평균 : 0, 분산 : 1인 정규분포
X ~ N(0,1)
* 표준화 : X가 가지고 있는 평균 / 표준편차
-03 정규분포 시각화
1) X ~ N (10, 9)
1-1) 샘플링 결과 시각화
> v1 <- rnorm(500, mean = 10, sd =3)
> hist(v1, prob = T)
> plot(kde(v1))

1-2) 이론 분포
> vx <- seq(0, 20, 0.01)
> vy <- dnorm(vx, mean = 10, sd = 3)
> plot(vx, vy, type = 'l')

2) 표준화된 확률변수의 분포 시각화
2-1) 샘플링 결과 시각화
> vz <- (v1 - 10) / 3
> par(mfrow = c(1,2))
> hist(vz, prob = T)
> plot(kde(vz))

2-2) 이론 분포
> vx <- seq(-3, 3, 0.01)
> vy <- dnorm(vx, mean = 0, sd = 1)
> plot(vx, vy, type = 'l')

-04 표준정규분포에서의 95% 영역 시각화
> vx <- seq(-3, 3, 0.01)
> vy <- dnorm(vx, mean = 0, sd = 1)
> plot(vx, vy, type = 'l', ylim = c(0,0.5),
+ xaxs = 'i', yaxs = 'i')
> vx1 <- seq(-1.96, 1.96, 0.01)
> vy1 <- dnorm(vx1, mean = 0, sd = 1)
> polygon(c(-1.96, vx1, 1.96),
+ c(0, vy1, 0),
+ col = 'lightgreen')
> arrows(1, 0.38, 0.3, 0.3,
+ length = 0.2, lwd = 2, col = 'red')
> text(1.1, 0.4, '95%', col = 'red')
> mtext('-1.96', side = 1, at = -1.96)
> mtext('1.96', side = 1, at = 1.96)

# [ R 분포함수 ]
-01 d____ : 특정 x값에 대한 확률값 리턴
-02 p____ : 특정 x값에 대한 누적확률값 리턴
-03 q____ : 누적확률값에 대한 x 지점
-04 r____ : 랜덤샘플링
# 분포함수 시각화
> px <- seq(-3, x0, 0.01)
> py <- dnorm(px)
> plot(vx, vy, type = 'l', ylim = c(0, 0.5),
+ xlab = '', ylab = '', xaxs = 'i', yaxs = 'i')
> polygon(c(-3, px, x0),
+ c(0, py, 0),
+ col = 'lightgray')
> arrows(-1.5, 0.25, -0.5, 0.12, length = 0.1, col = 'blue')
> text(-1.7, 0.27, 'pnorm(1)', col = 'blue', cex = 0.9)
>
> segments(1, y0, -3, y0, col = 'red', lty = 2)
> points(x0, y0, col = 'red', pch = 16)
> mtext('dnorm(1)', side = 2, las = 1, cex = 0.9, col = 'blue')
>
> x0 <- qnorm(0.5) # = 0
> px <- seq(-3, x0, 0.01)
> py <- dnorm(px)
>
> polygon(c(-3, px, x0),
+ c(0, py, 0),
+ density = 20,
+ angle = 45,
+ col = 'red',
+ border = NA)
>
> segments(x0, 0, x0, dnorm(x0), col = 'red', lty = 2)
> mtext('qnorm(0.5)', side = 1, at = x0, line = 1.5, cex = 0.8)

* [ 참고 - 다양한 함수 ]
1) 영역 색칠
# R에서 polygon 함수를 이용한 도형그리기 + 색칠하기
# 시작점과 끝점은 자동으로 이어짐
polygon(x, # x축 좌표만 모아서 벡터로 전달
y, # y축 좌표만 모아서 벡터로 전달
col = , # 색상
density = , # 빗금의 밀도
angle = , # 빗금의 각도
border =)
> plot(c(1,1,0,0), c(0,1,0,1), ylim = c(-2,2), xlim = c(-2,2))

# 사각형 그리기
> polygon(c(0,1,1,0),
+ c(1,1,0,0),
+ col = 'red',
+ density = ,
+ angle = ,
+ border =)

# 나비넥타이 그리기
> polygon(c(0,1,1,0),
+ c(1,0,1,0),
+ col = 'red',
+ density = ,
+ angle = ,
+ border =)

2) 화살표
arrows(x0, # 시작점 x축 좌표
y0, # 시작점 y축 좌표
x1, # 끝점 x축 좌표
y1, # 끝점 y축 좌표
length = ,
col = ,
lty = ,
lwd =)
> arrows(1, 0.38, 0.3, 0.3,
+ length = 0.2, lwd = 2, col = 'red')

04. 중심극한정리
| 표본평균 | → | 모평균 |
| | | 추정 | |
| | | ||
| 분포 | → | 정규분포 |
"모집단의 분포와 상관없이 (평균 : μ, 분산 : σ ² )
모집단으로부터 추출한 표본(n)의 평균(표본평균)은 정규분포를 따른다."
->이 때, 표본평균의 평균은 모집단의 평균( μ)에 근사해지며, 표본평균의 분산은 모분산/표본 수( σ ² /n)에 근사해진다.
* xbar ~ N( μ, σ ² / n )
-01 증명
모집단 : N(50, 9) 가정
1) 해당 모집단으로부터 샘플링
표본 500개, 표본 평균 1개
이렇게 한 번 뽑은 표본 평균으로 모평균을 추정하는 것을 '점추정' 이라고 함
v1 <- rnorm(500, mean = 50, sd = 3)
> v1 <- rnorm(500, mean = 50, sd = 3)
> mean(v1)
[1] 49.59155
-> 점추정은 오차가 크며 그 오차를 알 수 없음이 단점이다.
2) 표본평균의 분포 확인
xbar ~ N(50, 9/100)
분포를 확인하는 것이기 때문에 표본평균이 여러개가 필요하다.
100개의 표본, 표본 평균 1000개 (샘플사이즈 수정 진행하였음, 500 -> 100)
> vmean <- c()
> for (i in 1:1000) {
+ v1 <- rnorm(100, mean = 50 , sd = 3)
+ vmean <- c(vmean, mean(v1))
+ }

> vx1 <- seq(49, 52, 0.01)
> vy2 <- dnorm(vx1, mean = 50, sd = 3/10) # dnorm은 분산이 아닌 표준편차를 써야 한다. 따라서 분산이 9/100이기 때문에 표본평균의 평균은 3/10인 0.3이 된다.
> lines(vx1, vy2, type = 'l', col = 'red')

3) 표본평균의 기댓값 (평균)
E(xbar) = μ
모집단의 평균인 50에 근사한 값이 나온다.
> mean(vmean)
[1] 50.00377
4) 표본평균의 분산 (평균)
모집단의 분산인 9에 근사한 값이 나온다.
> var(vmean)
[1] 0.09040497
-02 모평균 추정
1) 점추정 : 모평균을 하나의 점(수치, 특정 값)으로 추정
E(xbar) = μ
-> 모평균에 대한 점추정값은 표본평균
2) 구간추정 : 모집단의 모수를 특정 범위로 추정
P(ld < z < lu) = 95%
* 신뢰수준(Confidence Level) : 100 x (1 - a)% (a는 조사에서 인정되는 오차 수준)
추정값이 존재하는 구간에 모수가 포함될 확률
신뢰수준이 올라가면 신뢰구간 역시 넓어진다.
신뢰구간(Confidence Interval) : 신뢰수준을 기준으로 통계적으로 유의미한 모수의 범위
# 신뢰수준 95% 기준
> alpha = 0.05
> ld <- qnorm(alpha/2, mean = 0, sd = 1)
> ld
[1] -1.959964
> lu <- qnorm(1-alpha/2, mean = 0, sd = 1)
> lu
[1] 1.959964
[ xbar - 1.96 * ( σ/sqrt(n)), xbar + 1.96 * ( σ/sqrt(n)) ]
# 신뢰수준 99% 기준
> ld <- qnorm(alpha/2, mean = 0, sd = 1)
> ld
[1] -2.575829
> lu <- qnorm(1-alpha/2, mean = 0, sd = 1)
> lu
[1] 2.575829
[ xbar - 2.58 * ( σ/sqrt(n)), xbar + 2.58 * ( σ/sqrt(n)) ]
# 예) 우리나라 신생아 몸무게가 성별로 weight.txt 파일로 저장되어 있다.
# 성별에 관계없이 우리나라 신생아의 몸무게를 추정하라.
# 단, 모분산은 5000 가정
> head(df1)
gender weight
1 1 3837
2 1 3334
3 2 3554
4 2 3838
5 2 3625
6 1 2208
1) 점추정
> n1 <- length(df1$weight)
> sigma <- sqrt(5000)
> xbar <- mean(df1$weight)
> xbar
[1] 3275.955
2) 구간추정(95% 신뢰구간)
> c(xbar - 1.959964 * (sigma/sqrt(n1)), xbar + 1.959964 * (sigma/sqrt(n1)) )
[1] 3255.061 3296.848
=> 우리나라 신생아의 몸무게의 95% 신뢰구간 : [3255.061, 3296.848]
-03 모평균 가설검정
우리나라 신생아의 몸무게의 95% 신뢰구간 : [3255.061, 3296.848]
귀무가설 = 영가설 : 모집단의 모수에 대해 어떤 조건을 가정하여 설정하는 가설
H0(귀무가설) : 우리나라 신생아 몸무게가 3300이다.
대립가설 = 대안가설 : 귀무가설의 반대되는 가설
H1(대립가설) : 우리나라 신생아 몸무게가 3300보다 작다.
>가설검정을 진행하는 방법론 3가지
1) 검정통계량 -> 기각/채택
2) 신뢰구간
3) p-value
[ R 함수를 사용한 모평균 추정 / 가설검정 ]
install.packages('BSDA')
library(BSDA)
z.test(x, # 첫번째 집단 데이터
y, # 두번째 집단 데이터
alternative = 'two.sided', # 가설검정 종류(양측검정, 왼쪽검정, 오른쪽검정)
mu = 0, # 가설 가정값
sigma.x = , # 첫번째 집단의 모표준편차
sigma.y = , # 두번째 집단의 모표준편차
conf.level = 0.95) # 신뢰수준
> z.test(df1$weight, sigma.x = sqrt(5000), mu = 3300)
One-sample z-Test
data: df1$weight
z = -2.2557, p-value = 0.02409
alternative hypothesis: true mean is not equal to 3300
95 percent confidence interval:
3255.061 3296.848
sample estimates:
mean of x
3275.955
> 신뢰구간(95%) : 3255.061 - 3296.848
> 표본평균(점추정값) : 3275.955
# [ 연습문제 ]
# 우리나라 2세 영아의 머리둘레는 작년과 분산이 동일할 것으로 확인(작년분산 : 500)
# 한 번 추출한 샘플의 평균이 250(n=30)일 때,
# 올해 예상되는 머리둘레의 95%, 99% 신뢰구간 추정
n1 <- 30
sigma <- sqrt(500)
xbar <- 250
# 95% 신뢰구간
c(xbar - 1.959964 * (sigma/sqrt(n1)), xbar + 1.959964 * (sigma/sqrt(n1))) # 241.9985 258.0015
z.test(rep(250,30), sigma.x = sqrt(500), mu = 250)
> c(xbar - 1.959964 * (sigma/sqrt(n1)), xbar + 1.959964 * (sigma/sqrt(n1))) # 241.9985 258.0015
[1] 241.9985 258.0015
> z.test(rep(250,30), sigma.x = sqrt(500), mu = 250)
One-sample z-Test
data: rep(250, 30)
z = 0, p-value = 1
alternative hypothesis: true mean is not equal to 250
95 percent confidence interval:
241.9985 258.0015
sample estimates:
mean of x
250
# 99% 신뢰구간
c(xbar - 2.575829 * (sigma/sqrt(n1)), xbar + 2.575829 * (sigma/sqrt(n1))) # 239.4842 260.5158
z.test(rep(250,30), sigma.x = sqrt(500), mu = 250, conf.level = 0.99)
> c(xbar - 2.575829 * (sigma/sqrt(n1)), xbar + 2.575829 * (sigma/sqrt(n1))) # 239.4842 260.5158
[1] 239.4842 260.5158
> z.test(rep(250,30), sigma.x = sqrt(500), mu = 250, conf.level = 0.99)
One-sample z-Test
data: rep(250, 30)
z = 0, p-value = 1
alternative hypothesis: true mean is not equal to 250
99 percent confidence interval:
239.4842 260.5158
sample estimates:
mean of x
250
'아이티윌_데이터 분석 55기 > 강의내용 필기_통계 및 분석' 카테고리의 다른 글
| #4 4일차_가설검정, t-분포 (0) | 2026.04.16 |
|---|---|
| #3 3일차_이산확률분포, 중심극한정리, 모평균 추정, 가설검정 (0) | 2026.04.15 |
| #1 1일차_통계 기초, 표본추출, 측정과 척도, 기초 통계량, 확률분포 (0) | 2026.04.13 |
| #10 10일차_ggplot2 (0) | 2026.04.13 |
| #9 9일차_기본 시각화 : barplot, 이상치 탐색, 히스토그램, 커널밀도, 파이차트 (0) | 2026.04.10 |