본문 바로가기
Data Science/R

[R 공부하기] 6. 단일변수 자료 탐색 - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2024. 4. 23.
728x90
반응형

 

목차

  1. 범주형 자료
    1. 도수분포표
    2. 막대그래프
    3. 파이 차트
    4.  
  2. 연속형 자료
    1. 평균, 중앙값
    2. 사분위수
    3. 산포
    4. 히스토그램
    5. 상자 그림
  3. 예제

 

1. 범주형 자료

자료의 종류에는 자료의 특성에 따른 분류변수의 개수에 따른 분류로 구분된다.

우선 자료의 특성에 따른 분류로는 범주형 자료(categorical data)연속형 자료(numerical data)로 나누어진다.

또한 변수의 개수에 따른 분류로는 통계학에서의 변수, 단일변수 자료, 다중변수 자료로 나누어진다.

 

이번에는 하나의 변수로만 구성된 자료인 단일변수 자료에 대해 살펴본다.

그중에서도 범주형 자료질적 자료범주나 그룹으로 구분할 수 값으로 구성된 자료이다.

범주형 자료는 숫자로 표현할 수 없고, 대소 비교와 산술 연산이 불가능하다.

숫자로 자료를 표현했다고 해서 연속형 자료가 되는 것은 아니다.

 

단일변수 범주형 자료는 특성이 하나이면서 자료의 특성이 범주형인 자료로 일변량 질적 자료라고 한다.

범주형 자료의 기본 작업은 자료에 포함된 관측값들의 종류별로 개수를 세는 것이다.

개수를 세면 종류별 비율을 알 수 있고, 주로 막대그래프원 그래프를 사용한다.

 

해당 자료에서 그래프를 그릴 때 주어지는 데이터셋은 도수분포표의 형태로 입력해야 한다.

도수분포표는 각 데이터 값의 개수, 즉 데이터 빈도를 나타낸 것으로 table() 함수를 사용한다.

또한 각 데이터의 비율을 나타내려면 도수분포표의 값을 전체 데이터의 개수로 나누어주면 된다.

 

table() 함수로 만든 도수분포표를 사용하여 막대그래프를 그려볼 수 있다.

막대그래프 barplot() 함수로 그릴 수 있다.

barplot() 함수에 도수분포표를 입력하면 해당 데이터 종류별 개수가 막대그래프의 형태로 나타나게 된다.

여기서 main 매개변수는 해당 그래프의 제목을 입력할 수 있다.

 

범주형 자료는 막대그래프뿐만 아니라 원 그래프도 사용할 수 있다.

원 그래프 pie() 함수를 사용한다.

막대그래프 함수인 barplot() 함수를 사용할 때와 동일하게 pie() 함수 안에 도수분포표를 입력하면 된다.

 

범주형 자료가 숫자로 표기되어 있다고 해서 연속형 자료가 되는 것은 아니다.

그저 해당 숫자가 하나의 데이터 종류가 되는 것뿐이다.

 

숫자로 된 범주형 자료를 각 데이터 종류별 숫자를 색상으로 지정하여 종류별로 색상이 다른 막대그래프와 원 그래프를 그릴 수 있다.

색상col 매개변수에 지정하여 나타낼 수 있다.

 

반응형

2. 연속형 자료

연속형 자료양적 자료크기가 있는 숫자들로 구성된 자료이다.

연속형 자료는 범주형 자료와 달리 대소 비교와 산술 연산이 가능하다.

 

단일변수 연속형 자료를 탐색하는 기본 방법에는 평균중앙값을 살펴보는 것이다.

평균은 mean() 함수로 구할 수 있으며, 중앙값은 median() 함수로 구할 수 있다.

각 함수 안에 평균과 중앙값을 구할 데이터를 넣어주면 된다.

 

mean() 함수에서 trim 매개변수를 사용하면 절사평균을 구할 수 있다.

절사평균은 작은 값들의 하위 n%와 큰 값들의 상위 n%를 제외하고 중간에 있는 나머지 값들만 가지고 평균을 계산하는 것이다. trim에 n값을 줄 때는 % 값으로 주면 된다.

양쪽 각 20%를 제외하려면 trim = 0.2로 주면 된다.

 

다음으로 살펴볼 수 있는 것은 사분위수이다.

사분위수는 값들을 크기 순으로 나열했을 때 4 등분하는 지점에 있는 값들을 나타낸다.

Q11 사분위수, Q22 사분위수, Q33 사분위수를 의미하며 각 25%, 50%, 75%에 위치한 값을 의미한다.

사분위수는 quantile() 함수로 구할 수 있다.

기본적인 등분은 4등분이지만 다른 값으로 구간을 나눌 수도 있다.

데이터셋을 지정하고 뒤에 (범위) / 값 형태로 % 구간을 지정할 수 있다.

