z-test_and_t-test_simulation_in_r
                Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| z-test_and_t-test_simulation_in_r [2024/09/12 11:51] – created hkimscil | z-test_and_t-test_simulation_in_r [2024/09/13 10:13] (current) – hkimscil | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| < | < | ||
| - | n.ajstu <- 100000 | + | n.ajstu <- 100000 # 모집단 | 
| - | mean.ajstu <- 110 | + | mean.ajstu <- 110 # 모집단 평균 110이라 가정 | 
| - | sd.ajstu <- 10 | + | sd.ajstu <- 10 # 표준편차 10이라 가정 | 
| set.seed(1024) | set.seed(1024) | ||
| + | # rnorm2 펑션을 이용해서 모집단 만들기 | ||
| + | rnorm2 <- function(n, | ||
| ajstu <- rnorm2(n.ajstu, | ajstu <- rnorm2(n.ajstu, | ||
| Line 10: | Line 12: | ||
| sd(ajstu) | sd(ajstu) | ||
| var(ajstu) | var(ajstu) | ||
| + | |||
| iter <- 10000 # # of sampling | iter <- 10000 # # of sampling | ||
| - | n.4 <- 4 | + | # 이 후 n.# 은 샘플사이즈를 말함 | 
| + | n.4 <- 4   # 샘플사이즈 | ||
| means4 <- rep (NA, iter) | means4 <- rep (NA, iter) | ||
| + | # sample 평션을 이용해서 4개 샘플을 ajoust에서 | ||
| + | # 취한 후, 평균을 내서 이를 means[i]에 기록한다 | ||
| + | # 이것을 iteration 숫자만큼 한다 | ||
| for(i in 1:iter){ | for(i in 1:iter){ | ||
| means4[i] = mean(sample(ajstu, | means4[i] = mean(sample(ajstu, | ||
| Line 54: | Line 61: | ||
| means2500[i] = mean(sample(ajstu, | means2500[i] = mean(sample(ajstu, | ||
| } | } | ||
| - | |||
| - | # n.3600 <- 3600 | ||
| - | # means3600 <- rep (NA, iter) | ||
| - | # for(i in 1:iter){ | ||
| - | #  means3600[i] = mean(sample(ajstu, | ||
| - | # } | ||
| h4 <- hist(means4) | h4 <- hist(means4) | ||
| Line 68: | Line 69: | ||
| h1600 <- hist(means1600) | h1600 <- hist(means1600) | ||
| h2500 <- hist(means2500) | h2500 <- hist(means2500) | ||
| - | # h3600 <- hist(means3600) | ||
| plot(h4, ylim=c(0, | plot(h4, ylim=c(0, | ||
| Line 76: | Line 76: | ||
| plot(h900, add = T, col=" | plot(h900, add = T, col=" | ||
| # plot(h2500, add = T, col=" | # plot(h2500, add = T, col=" | ||
| - | # plot(h3600, add = T, col=" | ||
| - | sss <- c(4, | + | # 아래는 종합적인 출력을 위해서 좀 복잡하게 | 
| - | ses <- rep (NA, length(sss)) # std errors | + | # 코딩을 하였지만, | 
| + | # standard deviation of sample means 즉 | ||
| + | # standard error를 구하는 과정 | ||
| + | sss <- c(4, | ||
| + | ses <- rep (NA, length(sss)) # 각 샘플 사이즈에 대응하는 standard error 값 저장을 위한 공간 | ||
| for(i in 1: | for(i in 1: | ||
| ses[i] = sqrt(var(ajstu)/ | ses[i] = sqrt(var(ajstu)/ | ||
| Line 85: | Line 88: | ||
| data.frame(ses) | data.frame(ses) | ||
| - | se.1 <- ses | + | se.1 <- ses # one standard deviation | 
| - | se.2 <- 2 * ses | + | se.2 <- 2 * ses # two standard deviation | 
| # alt.2 <- qnorm(.975) | # alt.2 <- qnorm(.975) | ||
| # se.2 <- alt.2 * ses | # se.2 <- alt.2 * ses | ||
| - | se.2 | ||
| + | # 2 standard deviation of sample means를 (se) 썼을 때 | ||
| + | # 아랫쪽, 위쪽 경계 | ||
| lower.s2 <- mean(ajstu)-se.2 | lower.s2 <- mean(ajstu)-se.2 | ||
| upper.s2 <- mean(ajstu)+se.2 | upper.s2 <- mean(ajstu)+se.2 | ||
| - | sample <- rnorm2(100, 112.41, 10) | ||
| + | # 이제 머리가 좋아지는 약을 먹은 하나의 샘플을 | ||
| + | # 가정하고 이 샘플의 평균이 | ||
| + | smean <- 113 | ||
| - | ses <- round(ses, | + | # z-test를 위한 계산에서 분자는 difference라고 했고 | 
| - | smean <- mean(sample) | + | # 이를 구한 것 | 
| diff <- smean - mean(ajstu) | diff <- smean - mean(ajstu) | ||
| diff | diff | ||
| - | # z-test | + | # z-test | 
| + | # 이 diff를 샘플사이즈 별로 (8종류) 구한 ses로 | ||
| + | # 나누어 본다 | ||
| z.sc <- (diff)/ses | z.sc <- (diff)/ses | ||
| z.sc | z.sc | ||
| - | # z.crit <- 2 | + | # 위의 z.sc 점수와 강사가 이야기한 2점과 비교 | 
| - | z.crit <- qnorm(.975) | + | # 이 2점을 (standard error 2개) z critical score라고 | 
| - | z.crit | + | # 부른다 | 
| + | z.crit <- 2 | ||
| + | |||
| + | # z.crit <- qnorm(.975) | ||
| + | # z.crit | ||
| + | # 위에서 구한 모든 것들을 종합해서 출력 | ||
| data.frame(cbind(sss, | data.frame(cbind(sss, | ||
|  |  | ||
| z.sc, z.crit, z.sc> | z.sc, z.crit, z.sc> | ||
| - | # t-test | + | |
| - | ses <- round(ses, | + | # t-test | 
| - | smean <- smean | + | # 비해서 샘플사이즈에 따라서 critical value가 달라지게 | 
| + | # 된다. 이를 구한 것이 아래의 qt평션을 이용한 t.crit | ||
| diff <- smean - mean(ajstu) | diff <- smean - mean(ajstu) | ||
| dfs <- sss - 1 | dfs <- sss - 1 | ||
| t.sc <- diff/ses | t.sc <- diff/ses | ||
| - | perc <- round(pt(t.sc, | + | # 아래는 샘플사이즈 별로 각각 구한 | 
| + | # t calculated value 들에 해당하는 | ||
| + | # t distribution에서의 퍼센트 | ||
| + | perc <- round(pt(t.sc, | ||
| + | |||
| + | # 아래는 degrees of freedom이 dfs 이고 | ||
| + | # 97.5 퍼센트일 때 봐야 할 (구해야 할) | ||
| + | # t 값을 구한 것. 이것을 샘플사이즈 별로 한 것 | ||
| + | # 4, 25, . . . . | ||
| t.crit <- qt(.975, dfs, lower.tail = TRUE) | t.crit <- qt(.975, dfs, lower.tail = TRUE) | ||
| + | |||
| + | # 모두 모아서 출력 | ||
| data.frame(cbind(sss, | data.frame(cbind(sss, | ||
| t.sc, dfs, perc, t.crit, t.sc> | t.sc, dfs, perc, t.crit, t.sc> | ||
| Line 127: | Line 151: | ||
| qnorm(.975) | qnorm(.975) | ||
| + | # 하나만 따로 생각해 봄 | ||
| + | # 평균 113, 표준편차가 10인 100개로 이루어진 | ||
| + | # 샘플을 구하여 sa 에 지정 | ||
| + | sa <- rnorm2(100, 113, 10) | ||
| + | |||
| + | # t test 수행 | ||
| ?t.test | ?t.test | ||
| t.test(sample, | t.test(sample, | ||
| + | # two sample t test 의 경우 | ||
| sa <- rnorm2(100, 110, 10) | sa <- rnorm2(100, 110, 10) | ||
| - | sb <- rnorm2(100, | + | sb <- rnorm2(100, | 
| sa.mean <- mean(sa) | sa.mean <- mean(sa) | ||
| Line 146: | Line 177: | ||
| ssa <- var(sa)*dfa | ssa <- var(sa)*dfa | ||
| ssb <- var(sb)*dfb | ssb <- var(sb)*dfb | ||
| + | ssa | ||
| + | ssb | ||
| + | |||
| + | ssa+ssb | ||
| + | dfa+dfb | ||
| var.pooled <- (ssa+ssb)/ | var.pooled <- (ssa+ssb)/ | ||
| vp <- var.pooled | vp <- var.pooled | ||
| + | vp | ||
| se <- sqrt((vp/ | se <- sqrt((vp/ | ||
| - | diff <- sb.mean - sa.mean | + | diff <- sa.mean - sb.mean | 
| t.cal <- diff/se | t.cal <- diff/se | ||
| se | se | ||
| diff | diff | ||
| t.cal | t.cal | ||
| + | t.crit <- qt(.975, 198) | ||
| + | t.crit | ||
| + | pt(t.cal, 198)*2 | ||
| - | + | t.test(sa, sb) | |
| - | + | ||
| - | t.test(s1, s2) | + | |
| </ | </ | ||
z-test_and_t-test_simulation_in_r.1726109476.txt.gz · Last modified:  by hkimscil
                
                