User Tools

Site Tools


c:mrm:standard_error

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
c:mrm:standard_error [2020/05/17 17:42] – [퍼센티지에서의 표준오차] hkimscilc:mrm:standard_error [2023/05/18 10:19] (current) – [R 에서의 simulation] hkimscil
Line 17: Line 17:
  
 $ \overline{X} \sim \text{N} \left(\mu, \dfrac{\sigma^2}{n} \right)$ $ \overline{X} \sim \text{N} \left(\mu, \dfrac{\sigma^2}{n} \right)$
 +
 +  * 위에서 $\overline{X} $ 는 X bar 들의 분포를 이야기한다. 즉 샘플평균들의 분포(집합)를 말한다. 
 +  * N 은 Normal distribution 을 뜻한다.
 +  * 괄호의 내용은 이 Normal distribution이 
 +    * 평균값으로 $\mu$ 값을 갖고, 
 +    * 분산값으로 $\dfrac{\sigma^2}{n}$ 값을 갖는다는 뜻이다
 +
  
 예, 예,
Line 189: Line 196:
  
 이 논리는 분자부분이 probability sampling을 취했다면 약간의 오차라도 큰 차이가 나지 않을 것이며, n이 충분히 크면, se 값이 충분히 작을 것이라는 논리이다.  이 논리는 분자부분이 probability sampling을 취했다면 약간의 오차라도 큰 차이가 나지 않을 것이며, n이 충분히 크면, se 값이 충분히 작을 것이라는 논리이다. 
- +===== R 에서의 simulation =====
- +
-<code> +
-set.seed(12032) +
-p.n <- 100000 +
- +
-pop <- sample(c("a", "b", "c", "g"), size=p.n, replace=TRUE, prob=c(0.4, 0.3, 0.1,0.2)) +
-pop <- factor(pop) +
- +
-s.2500 <- factor(sample(pop,2500)) +
-s.1600 <- factor(sample(pop,1600)) +
-s.900 <- factor(sample(pop,900)) +
-s.400 <- factor(sample(pop, 400)) +
-s.100 <- factor(sample(pop, 100)) +
-s.49 <- factor(sample(pop, 49)) +
- +
-t.2500 <-data.frame(summary(s.2500)/2500)  +
-t.1600 <-data.frame(summary(s.1600)/1600)  +
-t.900 <- data.frame(summary(s.900)/900) +
-t.400 <- data.frame(summary(s.400)/400) +
-t.100 <- data.frame(summary(s.100)/100) +
-t.49 <- data.frame(summary(s.49)/49) +
- +
-p <- t.100[1,1] +
-q <- 1-p +
-n <- length(s.100) +
- +
-sd.p <- sqrt(p*q) ## 표준편차값 +
-se <- sd.p/sqrt(n) ## 표준오차값 sqrt(n)으로 나눠주기 +
-se2 <- 2*se +
- +
-se +
-se2 +
- +
-p+(c(-se2, se2)) ## 샘플지지율에서 추론한 모집단 지지율 +
-p ## 샘플에서 구한 지지율 +
- +
-data.frame(summary(pop)/p.n)[1,1] ## 실제 모집단의 지지율 +
- +
-</code>+
  
 <code> <code>
 set.seed(1203) set.seed(1203)
 +# p.n 숫자의 모집단을 생성한다. 
 +# 모집단은 a, b, c, g 를 지지하는 비율이
 +# .40, 35, .05, .20 과 같다.
 p.n <- 100000 p.n <- 100000
 pa <- .4 pa <- .4
Line 241: Line 212:
     prob=c(pa, pb, pc, pg))     prob=c(pa, pb, pc, pg))
  
 +# 위의 모집단에서 샘플을 (n = 100) 취하되
 +# 이를 만번 반복한다
 iter <- 10000 iter <- 10000
 n <- 100 n <- 100
