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