데이터의 기본적 종류
1. 연속형 데이터(continuous data) : 일정한 범위 내에서 모든 값을 취하는 데이터이다. f(x) = 2x + 1 (-1<x<1)
2. 이산 데이터(discrete data) : 정수 값을 취하는 데이터이다. discrete의 단어적 의미가 '분리 된', 연속형과 다르게 값을 가지는 데이터. (사건의 발생 빈도, 사람의 수 등등)
3. 범주형 데이터(categorical data) : categorical이라는 의미 그대로 어떤 카테고리가 정해진 값을 취하는 데이과 터이다. (TV 스크린의 종류 도시명 등등)
4. 이진 데이터(binary data) : 0이나 1 또는 참이나 거짓과 같은 값을 가지는 데이터이다. 불리언 데이터라고도 할 수 있으며 범주형 데이터의 특수한 경우라고 볼 수 있다.
5. 순서형 데이터(ordinal data) : 순서가 있는 값을 취하는 데이터이다.
데이터의 특징을 요약하는 요소
1. feature의 대표값으로 나타낼 수 있는 것(위치 추정)
-
평균 : 가장 기본적인 위치 추정 방법으로 모든 값의 합을 총 개수로 나눈 것이다. 평균을 조금 변형한 방법 중 대표적으로 절사평균과 가중평균, 두 종류가 있다. (R은 mean(x), 파이썬은 numpy.mean(x) 함수를 이용해 쉽게 구할 수 있음)
a. 절사평균 : 크기순으로 정렬한 값들의 양 끝에서 일정 개수를 뺀 후 평균을 구하는 방법 이다. 이 방법을 하면 양 끝부분에 있는 극단값(outlier)들의 영향을 제거할 수 있다. (R은 mean(x, trim = n)을 이용해 구할 수 있다. 파이썬에서도 trim 함수를 이용할 수 있는데 절사 평균에 어떻게 적용해야 할지는 찾아봐야 겠다!)
b. 가중평균 : 각각의 값(x)에 가중치(w)를 곱하고 모두 더한 뒤 그것을 가중치의 총 합으로 나눈 것이다. ==>(Σxw)/(Σw). 정확도가 떨어지는 값들에 낮은 가중치를 부여하여 평균을 구 하는 것이 더 합리적이다.
-
중간값 : 데이터를 크기순으로 나열한 후 가운데 위치하는 값이 중간값이다. 중간값은 평균과 달리 양 끝 극단값에 영향을 덜 받는다. (R은 median(x) , 파이썬은 numpy.median(x) 함수를 이용해 구할 수 있다.)
** robust : robust의 단어적 의미는 강직한이다. 즉 로버스트하다 라는 것은 대표값이 극단값에 영향을 적게 받는 다는 말을 의미한다.
2. 변이(variability) 추정
-
표준편차 : 편차(deviation : 관측값과 위치값(평균이나 중간값) 사이의 차이)를 기본으로 하며 위치값 주변으로의 퍼진 정도를 나타낸다. 가장 유명한 변이 추정 방법은 분산(표준편차의 제곱)과 표준편차이다. (R로 sd(x) 파이썬으로 numpy.std(x))
-
사분위범위 : 25%와 75%의 차이를 측정한 것이다. 예를 들어, 1,2,3,4,5,6,7 이라는 수가 있을 때 25%는 2, 75%는 6 따라서 그 차이는 6 - 2 = 4 이다. 백분위수를 이용한 측정 방법은 특이값에 영향을 덜 받는다. (중간값과 비슷한 의미에서 영향을 덜 받는 것 같다.) (R로 IQR(x) 파이썬으로는 사분위수를 측정하는 percentile 함수로 25%와 75%를 구해 차이를 계산해주면 된다. numpy.percentile(x, 75) - numpy.percentile(x, 25))
-- pandas의 describe() 함수를 사용하면 count, mean, std, min, 25%, 50%, 75%, max를 한번에 볼 수 있다.
데이터 분포 정도 알아보기
1. boxplot : 백분위수를 이용해 데이터의 분산을 시각화하는 방법으로 아래와 같이 생겼다. (R에서는 기본적인 형태로는 boxplot(x) 파이썬에서는 matplotlib(as plt) 모듈을 이용해 plt.boxplot(x)로 그릴 수 있다.)
2. 도수분포표(frequency table) : 변수의 범위를 동일하게 나눈 뒤, 각 구간에 해당하는 데이터 값들의 빈도를 나타내는 표(table)이다. R에서는 보통 table 함수를 이용한다.
3. 히스토그램(histogram) : 도수분포표를 시각화하는 방법으로 R에서는 hist(x) 파이썬은 plt.hist(x)로 그린다.
-- 히스토그램과 비슷한 것으로 막대도표(bar chart)라는 것이 있다. 막대도표는 각 범주의 빈도수나 비율을 막대로 나타내는 그림으로 범주형 자료를 보여줄 때 주로 사용한다. 막대도표는 히스토그램과 생김새가 매우 유사하지만, 히스토그램은 x축에 수치적으로 나타낼 수 있는 하나의 변수를 둔다면 막대도표는 각 변수의 서로 다른 범주를 나타낸다. 다시 말하자면 히스토그램은 하나의 변수를 구간을 나눠 각 구간의 빈도수로 그림을 그린다면, 도수분표는 여러 변수의 각 값을 그림으로 그릴 때 사용한다.
4. 밀도 그림(density plot) : 히스토그램을 연속된 선으로 보여주는 그림이다. (데이터의 분포를 연속된 선으로 나타내는 것) 커널밀도추정을 통해 주로 계산한다.
상관관계 : X와 Y가 서로의 값에 영향을 주면 상관관계를 갖는다고 말한다.
1. 상관계수(correlation coefficient) : 상관관계의 정도를 나타내기 위해 사용되는 측정량이다. -1부터 1 사이의 값을 가진다. X가 Y와 반비례하면 음의 상관계수를 가지고 비례하면 양의 상관계수를 가진다. (R로 cor(x,y) 함수를 사용하면 된다. 여기서 x와 y는 data의 변수를 의미한다. 파이썬은 pandas를 이용해 DataFrame을 만들어준 뒤 dataframe["X"].corr(dataframe["Y"])) 이런 식으로 알 수 있다. 이때 상관계수 계산은 피어슨의 상관계수 공식을 이용한다.)
2. 상관행렬(correlation matrix) : 상관관계를 행렬로 나타내는 것이다. 상관행렬은 대칭행렬이다. (Symmetric함) (R에서는 cor(data)를 이용한다. 파이썬은 pandas를 이용해 DataFrame을 만들어준 뒤 dataframe.corr( ) )
X |
Y |
|
X |
1.000 |
0.475 |
Y |
0.475 |
1.000 |
3. 산점도(scatterplot) : 서로 다른 두 변수의 상관도를 나타내는 그림이다. 그림이 y = x의 그래프와 비슷하게 그려질 수록 상관계수가 1에 가깝다고 하며 y = -x 그래프와 비슷하게 그려질 수록 상관계수가 -1에 가깝다고 본다. (R에서는 plot(x,y) 파이썬으로는 matplotlib 모듈의 scatter함수를 사용한다. -> plt.scatter(x,y))
다른 시각화 방법들(엄청 많겠지만 몇가지만)
1. 육각형 구간(hexagonal binning) : 두 변수를 육각형 모양의 구간으로 나눈 뒤 각 구간에 포함된 값으 수에 따라 색을 표시하는 그림이다. 수치형 변수 대 수치형 변수를 시각화 하는 방법이다.
R에서는 아래와 같은 방법으로 ggplot과 hexbin을 이용해 간단하게 그림을 그릴 수 있다.
2. 등고 도표(contour plot) : 지도상 고도를 나타내는 등고선처럼 두 변수의 밀도를 등고선으로 표시한 도표다. 수치형 변수 대 수치형 변수를 시각화 하는 방법이다. 등고 도표는 ggplot과 geom_density2d 함수를 사용하여 그릴 수 있다.
3. 바이올린 도표(violin plot) : box plot의 보완 형태로 밀도 추정을 함께 보여준다. 범주형 변수 대 수치형 변수를 시각화 하는 방법이다. 바이올린 도표은 데이터의 분포를 볼 수 있다는 장점이 있다. ggplot2과 geom_violin 함수를 이용하여 도표를 생성할 수 있다.
'관심있는 주제 > 통계' 카테고리의 다른 글
PCA(Principal Component Analysis) (0) | 2019.05.21 |
---|---|
표본분포 (0) | 2019.04.16 |