그러면 지정해 준 % 구간마다 데이터를 나누어 나타내어 준다.

 

그리고 quantile() 함수와 요약 통계 정보를 나타내는 summary() 함수의 결과를 비교해 보면, summary() 함수의 결과에는 최솟값최댓값, 평균이 포함되어 있는 것을 확인할 수 있다.

 

마지막으로 살펴볼 것은 데이터의 산포이다.

산포는 값들이 퍼져 있는 정도, 흩어져 있는 정도를 나타내는 것이며 분산, 표준편차, 값의 범위, 최댓값과 최솟값의 차이 등이 있다.

분산은 var() 함수로, 표준편차는 sd() 함수로, 값의 범위는 range() 함수로, 최댓값과 최솟값의 차이는 diff() 함수로 구할 수 있다.

분산과 표준편차가 클수록 데이터들이 많이 흩어져 있는 것을 의미하고, 작을수록 모여 있는 것을 의미한다.

diff() 함수를 사용할 때는 range() 함수를 사용해 최솟값과 최댓값을 넣어주면 된다.

 

연속형 자료를 시각화할 때는 히스토그램상자 그림을 사용할 수 있다.

우선 히스토그램 연속형 자료의 분포를 시각화할 때 사용한다.

히스토그램은 구간을 나누고 구간에 속하는 값들의 개수를 세는 방법을 사용하여 그 결과를 그래프로 나타낸다.

hist() 함수로 히스토그램을 그릴 수 있다.

그래프를 그리는 함수에는 많은 매개변수를 지정할 수 있는데, hist() 함수에서 사용한 매개변수를 살펴보면 main, xlab, ylab, border, col, las, breaks 등이 있다.

 

상자 그림사분위수를 시각화할 때 사용한다.

상자 그림은 단일변수 수치형 자료를 파악하는데 자주 사용한다.

boxplot() 함수를 사용하여 상자 그림을 나타낼 수 있다.

boxplot.stats() 함수는 상자 그림의 주요 정보를 나타낸다.

 

boxplot() 함수를 사용할 때도 여러 매개변수들을 지정할 수 있다.

데이터셋뿐만 아니라 특정 독립변수와 종속변수도 지정할 수 있다.

독립변수, 종속변수처럼 지정할 수도 있고 종속변수~독립변수처럼 지정할 수도 있다.

 

3. 예제

단일변수 데이터에 대한 탐색을 쭉 진행해 본다.

우선 csv 형식으로 저장되어 있는 데이터를 불러와 str() 함수로 간단하게 살펴본다.

 

여기서 팩터 형태로 저장되어 있는 name 변수문자 형태로 변경한다.

또한 정수 형태로 저장되어 있는 gender 변수팩터 형태로 변경한다.

변경한 후 str() 함수로 다시 데이터를 살펴보면 각 name 변수와 gender 변수의 자료형태가 바뀐 것을 확인할 수 있다.

 

plot() 함수를 사용하여 그래프를 그려본다.

plot() 함수는 데이터를 지정해 주면 알아서 그래프의 형태를 지정해 그려준다.

plot() 함수 안에 age 변수, height 변수, bloodtype 변수를 각각 넣어 그래프를 그려본다.

숫자로 이루어진 age 변수와 height 변수는 산점도로 표현된 것을 볼 수 있고, 범주형으로 이루어진 bloodtype 변수는 막대그래프로 표현된 것을 볼 수 있다.

 

팩터 형태인 bloodtype 변수의 도수분포표를 구하고 이를 barplot() 함수 안에 넣어 막대그래프를 그릴 수도 있다.

 

데이터 종류별 값의 개수를 나타내는 빈도 막대그래프를 그린다면 위의 방법처럼 도수분포표를 구하고 barplot() 함수로 그릴 수도 있지만, plot() 함수를 사용하면 도수분포표를 구하지 않고도 빈도 막대그래프를 그릴 수 있다.

 

막대그래프를 그릴 때 각 막대의 값이 데이터의 빈도가 아닌 평균값으로 나타낼 수도 있다.

tapply() 함수는 apply() 함수와 유사하다.

tapply(벡터 x, 팩터 index, 함수 func) 형태로 작성해 주면 된다.

func 함수에 mean을 지정하면 각 팩터 종류별 벡터 x 값의 평균을 구해주게 된다.

이를 barplot() 함수를 사용해 막대가 평균값을 나타내는 막대그래프를 그릴 수 있다.

 

연속형 변수로 히스토그램도 그릴 수 있다.

히스토그램을 그릴 때 breaks 매개변수를 지정했는데, 이는 데이터를 나눌 구분 값을 지정하는 것이다.

seq() 함수를 사용하여 전체 구간을 지정할 수도 있고 구간으로 직접 지정할 수도 있고 함수도 지정할 수 있다.

 

728x90
반응형