-psa <- rep (NA, iter) +psa <- rep (NA, iter) # 샘플에서 (100) a를 선택하는 비율을 기록 
-ps <- matrix(data=NA, nrow=iter, ncol=n)+ps <- matrix(data=NA, nrow=iter, ncol=n) # 각 샘플을 row로 하여 만개의 row를 생성한 후
 for(i in 1:iter){ for(i in 1:iter){
-    ps[i, ] = sample(pop, n) +    ps[i, ] = sample(pop, n) # 만번 반복하여 n개의 (100) sample을 pop에서 취하여 ps matrix에 기록 
-    psa[i] = (length(which(ps[i,]=="a")))/+    psa[i] = (length(which(ps[i,]=="a")))/# 각 row에서 a의 percentage를 구해서 psa[]에 만개를 기록 
-+}  
-hist(psa)+# 정리 
 +# 40%의 a 선택자를 가진 모집단에서 (population) 
 +# 100명의 샘플링을 만번 취했을 때, 그 샘플의 a 선택비율을 기록함 
 sd.a <- sqrt(pa*(1-pa)) sd.a <- sqrt(pa*(1-pa))
 se.a <- sd.a/sqrt(n) se.a <- sd.a/sqrt(n)
Line 269: Line 245:
  
 (b-a)/length(psa)   ## 2se를 사용한 범위인 95% 근처여야 한다. (b-a)/length(psa)   ## 2se를 사용한 범위인 95% 근처여야 한다.
 +
 +hist(psa, freq = F)
 +curve(dnorm(x, mean=mean(psa), sd=sd(psa)), col="blue", 
 +      add=TRUE, lty=1, lwd=3)
 +abline(v=mean(psa), lty=2, lwd=3, col="blue")
 +abline(v=upper)
 +abline(v=lower)
 +
 +
  
 </code> </code>
Line 292: Line 277:
 +     psa[i] = (length(which(ps[i,]=="a")))/n +     psa[i] = (length(which(ps[i,]=="a")))/n
 + } + }
-> hist(psa)+
 > sd.a <- sqrt(pa*(1-pa)) > sd.a <- sqrt(pa*(1-pa))
 > se.a <- sd.a/sqrt(n) > se.a <- sd.a/sqrt(n)
Line 318: Line 303:
 [1] 0.95517 [1] 0.95517
  
 +
 +> hist(psa, freq = F)
 +> curve(dnorm(x, mean=mean(psa), sd=sd(psa)), col="blue", 
 ++      add=TRUE, lty=1, lwd=3)
 +> abline(v=mean(psa), lty=2, lwd=3, col="blue")
 +> abline(v=upper)
 +> abline(v=lower)
 +
 </code> </code>
  
-{{:c:mrm:pasted:20200517-171240.png}}+{{:c:mrm:pasted:20200517-172121.png}} 
 + 
 +<code> 
 +set.seed(12032) 
 +p.n <- 100000 
 +pa <- .4 
 +pb <- .35 
 +pc <- .05 
 +pg <- .2 
 + 
 +pop <- sample(c("a", "b", "c", "g"),  
 +    size=p.n, replace=TRUE,  
 +    prob=c(pa, pb, pc, pg)) 
 +pop <- factor(pop) 
 + 
 +s.2500 <- factor(sample(pop,2500)) 
 +s.1600 <- factor(sample(pop,1600)) 
 +s.900 <- factor(sample(pop,900)) 
 +s.400 <- factor(sample(pop, 400)) 
 +s.100 <- factor(sample(pop, 100)) 
 +s.49 <- factor(sample(pop, 49)) 
 + 
 +t.2500 <-data.frame(summary(s.2500)/2500)  
 +t.1600 <-data.frame(summary(s.1600)/1600)  
 +t.900 <- data.frame(summary(s.900)/900) 
 +t.400 <- data.frame(summary(s.400)/400) 
 +t.100 <- data.frame(summary(s.100)/100) 
 +t.49 <- data.frame(summary(s.49)/49) 
 + 
 +p <- t.100[1,1] 
 +q <- 1-p 
 +n <- length(s.100) 
 + 
 +sd.p <- sqrt(p*q) ## 표준편차값 
 +se <- sd.p/sqrt(n) ## 표준오차값 sqrt(n)으로 나눠주기 
 +se2 <- 2*se 
 + 
 +se 
 +se2 
 + 
 +p+(c(-se2, se2)) ## 샘플지지율에서 추론한 모집단 지지율 
 +p ## 샘플에서 구한 지지율 
 + 
 +data.frame(summary(pop)/p.n)[1,1] ## 실제 모집단의 지지율 
 + 
 +</code> 
 + 
c/mrm/standard_error.1589704962.txt.gz · Last modified: 2020/05/17 17:42 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki