User Tools

Site Tools


z_score

This is an old revision of the document!


평균이 0, 표준편차가 1인 정상분포에서의 개인점수를 말한다.

\begin{equation*} \text{z} = \frac {X - \mu} {\sigma} \end{equation*}

stdscore.rc

rnorm2 <- function(n,mean,sd) { 
  mean+sd*scale(rnorm(n)) } 

set.seed(1)
a <- rnorm2(1000000, 100, 10)
m.a <- mean(a)
sd.a <- sd(a)

hist(a)
abline(v=mean(a), col='red', lwd = 2)
abline(v=c(m.a-sd.a, m.a+sd.a), col='blue', lwd = 2)
abline(v=c(m.a-2*sd.a, m.a+2*sd.a), col='green', lwd = 2)
abline(v=c(m.a-3*sd.a, m.a+3*sd.a), col='black', lwd = 2)

# score 110 
pnorm(110, m.a, sd.a) 
pnorm(90, m.a, sd.a)
pnorm(110, m.a, sd.a) - pnorm(90, m.a, sd.a)

pnorm(120, m.a, sd.a) 
pnorm(80, m.a, sd.a)
pnorm(120, m.a, sd.a) - pnorm(80, m.a, sd.a)

pnorm(m.a+3*sd.a, m.a, sd.a) 
pnorm(m.a-3*sd.a, m.a, sd.a)
pnorm(m.a+3*sd.a, m.a, sd.a) - 
  pnorm(m.a-3*sd.a, m.a, sd.a)

# 110이 평균에서 얼마나 떨어져 있는가를 구해서
# 그 값에 standard deviation이 몇개나 들어가나 보면?
# 110 = 1개
# 120 = 2개 
# 125 = 2.5개

stdscore.ro

> rnorm2 <- function(n,mean,sd) { 
+   mean+sd*scale(rnorm(n)) } 
> 
> set.seed(1)
> a <- rnorm2(1000000, 100, 10)
> m.a <- mean(a)
> sd.a <- sd(a)
> 
> hist(a)
> abline(v=mean(a), col='red', lwd = 2)
> abline(v=c(m.a-sd.a, m.a+sd.a), col='blue', lwd = 2)
> abline(v=c(m.a-2*sd.a, m.a+2*sd.a), col='green', lwd = 2)
> abline(v=c(m.a-3*sd.a, m.a+3*sd.a), col='black', lwd = 2)
> 
> # score 110 
> pnorm(110, m.a, sd.a) 
[1] 0.8413447
> pnorm(90, m.a, sd.a)
[1] 0.1586553
> pnorm(110, m.a, sd.a) - pnorm(90, m.a, sd.a)
[1] 0.6826895
> 
> pnorm(120, m.a, sd.a) 
[1] 0.9772499
> pnorm(80, m.a, sd.a)
[1] 0.02275013
> pnorm(120, m.a, sd.a) - pnorm(80, m.a, sd.a)
[1] 0.9544997
> 
> pnorm(m.a+3*sd.a, m.a, sd.a) 
[1] 0.9986501
> pnorm(m.a-3*sd.a, m.a, sd.a)
[1] 0.001349898
> pnorm(m.a+3*sd.a, m.a, sd.a) - 
+   pnorm(m.a-3*sd.a, m.a, sd.a)
[1] 0.9973002
> 
> # 110이 평균에서 얼마나 떨어져 있는가를 구해서
> # 그 값에 standard deviation이 몇개나 들어가나 보면?
> # 110 = 1개
> # 120 = 2개 
> # 125 = 2.5개

in R, pnorm(zscore) or pnorm(sd)
for z-score (표준점수) 1, 2, 3에 대한 proportion (percentage) 값은 r에서 아래와 같이 알아본다.

sd.1 <- pnorm(1) - pnorm(-1)
sd.2 <- pnorm(2) - pnorm(-2)
sd.3 <- pnorm(3) - pnorm(-3)
sd.1
sd.2
sd.3
pnorm(1)
pnorm(-1)
pnorm(1)-pnorm(-1) = 0.6826895
> sd.1 <- pnorm(1) - pnorm(-1)
> sd.2 <- pnorm(2) - pnorm(-2)
> sd.3 <- pnorm(3) - pnorm(-3)
> sd.1
[1] 0.6826895
> sd.2
[1] 0.9544997
> sd.3
[1] 0.9973002
> 

이전에 소개한 표준점수 1, 2, 3에 해당하는 면적이 68, 95, 99%라고 소개했지만, 정확한 면적은 각각
0.6826895, 0.9544997, 0.9973002 임을 알수 있다.

그렇다면 68, 95, 99%에 해당하는 정확한 zscore는 (표준점수는) 무엇일까? 이는 R에서 qnorm을 써서 알 수 있다.

in R, qnorm(percentage)는 zscore를 (표준점수를) 출력한다.

qnorm(.025)
qnorm(.975)
# 68%에 해당하는 점수
qnorm(0.68+(0.32/2))
qnorm(0.32/2)

# 95%에 해당하는 점수
qnorm(0.95+(0.05/2)) 
qnorm(0.05/2) 


# 99%에 해당하는 점수
qnorm(0.99+(0.01/2))
qnorm(0.01/2)

아래의 아웃풋으로 우리는
평균을 중심으로

  • 64%에 해당하는 점수는 +-0.9944579 (1이라고 소개했지만)
  • 95%에 해당하는 점수는 +-1.959964 (2라고 소개했지만)
  • 99%에 해당하는 점수는 +-2.326348 (3이라고 소개했지만)
> # 64%에 해당하는 점수
> qnorm(0.84)
[1] 0.9944579
> qnorm(0.16)
[1] -0.9944579
> 
> # 95%에 해당하는 점수
> qnorm(0.025) 
[1] -1.959964
> qnorm(0.975) 
[1] 1.959964
> 
> # 99%에 해당하는 점수
> qnorm(0.01)
[1] -2.326348
> qnorm(0.99)
[1] 2.326348
> 
> qnorm(0.001)
[1] -3.090232
> qnorm(0.999)
[1] 3.090232 
z_score.1789343841.txt.gz · Last modified: by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki