User Tools

Site Tools


estimated_standard_deviation

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
estimated_standard_deviation [2025/08/12 19:58] – [R 에서 SS값이 최소인 v값을 찾기] hkimscilestimated_standard_deviation [2025/08/12 20:00] (current) – [R 에서 SS값이 최소인 v값을 찾기] hkimscil
Line 429: Line 429:
  
 </code> </code>
 +====== output ====== 
 +<code> 
 +> #library(ggplot2) 
 +> #library(ggpmisc) 
 +>  
 +> rm(list=ls()) 
 +> rnorm2 <- function(n,mean,sd){  
 ++   mean+sd*scale(rnorm(n))  
 ++ } 
 +>  
 +> # set.seed(191) 
 +> nx <- 20 
 +> mx <- 50 
 +> sdx <- mx * 0.15 
 +> x <- rnorm2(nx, mx, sdx) 
 +>  
 +> mean(x) 
 +[1] 50 
 +> sd(x) 
 +[1] 7.5 
 +> length(x) 
 +[1] 20 
 +> hist(x) 
 +>  
 +> x.span <- seq(from = mean(x)-6*sd(x),  
 ++               to = mean(x)+6*sd(x),  
 ++               by = 0.1) 
 +>  
 +> residuals <- function(x, v) { 
 ++   return(x - v) 
 ++ } 
 +>  
 +> ssr <- function(x, v) { 
 ++   residuals <- (x - v) 
 ++   return(sum(residuals^2)) 
 ++ } 
 +>  
 +> msr <- function(x, v) { 
 ++   residuals <- (x - v) 
 ++ #  return((sum(residuals^2))/(length(x)-1)) 
 ++   return((mean(residuals^2))) 
 ++ } 
 +>  
 +> srs <- c() # sum of residuals 
 +> ssrs <- c() # sum of square residuals 
 +> msrs <- c() # mean square residuals = variance 
 +> vs <- c() # the value of v in (x - v) 
 +>  
 +> for (i in x.span) { 
 ++   res.x <- residuals(x,i) 
 ++   srs.x <- sum(res.x)   
 ++   ssr.x <- ssr(x,i) 
 ++   msr.x <- msr(x,i) 
 ++   srs <- append(srs, srs.x) 
 ++   ssrs <- append(ssrs, ssr.x) 
 ++   msrs <- append(msrs, msr.x) 
 ++   vs <- append(vs, i) 
 ++ } 
 +> plot(srs) 
 +> plot(msrs) 
 +> plot(srs) 
 +>  
 +> min(msrs) 
 +[1] 53.4375 
 +> min.pos.msrs <- which(msrs == min(msrs)) 
 +> min.pos.msrs 
 +[1] 451 
 +> print(vs[min.pos.msrs]) 
 +[1] 50 
 +>  
 +> plot(vs, msrs) 
 +> plot(vs, srs) 
 +>  
 +>  
 +>  
 +> # the above no gradient 
 +> # mse 값으로 계산 rather than sse  
 +> # 후자는 값이 너무 커짐 
 +>  
 +> gradient <- function(x, v){ 
 ++   residuals = x - v 
 ++   dx = -2 * mean(residuals) 
 ++   return(list("ds" = dx)) 
 ++ } # function returns ds value 
 +>  
 +> residuals <- function(x, v) { 
 ++   return(x - v) 
 ++ } 
 +>  
 +> ssr <- function(x, v) { 
 ++   residuals <- (x - v) 
 ++   return(sum(residuals^2)) 
 ++ } 
 +>  
 +> msr <- function(x, v) { 
 ++   residuals <- (x - v) 
 ++   return((sum(residuals^2))/(length(x)-1)) 
 ++ #  return(mean(residuals^2)) 
 ++ } 
 +>  
 +> # pick one random v in (x-v) 
 +> v <- rnorm(1) 
 +> # Train the model with scaled features 
 +> learning.rate = 1e-1 
 +>  
 +> ssrs <- c() 
 +> msrs <- c() 
 +> mres <- c() 
 +> vs <- c() 
 +> # Record Loss for each epoch: 
 +> zx <- (x-mean(x))/sd(x) 
 +>  
 +> nlen <- 100 
 +> for (epoch in 1:nlen) { 
 ++   residual <- residuals(zx, v) 
 ++   ssr.x <- ssr(zx, v) 
 ++   msr.x <- msr(zx, v) 
 ++   ssrs <- append(ssrs, ssr.x) 
 ++   msrs <- append(msrs, msr.x) 
 ++    
 ++   grad <- gradient(zx, v) 
 ++    
 ++   step.v <- grad$ds * learning.rate 
 ++   v <- v - step.v 
 ++   vs <- append(vs, v) 
 ++ } 
 +>  
 +> tail(srs) 
 +[1] -890 -892 -894 -896 -898 -900 
 +> tail(msrs) 
 +[1] 1 1 1 1 1 1 
 +> tail(ssrs) 
 +[1] 19 19 19 19 19 19 
 +> tail(vs) 
 +[1] 2.936258e-11 2.349006e-11 1.879204e-11 1.503363e-11 1.202690e-11 9.621523e-12 
 +>  
 +> plot(srs) 
 +> plot(msrs) 
 +> plot(ssrs) 
 +> plot(vs) 
 +> # scaled 
 +> v 
 +[1] 9.621523e-12 
 +> v.orig <- (v*sd(x))+mean(x)  
 +> v.orig 
 +[1] 50 
 +>  
 +>  
 +</code>
 ====== tags ====== ====== tags ======
 {{tag>"research methods" "조사방법론" "표준편차" "n-1" "자유도" "degrees of freedom" "n-1" "표준오차"}} {{tag>"research methods" "조사방법론" "표준편차" "n-1" "자유도" "degrees of freedom" "n-1" "표준오차"}}
  
estimated_standard_deviation.txt · Last modified: 2025/08/12 20:00 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki