빅데이터 분석/통계 분석

R : 정규분포 시각화

김 리안 2022. 8. 30. 15:59

정규분포
- 연속형 확률변수에 대한 분포
- 평균을 기준으로 좌우대칭 종모양
- 모수(분포를 결정짓는 요인)는 평균(mu), 분산(sigma^2) / 평균이 높으면 그래프가 다 따라감
- X ~ N(mu, sigma^2)

# 정규분포 시각화
# 1) X ~(10,25) 평균 : 10 , 분산 : 25 (루트분산 = 표준편차) 
vx <- seq(-10,30,0.01)
vy <- dnorm( vx,mean = 10, sd =5)

plot(vx,vy, type ='l', ylim = c(0,0.2))

# 2) X ~(10,10) 
vy1 <- dnorm( vx, mean = 10, sd =sqrt(10) )
lines(vx, vy1, type ='l', col = 'red')


# 2) X ~(10,50) 
vy2 <- dnorm( vx,mean = 10, sd = sqrt(50))
lines(vx, vy2, type ='l', col = 'blue')

=> 평균에 의해 좌우 이동,
   분산에 의해 뾰족함의 정도(첨도)가 달라짐
   분산이 커질수록 완만, 작을수록 뾰족

 

표준 정규 분포 
- 정규분포를 따르는 확률변수를 표준화시켰을 때 갖는 분포
- 정규분포를 따르는 확률변수를 표준화시켰을 때 갖는 분포
- 평균이 0, 표준편차가 1인 정규분포
- Z = (X - mu) / sigma 
- Z ~ N(0,1)평균 0 표준편차 1
- 모든 통계적 추론의 기본

표준 정규 분포 시각화
vx<- seq(-3,3,0.01)
vy<- dnorm(vx, 0,1)
plot(vx, vy, type = 'l')

# 예제) X ~ N(170,100)인 100개 난수 추출
v1 <- rnorm(100, mean = 170, sd = 10)
z1 <- (v1 -170) / 10

# 표준화된 난수의 실제 분포 (히스토그램)
hist(z1, probability = T, ylim = (0,0.5))
lines(vx, vy, type ='l', col = 'red')

# 표준정규분포 95%, 99% 범위 시각화
ld <- qnorm(0.01/2, mean = 0, sd =1) #99% 임계값
lu <- qnorm(1-0.01/2, mean = 0, sd =1)

plot(vx,vy, type = 'l')

# 임계값 수직선 그리기
abline(v=ld)
abline(v=lu)

# 색 채우기
vx1 <- c(ld, seq(ld, lu,0.01), lu)
vy1 <- c(0, dnorm(seq(ld, lu,0.01),0,1) ,0)
polygon(x, y, density = , angle = , col = )

polygon(vx1, vy1, col ='red')
polygon(vx1, vy1, density = 30, col ='red')

# 텍스트 삽입
text(x, y, label = , cex)

text(0,0.2, '99%', cex =3)

# 테두리
polygon(vx1, vy1, density = 30, col ='red',
        border = 'black')

# [ 연습문제 ]
# 표준정규분포 시각 95% 임계값을 찾고
# 좌, 우 영역에 대한 빗금

plot(vx, vy, type = 'l')
ld <- qnorm(0.05/2) 
lu <- qnorm(1-0.05/2)
abline(h=0)

#왼쪽 빗금
vx2 <- c(-3, seq(-3, ld, 0.01), ld)
vy2 <- c(0, dnorm(seq(-3, ld,0.01),0,1) , 0)
polygon(vx2, vy2, density = 30 ) 

#오른쪽 빗금
vx3 <- c(lu, seq(lu, 3, 0.01), 3)
vy3 <- c(0, dnorm(seq(lu, 3, 0.01),0,1) , 0)
polygon(vx3, vy3, density = 30 ) 

 

# 화살표
arrows(-2.5, 0.05, -2.3, 0.01, length = 0.1, col =2)
text(-2.5, 0.06, '0.025')