기본적 자료 분석
기본적으로 확인할 것은 데이터의 자료형(data type)이다. 이는 보통 class 혹은 mode 함수로 확인한다. class 는 데이터 자체의 자료형을 반환하고, mode 는 데이터 내부의 자료형을 반환한다. 예를 들어 어떤 매트릭스 변수에 숫자 데이터가 들어있다면, class 를 통해서 변수를 확인할 때는 matrix 와 array 를 반환하지만, mode 를 통해서 확인하면 numeric 을 반환한다. 단, 벡터 변수의 경우 class 로 확인해도 vector 를 반환하는 것이 아니라 내부 데이터 자료형을 반환한다.
범주형 자료
질적 자료(참고 링크)라고도 불린다. 기본적으로 누적 도수(참고 링크)를 통해 비율을 구한 후 이 비율을 분석한다. 아래와 같은 기본적인 데이터를 가정하고 예시를 통해 범주형 자료 분석을 확인하겠다.
data <- c("winter", "fall", "spring", "winter", "summer", "fall", "summer", "summer", "winter", "winter", "winter", "fall", "summer", "spring", "spring")
summary 함수나 table 함수를 이용하면 누적 도수를 구할 수 있다. 여기서는 table 함수를 이용한다.
table(data)
출력 값은 아래와 같다.
data
fall spring summer winter
3 3 4 5
즉 data 에는 fall 이 3개, spring 이 3개, summer 가 4개, winter 가 5개 있는 것을 확인할 수 있다.
비율은 이렇게 구한 누적 도수를 전체 데이터 수로 나눠주면 된다. 전체 데이터 수는 length 함수를 이용한다.
table(data)/length(data)
출력 값은 아래와 같다.
data
fall spring summer winter
0.2000000 0.2000000 0.2666667 0.3333333
즉 fall 이 20%, spring 이 20%, summer 가 26.66%, winter 가 33.33% 있는 것이다.
참고로 아래와 같이 상대 도수의 순서를 바꿀 수 있다.
table(data)[c(2, 3, 1, 4)]
범주형 자료 시각화
- 막대그래프
가장 간단하게 시각화하는 방법은 막대그래프이다. barplot 함수를 이용하면 된다. 위 데이터를 시각화해보겠다.
barplot(table(data)[c(2, 3, 1, 4)], main="season", col=c("#FFC857", "#4D9DE0", "#E9724C", "#2E4057"))
main 은 그래프의 이름을 설정하는 매개변수이고, col 은 그래프의 색을 설정하는 매개변수이다. 그 외 매개변수들이 다양하게 있고, 이는 ?barplot 을 입력하여 확인할 수 있다. 위 코드를 통해 그려진 그래프는 아래와 같다.
- 원그래프
원그래프는 pie 함수를 통해 만들 수 있다. barplot 함수와 비슷하게 사용하면 된다.
pie(table(data)[c(2, 3, 1, 4)], main="season", col=c("#FFC857", "#4D9DE0", "#E9724C", "#2E4057"))
출력은 아래와 같다.
연속형 자료
양적 자료(참고 링크)라고도 불린다. 기본적으로 연산이 가능하기 때문에 평균, 최댓값, 최솟값 등을 먼저 확인한다. 각 대푯값들은 장단점이 있으니 주의(참고 링크)해야 한다. summary 함수를 이용하면 대략적인 정보를 확인할 수 있다. 아래와 같은 데이터가 있다고 하자.
data <- c(1, 52, 45, 32, 6, 18, 48, 37, 26, 18, 67, 8, 16, 29, 67, 67, 8, 45, 54, 45, 25, 34, 6, 3, 100)
summary 함수는 다음과 같이 사용할 수 있다.
summary(data)
출력은 아래와 같다.
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 16.00 32.00 34.28 48.00 100.00
최솟값, 1사분위수, 중앙값, 평균, 3사분위수, 최댓값을 보여준다.
기본적으로 위치 측도와 대푯값은 아래와 같은 함수를 통해 확인할 수 있다.
mean(vector_name) # 벡터 원소들의 평균
mean(vector_name, trim=percentage) # percentage만큼 절사한 벡터 원소들의 평균
median(vector_name) # 벡터 원소들의 중앙값
quantile(vector_name) # 벡터 원소들의 사분위수
max(vector_name) # 벡터 원소 중 최댓값
min(vector_name) # 벡터 원소 중 최솟값
산포는 아래와 같은 함수를 통해 확인할 수 있다.
var(vector_name) # 벡터 원소들의 분산
sd(vector_name) # 벡터 원소들의 표준편차
range(vector_name) # 벡터 원소 중 최댓값과 최솟값
diff(vector_name) # 벡터의 범위, 즉 최댓값 - 최솟값
그외 유용한 함수는 다음과 같다.
sum(vector_name) # 벡터 원소들의 합
length(vector_name) # 벡터의 원소의 개수, 즉 길이
연속형 자료 시각화
- 히스토그램
히스토그램은 막대그래프와 유사하지만, 연속적인 값을 나타낸다. hist 함수를 이용한다.
hist(data, main="data", xlab="x", ylab="y", col="#2E4057", las=1, breaks=15)
위와 같은 코드로 시각화할 수 있는데, main 은 그래프 이름, xlab 과 ylab 은 각 x 와 y 의 이름, col 은 색상, las 는 x 와 y 값의 회전 여부, breaks 는 히스토그램 구간의 개수이다. 아래와 같이 시각화 된다.
- 박스 플롯
상자 그림, 혹은 상자 수염 그림이라고도 한다. 사분위수를 시각화하는 방법으로 boxplot 함수를 이용한다.
boxplot(data, main="data", col="#2E4057")
마찬가지로 다양한 설정을 해줄 수 있다.
중앙 진한 선이 평균이고, 박스 위 아래가 각 1사분위수와 3사분위수이다. 위 아래로 막힌 구간은 IQR 을 이용한 이상치 허용 범위이고, 이 이상을 넘어서는 데이터를 이상치로 구분한다. 위 그래프에서 가장 위 점이 이상치이다. 정확한 수치를 알고싶다면 boxplot.stats 함수를 이용하면 된다.
boxplot.stats(data)
출력은 아래와 같다.
$stats
[1] 1 16 32 48 67
$n
[1] 25
$conf
[1] 21.888 42.112
$out
[1] 100
stats 가 각 사분위수 이고, n 은 관측값 개수, conf 는 중앙값 관련 신뢰구간, out 이 이상치이다.
참고로 데이터프레임에서 특정 변수에 대해 박스 플롯으로 그리고 싶다면, 예를 들어 quakes 데이터셋에서 경도 180을 기준으로 그룹을 나누고 각 그룹의 분포를 알고 싶다면 다음과 같이 할 수 있다.
temp <- quakes
temp$group <- 'A'
temp$group[temp$long>=180] <- 'B'
boxplot(mag~group, data=temp, main="지진 분포")
이때 boxplot 함수에서 mag~group 은 y 축에 mag 를 놓고, 각 group 에 대해 그래프를 그리라는 매개변수이고, 이 데이터를 data=temp 를 통해 temp 에서 가져왔다. 그래프는 아래와 같이 그려진다.
'Language > R' 카테고리의 다른 글
[R] 결측값(missing value)과 특이값(outlier) 처리 (0) | 2024.11.18 |
---|---|
[R] 다중변수 탐색적 자료 분석(EDA) (0) | 2024.10.28 |
[R] which 를 이용한 데이터 위치 확인 (0) | 2024.10.27 |
[R] for 와 while 을 통한 반복문 및 apply (0) | 2024.10.27 |
[R] 데이터 파일과 사용자 정의 함수 및 변수 불러오기 (0) | 2024.10.14 |