R의 표준 편차에 사용되는 공식은 무엇입니까?

R의 표준 편차 함수 sd에 사용되는 공식은 무엇입니까?

댓글

  • 일반적으로 다음을 호출하여 함수 '의 코드를 읽을 수 있습니다. Gschneider가했던 것처럼 괄호가 없습니다.
  • @OweJessen 사실이지만 이것은 생각만큼 도움이되지 않는 경우가 많습니다. R의 많은 함수는 기본 C 코드를 호출하는 래퍼 일뿐입니다. 예를 들어, sd는 var로 연결되어 .Call (C_cov, x, y, na.method, FALSE)로 연결됩니다.

Answer

@Gschneider가 지적했듯이 표본 표준 편차를 계산합니다.

$$ \ sqrt {\ frac {\ sum \ limits_ {i = 1} ^ {n } (x_i-\ bar {x}) ^ 2} {n-1}} $$

다음과 같이 쉽게 확인할 수 있습니다.

> #generate a random vector > x <- rnorm(n=5, mean=3, sd=1.5) > n <- length(x) > > #sd in R > sd1 <- sd(x) > > #self-written sd > sd2 <- sqrt(sum((x - mean(x))^2) / (n - 1)) > > #comparison > c(sd1, sd2) #:-) [1] 0.6054196 0.6054196 

댓글

  • 도움말 페이지 (? sd)를 보면 " var처럼 어떤 이유로 든 ocram을 믿지 않는 경우 ' 분모 n-1 "을 사용합니다. ' s 시뮬레이션 🙂
  • @ Matt : 도움말 파일을 업데이트하고 "와 같이 말해야 할 수 있습니다. 그러면 var "?
  • @OweJessen, 실제로 " var가 정사각형을 반환한다고 말합니다. "
  • 참조 : stackoverflow.com/questions/9508518/ … 이 시뮬레이션이 두 함수에 대해 다른 결과를 제공 할 수있는 이유를 알아보세요.
  • 테스트를위한 또 다른 간단한 방법은 1을 출력하는 sd( c(-1,0,1) )입니다.

Answer

예. 기술적으로는 샘플 분산을 계산 한 다음 제곱근을 취합니다.

> sd function (x, na.rm = FALSE) { if (is.matrix(x)) apply(x, 2, sd, na.rm = na.rm) else if (is.vector(x)) sqrt(var(x, na.rm = na.rm)) else if (is.data.frame(x)) sapply(x, sd, na.rm = na.rm) else sqrt(var(as.vector(x), na.rm = na.rm)) } 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다