User Tools

Site Tools


c:ms:2025:lecture_note_week_04

This is an old revision of the document!


# variance 
# why we use n-1 when calculating 
# population variance (instead of N)
a <- rnorm2(100000000, 100, 10)
a.mean <- mean(a)
ss <- sum((a-a.mean)^2)
n <- length(a)
df <- n-1
ss/n
ss/df

# standard deviation 68, 85, 99 rule 
one.sd <- .68
two.sd <- .95
thr.sd <- .99
1-one.sd
(1-one.sd)/2
qnorm(0.16)
qnorm(1-0.16)

1-two.sd
(1-two.sd)/2
qnorm(0.025)
qnorm(0.975)

1-thr.sd
(1-thr.sd)/2
qnorm(0.005)
qnorm(1-0.005)


# sampling distribution 
n.ajstu <- 100000
mean.ajstu <- 100
sd.ajstu <- 10

set.seed(1024)
ajstu <- rnorm2(n.ajstu, mean=mean.ajstu, sd=sd.ajstu)

mean(ajstu)
sd(ajstu)
var(ajstu)
min.value <- min(ajstu)
max.value <- max(ajstu)
min.value
max.value

iter <- 10000 # # of sampling 

n.4 <- 4
means4 <- rep (NA, iter)
for(i in 1:iter){
  means4[i] = mean(sample(ajstu, n.4))
}

n.25 <- 25
means25 <- rep (NA, iter)
for(i in 1:iter){
  means25[i] = mean(sample(ajstu, n.25))
}

n.100 <- 100
means100 <- rep (NA, iter)
for(i in 1:iter){
  means100[i] = mean(sample(ajstu, n.100))
}

n.400 <- 400
means400 <- rep (NA, iter)
for(i in 1:iter){
  means400[i] = mean(sample(ajstu, n.400))
}

n.900 <- 900
means900 <- rep (NA, iter)
for(i in 1:iter){
  means900[i] = mean(sample(ajstu, n.900))
}

n.1600 <- 1600
means1600 <- rep (NA, iter)
for(i in 1:iter){
  means1600[i] = mean(sample(ajstu, n.1600))
}

n.2500 <- 2500
means2500 <- rep (NA, iter)
for(i in 1:iter){
  means2500[i] = mean(sample(ajstu, n.2500))
}

h4 <- hist(means4)
h25 <- hist(means25)
h100 <- hist(means100)
h400 <- hist(means400)
h900 <- hist(means900)
h1600 <- hist(means1600)
h2500 <- hist(means2500)


plot(h4, ylim=c(0,3000), col="red")
plot(h25, add = T, col="blue")
plot(h100, add = T, col="green")
plot(h400, add = T, col="grey")
plot(h900, add = T, col="yellow")


sss <- c(4,25,100,400,900,1600,2500) # sss sample sizes
ses <- rep (NA, length(sss)) # std errors
for(i in 1:length(sss)){
  ses[i] = sqrt(var(ajstu)/sss[i])
}
ses.means4 <- sqrt(var(means4))
ses.means25 <- sqrt(var(means25))
ses.means100 <- sqrt(var(means100))
ses.means400 <- sqrt(var(means400))
ses.means900 <- sqrt(var(means900))
ses.means1600 <- sqrt(var(means1600))
ses.means2500 <- sqrt(var(means2500))
ses.real <- c(ses.means4, ses.means25,
              ses.means100, ses.means400,
              ses.means900, ses.means1600,
              ses.means2500)
ses.real 

ses
se.1 <- ses
se.2 <- 2 * ses 

lower.s2 <- mean(ajstu)-se.2
upper.s2 <- mean(ajstu)+se.2
data.frame(cbind(sss, ses, ses.real, lower.s2, upper.s2))

min.value <- min(ajstu)
max.value <- max(ajstu)
min.value
max.value
# means25 분포에서 population의 가장 최소값인 
# min.value가 나올 확률은 얼마나 될까?
m.25 <- mean(means25)
sd.25 <- sd(means25)
m.25
sd.25
pnorm(min.value, m.25, sd.25)
# 위처럼 최소값, 최대값의 probability를 가지고
# 확률을 구하는 것은 의미가 없음. 즉, 어떤 샘플의
# 평균이 원래 population에서 나왔는지를 따지는 것을
# 그 pop의 최소값으로 판단하는 것은 의미가 없음.
# 그 보다는 sd.25와 같은 standard deviation을 가지
# 고 보는 것이 타당함. 이 standard deviation 을
# standard error라고 부름
se.25 <- sd.25
se.25.2 <- 2 * sd.25
mean(means25)+c(-se.25.2, se.25.2)
# 위처럼 95% certainty를 가지고 구간을 판단하거나
# 아래 처럼 점수를 가지고 probability를 볼 수도
# 있음
pnorm(95.5, m.25, sd.25)
# 혹은 
pnorm(95.5, m.25, sd.25) * 2
# 매우중요. 위의 이야기는 내가 25명의 샘플을 취
# 했을 때, 그 점수가 95.5가 나올 확률을 구해 본것
# 다른 예로
pnorm(106, m.25, sd.25, lower.tail = F)
# 혹은 
2 * pnorm(106, m.25, sd.25, lower.tail = F)

c/ms/2025/lecture_note_week_04.1742788618.txt.gz · Last modified: 2025/03/24 12:56 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki