SW/R

R : 데이터 분석 사례 (개념 및 예제)

얇은생각 2019. 2. 15. 12:30
반응형

데이터셋 일반 정보

str(iris) # 데이터셋의 전체 정보 확인
# 'data.frame': 150 obs. of 5 variables:
# $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...


str() 함수를 활용하면 데이터셋의 일반 정보를 확인할 수 있습니다. 우선 정보를 읽어보면 데이터셋의 형태는 data frame이라는 것을 알 수 있습니다. 150개의 행을 가지고 있고 5개의 열을 가지고 있습니다. species는 다른 열과 다르게 factor 형이라는 것을 알 수 있습니다.



class(iris) #자료구조 확인
# "data.frame"

head(iris) # 윗 부분만 확인
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 1 5.1 3.5 1.4 0.2
# 2 4.9 3.0 1.4 0.2
# 3 4.7 3.2 1.3 0.2
# 4 4.6 3.1 1.5 0.2
# 5 5.0 3.6 1.4 0.2
# 6 5.4 3.9 1.7 0.4
# Species
# 1 setosa
# 2 setosa
# 3 setosa
# 4 setosa
# 5 setosa
# 6 setosa
dim(iris) # 행과 열 확인
# 150 5
table(iris$Species) # 그룹 확인
# setosa versicolor virginica
# 50 50 50


iris라는 데이터셋을 출력된 값을 통해 해석해보겠습니다. 우선 데이터셋의 자료구조는 data frame입니다. 총 5개의 열을 포함합니다. 데이터를 보아하니 수치 데이터입니다. 하지만 마지막은 그룹 정보를 포함하고 있습니다. dim을 통해 가 행들은 3개의 그룹 중 하나입니다. 그리고 그룹별로 각 50개씩 동일합니다.



4개 열 데이터에 대한 데이터 분포 확인

summary(iris[,1])
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 4.300 5.100 5.800 5.843 6.400 7.900
summary(iris[,2])
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 2.000 2.800 3.000 3.057 3.300 4.400
summary(iris[,"Petal.Length"])
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 1.000 1.600 4.350 3.758 5.100 6.900
summary(iris$Petal.Width)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 0.100 0.300 1.300 1.199 1.800 2.500
sd(iris[,1]) # Sepal.Length
# 0.8280661
sd(iris[,2]) # Sepal.Width
# 0.4358663
sd(iris[,3]) # Petal.Length
# 1.765298
sd(iris[,4]) # Petal.Length
# 0.7622377


열별로 데이터를 분석해봅시다. Sepal.Width 는 데이터의 편차가 작은 것을 값을 통해 확인할 수 있습니다. 반대로 Petal.Length 는 편차가 큰편입니다.



각 열 데이터에 대해 그룹별 분포를 확인

par(mfrow = c(2, 2)) # 그래프 프레임 나누기

boxplot(Sepal.Length~Species, data = iris, # 열 데이터 입력
main = "Sepal.Length") # 열 데이터 제목 입력

boxplot(Sepal.Width~Species, data = iris, # 열 데이터 입력
main = "Sepal.Width") # 열 데이터 제목 입력

boxplot(Petal.Length~Species, data = iris, # 열 데이터 입력
main = "Petal.Length") # 열 데이터 제목 입력

boxplot(Petal.Length~Species, data = iris, # 열 데이터 입력
main = "Petal.Width") # 열 데이터 제목 입력


그래프


위 그래프 데이터를 해석해봅시다. 우선 4개 변수에서 각 그룹간 데이터 크기를 보면 차이가 존재합니다. 또 width와 length에서는 그룹간 겹치는 부분이 넓은 편입니다. Setosa 품조의 경우에는 petal의 width와 length에서 데이터의 편차가 매우 적습니다. 또 이상치에 속하는 데이터가 일부 있습니다.



각 열 데이터에 대해 그룹별 분포를 산점도를 통해 확인

point <- as.numeric(iris$Species) # 각 모양 고르기 위해 선언
color <- c("red","green","blue") # 각 컬러 고르기 위해 선언
pairs(iris[,-5], # 상관 분석을 위해 각 열 데이터 입력
pch=c(point), # 가시화를 위해 모양 설정
col=color[iris[,5]] # 가시화를 위해 색깔 설정
)


그래프

위 그래프를 해석해봅시다. 4개의 변수에는 데이터의 크기의 차이가 존재하는 것이 보입니다. 각 length와 width는 양의 상관관계를 보여주고 있습니다.

반응형

'SW > R' 카테고리의 다른 글

R : 반복문 for (개념 및 예제)  (2) 2019.02.17
R : if문 (개념 및 예제)  (0) 2019.02.16
R : 선그래프 (개념 및 예제)  (0) 2019.02.14
R : 상관분석  (0) 2019.02.13
R : 산점도 (개념 및 예제)  (0) 2019.02.12