Skip to content

Average

평균(平均)은 통계학에서 두 가지 서로 연관된 뜻이 있다.

  • 일상에서 평균이라고 부르는 것으로 산술 평균이라고도 한다. (기하 평균이나 조화 평균과는 구별된다.) 이 평균은 표본 평균이라고도 한다.
  • 확률변수의 기댓값. 모평균이라고도 한다.

평균은 통계학뿐만 아니라 기하학이나 해석학에서도 쓰인다. 이러한 목적으로 통계학에서는 그다지 많이 쓰이지 않는 다양한 평균이 고안되었다. 이러한 평균에 관해서는 다른 평균 항목을 참고하라.

표본 평균은 모평균 같은 중심성향에 대한 추정량으로 자주 쓰인다. 그러나 다른 추정량이 쓰이기도 한다.

함수의 평균값 계산

정적분을 사용하여 함수의 평균값을 계산한다.

Arithmetic mean

수학과 통계학에서 산술 평균(算術平均, arithmetic mean)은 주어진 수의 합을 수의 개수로 나눈 값이다.

산술 평균(Arithmetic mean)의 기본형은 아래와 같다.

\(\begin{align} c_N &= \frac{1}{N}(x_1 + x_2 + x_3 + ... + x_N) \\ &= \frac{1}{N} \sum_{i=1}^{N}x_i \end{align}\)

지속적인 입력값에 대한 평균 산출

이미 평균 값을 구한 상황(\(c_{N-1}\))에서 다음 값이 들어왔을 때 최종 평균(\(c_{N}\))을 구하고 싶다면 사용할 수 있는 방법이다:

\(\begin{align} c_N &= \frac{1}{N}(x_1 + x_2 + x_3 + ... + x_N) \\ &= \frac{1}{N} \sum_{i=1}^{N}x_i \\ &= \frac{1}{N} \left( \sum_{i=1}^{N-1}x_i + x_N \right) \\ &= \frac{N-1}{N} \frac{1}{N-1} \sum_{i=1}^{N-1}x_i + \frac{1}{N}x_N \end{align}\)

또한, \(c_{N-1}\)는 아래와 같이 정의할 수 있다.

\(\begin{align} c_{N-1} = \frac{1}{N-1} \sum_{i=1}^{N-1}x_i \end{align}\)

직전 평균(\(c_{N-1}\))과 최종 평균(\(c_{N}\))을 조합하면:

\(\begin{align} c_N &= \frac{N-1}{N} \frac{1}{N-1} \sum_{i=1}^{N-1}x_i + \frac{1}{N}x_N \\ &= \frac{N-1}{N} c_{N-1} + \frac{1}{N}x_N \\ \end{align}\)

을 구할 수 있다.

식의 단순화를 위해, \(\alpha\)를 다음과 같이 정의한다면,

\(\begin{align} \alpha &= \frac{N-1}{N} \end{align}\)

\(1 - \alpha\)는 다음과 같다:

\(\begin{align} \alpha &= \frac{N-1}{N} \\ \alpha N &= N - 1 \\ \alpha N - N &= - 1 \\ N - \alpha N &= 1 \\ \frac{N - \alpha N}{N} &= \frac{1}{N} \\ 1 - \alpha &= \frac{1}{N} \end{align}\)

최종적으로:

\(\begin{align} c_N = \alpha c_{N-1} + (1 - \alpha)x_N \end{align}\)

가 된다.

C++ Code

template <typename Base, typename Result = Base, typename Integer = int>
Result averageStep(Base prev_average, Base current, Integer n)
{
    Result const ALPHA = (static_cast<Result>(n) - static_cast<Result>(1)) / static_cast<Result>(n);
    return (ALPHA * static_cast<Result>(prev_average)) +
            ((static_cast<Result>(1) - ALPHA) * static_cast<Result>(current));
}

Python Code

def average_step(prev_average: float, x: float, n: int) -> float:
    alpha = (n - 1) / n
    return (alpha * prev_average) + ((1 - alpha) * x)

See also

Favorite site