# 迴圈練習:*T* 檢定與樣本數預測 ###### tags: `R教學` `基礎教學` ```r= rm(list=ls()) ##### p-value ##### n <- c(seq(2,30,1), 40, 60, 80, 100) rep <- 30 pT.valus <- NULL pN.valus <- NULL for (k in 1:rep){ pT <- rep(NA, length(n)) pN <- rep(NA, length(n)) for (j in 1:length(n)){ s.t <- numeric(1000) for( i in 1:1000 ){ s.m <- rnorm(n[j],5,2) s.t[i] <- (mean(s.m)-5)/(sd(s.m)/sqrt(n[j])) } pT [j] <- length(s.t[s.t<qt(0.025, n[j]-1) | s.t>qt(0.975, n[j]-1)])/1000 pN [j] <- length(s.t[s.t<qnorm(0.025, 0, 1) | s.t>qnorm(0.975, 0, 1)])/1000 } pT.valus <- cbind (pT.valus, pT) pN.valus <- cbind (pN.valus, pN) } rownames(pT.valus) <- n rownames(pN.valus) <- n place <- c(seq(2,30,1), 33, 35, 37, 39) plot(place, apply(pT.valus, 1, mean), ylim = c(0,0.4), pch = 19, xaxt = "n", xlab = "樣本數", ylab = "P-value", las = 1) abline (h = 0.05, lty = 3) arrows(place,apply(pT.valus, 1, mean) + apply(pT.valus, 1, sd), place,apply(pT.valus, 1, mean) - apply(pT.valus, 1, sd), code=3,length=0.05,angle=90,lty=3, col=1) axis (1, at = place, labels = n) axis (2, at = 0.05, labels = 0.05, las = 1) text (5, 0.08, "T-distribution") points(place, apply(pN.valus, 1, mean), ylim = c(0,0.3), pch = 19, col = 2) arrows(place,apply(pN.valus, 1, mean) + apply(pN.valus, 1, sd), place,apply(pN.valus, 1, mean) - apply(pN.valus, 1, sd), code=3,length=0.05,angle=90,lty=3, col=2) text (10, 0.15, "Normal-distribution", col =2) #boxplot(t(pT.valus), at = place, ylim = c(0,0.4)) #boxplot(t(pN.valus), at = place, ylim = c(0,0.4), add = T, col = 2) #abline (h = 0.05, lty = 3) ```