본문 바로가기
[Public] 수학/기초통계

1. 평균

by 차출발 2009. 12. 29.
반응형

우리 머리 속에는 통계하면 평균, 표준편차, 분산이란 단어가 바로 떠올린다.

머리에 이렇게 들어 있는데 어디에 사용되는지를 모르는데 무슨 소용이 있나

먼저 우리는 용도에 대하여 알아보자. 일반적으로 평균은 많이 접해 보았을 것이다.

학교 다닐 때 시험을 보면서

하지만 분산 표준편차 이런걸 왜 배우는지 살면서 한번은 사용할 수 있을 가 하는 생각이 든다.

나도 그렇다. 하지만 지금은 아니다.

공학도라면 꼭 알아야 할 이론이다. 자세히 알지는 못하지만 내가 느낀 것만 이야기 하겠다.

먼저 통계에 대해 설명해 보려고 한다.

 

통계를 왜 사용해야 하나 ?

우리는 앞서 선형대수학을 배웠다. 선형대수학(linear) 이건 왜 사용하는지는 앞서 복잡한

수식을 일차원적인 식으로 표현 및 근사화 하여 계산하기 쉽게 하기 위함이 아닌가 싶다.

그렇다 통계도 통계적인 특성을 가지는 표본을 숫자로 표현하고 설명이 가능하게 된다.

이 말은 표본에 대한 통계적인 조사를 통하여 통계적 파라메타(평균등등)을 추출하고

그 표본의 특징을 하나의 식으로 간단하게 표현 할 수 있음이기에 배우지 안나 싶다.

 

그럼 이런 특성 통계적 파라메타를 알아보자

파라메타에는 보통 자료의 중심을 나타내는 대표값

자료의 흩어짐 정도를 나타내는 산포도 정도로 나눌 수 있다.

 

자료의 대표값에는 산술평균, 기하평균, 조화평균, 가중평균, 평방평균, 중위수, 최빈수, 등등이 있다.

 

산술평균 (arithmetic mean)

  • 수량으로 관측된 자료의 중심의 위치
  • 대표적인 통계량으로 많이 사용된다.
  • 실제 존재하지 않는 대표치이다. (예를 들면 인원 수 4.7명은 존재하지 않는다.)
  • 극단한 값의 영향을 많이 받는다.
  • 수리적으로 다루기 편하다.

     

     

기하평균(geometric mean)

  • 모든 자료들의 곱의 n제곱근으로 정의
  • 이는 식이 복잡하고 값이 커지는 문제가 발생하여 간단한 대수조작을 통한다

    양변에 자연로그를 취하면

  • 양변에 지수를 다시 취하면

  • 임을 알 수 있다.

  • 예를 들면 4년간 물가상승률이 4%, -3%, 6%, 5% 이라고 하면 4년 동안 경제 성장률은

    위 식에 의하여

    임을 알 수 있다.

     

     

조화평균 (harmonic mean)

  • 자료들의 개수를 각 자료의 역수의 합으로 나눈 값이다.

     

     

★여기서 잠깐★

  • 산술기하평균에는 다음과 같은 특징을 가진다.
  • 기하평균 ≤ 산술평균
  • 예로 임의의 n개 자료에 대하여 다음식이 성립하기에 m을 구하라


가중평균 (weighted mean)

  • 조사 대상에 따라 가중치를 고려한 평균으로 산술평균의 확장형태이다.
  • 예를 들면 대학 성적 2학점 짜리와 3학점 짜리를 가지고 성적 계산하는 것을 생각하면 이해 할 수 있다.

     

     

평방평균 (quadratic mean)

  • 분산이나 표준편차등의 계산에 많이 사용되는 평균으로

    정의 된다.

     

     

중위수 (median)

  • 자료를 정렬하고 정렬 후 중앙에 위치한 값을 중위수라 한다.
  • 자료의 수가 짝수이면 가운데 두 수의 중간값을 취하기도 한다.
  • 중위수는 평균과 다르게 이상 점에 영향을 받지 않는다
  • 이상 점에 영향을 받지 않아 자료의 중심을 파악하는 합리적인 방법으로도 사용된다.

 

최빈수 (mode)

  • 관측도수가 가장 많은 값을 최빈수라 한다.
  • 관측값의 수가 많은 자료를 분석하는 경우 대표값을 이용한다.
  • 중위수와 같이 극단적인 값의 영향을 받지 않지만 수리적으로 다루기 불편하다.

자료의 대표값의 기본적인 개념에 대하여 설명하였다.

그럼 이제 실습을 해보자

중위수와 최빈수, 가중평균은 생략하고 산술 기하 조화 평방 평균에 대하여 실습하여 보자

 

★소스★

#include <stdio.h>

#include <math.h>

#include <memory.h>

 

void main()

{

       printf("데이터수: ");

       int nDataSize;

       scanf("%d", &nDataSize);

       double* data = new double [nDataSize];

       memset(data, 0, sizeof(double)*nDataSize);


       for(int i=0 ; i<nDataSize ; i++)

       {

             scanf("%lf", &data[i]);

             //data[i] = 1.1 * i;

       }

       printf("오토데이터저장\n");


       double TotalValue = 0.0;

       double TotalReValue = 0.0;

       double TotalSqValue = 0.0;

       for(int i=0 ; i<nDataSize ; i++)

       {

             TotalValue   = TotalValue   + data[i];

             TotalReValue = TotalReValue + (1.0/data[i]);

             TotalSqValue = TotalSqValue + pow(data[i], 2.0);

             printf("%lf\t", data[i]);

       }

       printf("\n");

 

       double Arithmetic_Mean = TotalValue / (double)nDataSize;

       double Geometric_Mean = exp(log(TotalValue) / (double)nDataSize);

       double Harmonic_Mean = ((double)nDataSize / TotalReValue);

       double Quadratic_Mean = sqrt(TotalSqValue / (double)nDataSize);

 

       printf("산술평균= %lf\n", Arithmetic_Mean );

       printf("기하평균= %lf\n", Geometric_Mean  );

       printf("조화평균= %lf\n", Harmonic_Mean  );

       printf("평방평균= %lf\n", Quadratic_Mean  );

       delete [] data;

}

 



★결과화면★