rm(list=ls()) rnorm2 <- function(n,mean,sd){ mean+sd*scale(rnorm(n)) } # set.seed(191) nx <- 1000 mx <- 50 sdx <- mx * 0.1 sdx # 5 x <- rnorm2(nx, mx, sdx) # x <- rnorm2(1000, 50, 5) 와 동일 mean(x) sd(x) length(x) hist(x) x.span <- seq(from = mean(x)-3*sd(x), to = mean(x)+3*sd(x), by = .1) x.span residuals <- function(x, v) { return(x - v) } # sum of square residual 값을 # 구하는 펑션 ssr <- function(x, v) { residuals <- (x - v) return(sum(residuals^2)) } # mean square residual 값을 # 구하는 펑션 (mean square # residual = variance) msr <- function(x, v) { residuals <- (x - v) return((mean(residuals^2))) } ssrs <- c() # sum of square residuals msrs <- c() # mean square residuals = variance vs <- c() # the value of v in (x - v) # x.span의 값들을 v값으로 삼아 sum(x-x.span)^2 처럼 구하면 # SS값을 구한 것이 된다. 우리가 배운 SS값은 x.span의 값으로 # 샘플의 평균을 사용했을 때의 residual 값이다. x.span은 # 샘플의 평균을 중심으로 여러가지 값을 사용하는 것을 가정한다. for (i in x.span) { res.x <- residuals(x,i) msr.x <- msr(x,i) msrs <- append(msrs, msr.x) vs <- append(vs, i) } # 아래 plot은 SS값들이나 (두번째는) MS값들을 v값이 변화함에 # 따라서 (x.span의 범위에 따라서 변화) 어떻게 변화하는지 # 구한 것 plot(msrs) # v값이 x.span에 따라서 변화하여 대입되었을 때의 # MS값들을 (msr 펑션으로 구한 mean square값) # 모아 놓은 값이 msrs msrs # 아래는 위에서 계산한 msr 값들을 저장한 msrs값들 중에서 최소값이 # 되는 것을 찾은 것. 우리는 이것이 샘플의 평균임을 안다. min(msrs) # 최소값일 때의 위치 (msrs에서 몇번째인지) min.pos.msrs <- which(msrs == min(msrs)) min.pos.msrs # msr 최소값이 구해졌을 때 사용된 v값 vs[min.pos.msrs]