1변수 요약통계량
1변수 기술 통계량
기술 통계량(Descriptive Statitistics)은 주어진 자료를 몇 개의 숫자로 요약하여 나타내기 위해 구한다. 예를 들어 평균이나 분산, 표준편차 등을 구하는 것은 자료의 주요 특성인 중심의 위치와 퍼짐 정도를 드러낸다.
요약 통계치는 크게 집중경향치와 변산성 측정치로 구분할 수 있다.
-
집중경향치 : 자료의 중심이 어디인지를 나타낸다. 중심을 어떻게 정의하느냐에 따라 통계량이 달라진다. 평균(mean), 중앙값(median), 최빈값(mode), 절사평균(trimmed mean) 등이 많이 쓰인다.
-
변산성 측정치 : 자료가 얼마나 넓게 분포되어 있는가를 나타낸다. 범위(range), 사분점간 범위(inter-quartile range), 분산(variance), 표준편차(standard deviation) 등이 많이 쓰인다.
-
그 외의 요약 통계치 : 그 외에도 분포의 대칭성을 드러내는 왜도(skewness; 대칭도)와 분포의 뾰족한 정도를 나타내는 첨도(kurtosis)가 있다.
R 구현: 집중경향치
- 평균 :
mean()
- 중앙값 :
median()
- 최빈값 :
Mode()
. 아래의 함수는 stackoverflow에서 가져왔다.
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
- 절사평균 :
mean( , trim = 0.2)
.trim=
: 자료의 양극단에서 제외(절사)되는 비율
x <- rnorm(10)
x <- c(x, 2, 2)
# 집중경향치
mean(x)
## [1] 0.3060493
median(x)
## [1] -0.000349418
Mode(x) # table을 통해 빈도수를 확인할 수 있다.
## [1] 2
mean(x, trim = 0.2)
## [1] 0.072794
변산성 측정치
- 범위 :
max()-min()
(최대값과 최소값의 차이) - 최대값 :
max()
- 최소값 :
min()
- 사분점간 범위 :
IQR()
- 분산 :
var()
- 표준편차 :
sd()
x
## [1] 0.22031100 -0.21220588 -0.25715180 -0.01407646 0.72880944 ## [6] -0.03316143 -0.65260856 0.03771608 0.01337762 -0.15841839 ## [11] 2.00000000 2.00000000
# 변산성 측정치
max(x)-min(x)
## [1] 2.652609
IQR(x)
## [1] 0.5193009
var(x)
## [1] 0.7291598
sd(x)
## [1] 0.8539086
백분위수
참고로 백분위수는 중앙값, 최대값, 최소값 등을 모두 나타낼 수 있는 일반화된 개념이다.
R에서 백분위수는 quantile()
함수로 구한다.
- 중앙값 : 50%-백분위수
quantile(x, probs=.5)
- 최소값 : 0%-백분위수
quantile(x, probs=.0)
- 최대값 : 100%-백분위수
quantile(x, probs=1)
- 이 모두를 함께 구하려면
quantile(x, probs=c(0, 0.5, 1))
범주형, 순위형 변수
만약 범주형 또는 순위형 변수에 대해 요약 통계치를 구하고자 한다면 앞에서 얘기한 많은 통계량이 쓸모 없다. 범주형을 예로 들어보자. 만약 서울, 부산, 대구를 1
, 2
, 3
으로 코딩을 하고, 빈도수가 2,1,3일 때 평균을 구하면 2.1666667이다. 하지만 이게 무슨 의미가 있을까?
서울, 부산, 대구를 1
,2
,3
으로 코딩한 것은 단순히 편의를 위해서이다. 서울, 부산, 대구를 3
, 2
, 1
로 코딩하거나 2
, 1
, 3
으로 코딩해도 무방하다. 하지만 코딩 방법에 따라 평균은 달라진다! 분산이나 표준편차의 경우도 평균과 마찬가지로 코딩 방법에 따라 달라진다. 범주형 변수에서 사용할 수 있는 변산성 측정치는 엔트로피(entropy)와 지니불순도(gini impurity index)가 있다.
- 엔트로피[1] :
entropy::entropy(table(x))
- 지니불순도[2] :
1-sum(prop.table(table(x))^2)
gini = function(x, ...) { #useNA = 'always', 'no', 'ifany'
sum(1-prop.table(table(x, ...))^2)
}
범주형, 순위형 자료를 요약하는 한 가지 방법은 표(테이블)을 작성하는 것이다.
- 빈도표 :
table()
- 비율표 :
prop.table()
빈도표(table()
)는 다음의 선택사항이 있다.
NA
를 포함할 것인가? 포함한다면 언제 포함할 것인가?table(x, useNA = 'no')
:NA
를 제외한 빈도표table(x, useNA = 'ifany')
:NA
가 있다면 포함해라table(x, useNA = 'always')
:NA
를 언제나 포함해라
prop.table()
는 빈도표를 사용해서 비율표를 만들어 준다.
prop.table(table(x))
[1]: 엔트로피는 무작위도라고도 불리며, \(- \sum_i p_i \log(p_i)\) 로 구한다. 하나의 범주의 비율이 높아지면 엔트로피는 작아지며, 한 범주가 비율 1일 때 엔트로피는 0이 된다. 최대값은 \(\log n\) ( \(n\) : 범주의 갯수)이다.
[2]: 지니불순도는 \(1-\sum_i p_i^2\) 으로 정의된다. 비율에 맞춰서 임의로, 그리고 독립적으로 범주를 선택했을 때, 두 범주가 다를 확률이다. 만약 하나의 범주가 큰 비율을 차지한다면 지니불순도는 0이 된다. 만약 여러 범주가 비슷한 비율을 차지한다면 지니불순도는 커진다.
Leave a comment