카테고리 없음

혼자 공부하는 R데이터분석 2장 - 데이터 분석을 위한 기본 다지기

하양훈 2022. 7. 16. 16:52
반응형

02-1 데이터 분석과정

 

데이터 분석 : 과거 및 현재에 일어난 상황을 활용하여 현황을  파악하고, 앞으로 다가올 상황을 예측하거나 일어날 상황에 대해 타당한 근거자료를 제시할 수 있도록 준비하는 과정

 

<데이터 분석 과정>

- 데이터 분석은 데이터 분석설계, 데이터 준비, 데이터 가공, 데이터 분석, 결론도출의 총 5단계를 거친다.

- 모든 과정이 한번의 주기로 끝나는 것처럼 보이지만, 전체 과정이 계속 반복되는 순환구조라고 볼 수있다.

→ 한번에 끝나기보단 시행착오를 여러번 거치고 전체과정을 수없이 반복해야만 원하는 결과를 얻을 수 있다.

 

 

[1단계 : 데이터 분석 설계하기]

 

1) 분석하려는 주제를 명확하고 구체적으로 설정하고, 주제 내 용어를 이해하기 쉽게 정의한다.

 

Ex) 키 성장에 영향을 미치는 요인은 무엇인가?

 

 

2) 여러 방법으로 주제와 연관된 내용의 가설을 다양하게 설정한다. 이때 가설은 최대한 많이 세운후 데이터 확보 가능 여부를 픈단하는것이 좋다. 이 순서가 바뀌면 시각이 좁아질수 있다.

 

Ex) 가설1 : 키는 성별과 연관

가설 2: 키는 연령과 연관

가설 3 : 키는 부모 유전자와 연관

가설 4 : 키는 우유섭취기간과 연관

 

 

3) 가설에 따른 분석 가능 변수를 구성한다. 분석가능변수를 구성할때는 각 가설에 따라 필요한 변수를 선정해야 한다. 파생변수도 함께 고려하면 좋다.

 

Ex)

구분 종속변수 분석변수 파생변수
가설1 자녀의 키 성별 -
가설2 자녀의 키 연령 5세단위 연령, 10세단위 연령
가설3 자녀의 키 아버지의 키 아버지 키(10cm단위)
가설3 자녀의 키 어머니의 키 어머니 키(10cm단위)
가설4 자녀의 키 우유 섭취 여부 -
가설4 자녀의 키 우유 섭취 기간 우유 섭취 기간(5년단위, 10년단위)

 

 

4) 분석 항목을 결정한다.

 

Ex) 빈도분석 : 응답에 대한 개수 및 비율을 나타내는 분석

상관관계 분석 : 변수 간의 상호 연관성을 파악하기 위한 분석

기타 변수에 따른 검정

 

 

 

[2단계 : 데이터 준비하기]

 

1) 필요한 데이터를 찾아 직접 입력하여 생성

 

2) 기존에 누군가 구성해둔 데이터를 찾아 활용 : 엑셀, txt,csv, 웹크롤링

 

 

[3단계 : 데이터 가공하기]

 

- 원시 데이터를 원하는  형태로 가공하는 일련의 과정.

- 불필요한 변수를 제거하거나 필요한 변수의 데이터만 따로 추출하거나 기존 변수의 데이터 간 연산을 통해 조건에 맞는 데이터를 구성하기도 한다.

- 데이터 값에 따라 그룹화 하여 새로운 변수를 생성할 수도 있다.

 

 

[4단계 : 데이터 분석하기]

 

- 데이터 분석 : 데이터 가공을 거쳐 준비한 데이터를 이용하여 다양한 분서글 시행하는 단계

- 기술통계량(빈도,평균,최댓값,이상치 등)으로 데이터를 파악하고, 시각화를 통해 다양한 그래프를 그려보면서 패턴및 분포를 확인한다.

 

 

[5단계 : 결론 도출하기]

 

다양한 통계량을 통해 가설을 검정하고 의미있는 결과를 정리하여 최종 결과를 도출하면 데이터 분석을 위한 일련의 과정이 마무리 된다.

 

 

 

 

02-2 데이터의 생김새

 

<데이터의 생김새>

- 행과 열로 이루어진 데이터세트가 주를 이룬다.

- 각 행은 데이터의 관측치, 열 이름은 변수, 행과 열에 들어가는 데이터는 값이라고 부른다.

 

<데이터 구조간 관계 및 데이터 유형>

- 데이터는 구조와 형태에 따라 벡터, 행렬, 배열, 리스트, 데이터 프레임으로 이름을 다르게 구분한다.

벡터 : 한가지 데이터 유형으로 구성된 1차원 구조의 데이터

행렬 : 한가지 데이터 유형으로 구성된 2차원 구조의 데이터

배열 : 행렬을 n차원으로 확대한 구조의 데이터

리스트 : 숫자형 벡터, 문자형 벡터 등 여러 데이터 유형이 포함된 1차원 구조의 데이터

데이터 프레임 : 리스트를 2차원으로 확대한 구조의 데이터

 

<데이터 유형>

- 데이터 유형은 숫자형, 문자형, 논리형으로 나눕니다.

숫자형 : 숫자로만 이루어진 데이터

문자형 : 문자로만 이루어진 데이터

논리형 : TRUE 혹은 FALSE로 이루어진 데이터

 

<데이터 유형에 따른 분류>

데이터는 유형에 따라 단일형과 다중형으로 나뉜다.

단일형 : 숫자형 또는 문자형과 같이 한가지 데이터 유형으로만 구성된 데이터, 백터,행렬,배열이 해당

다중형 : 숫자데이터 또는 문자 데이터 등 여러가지 데이터유형으로 구성된 데이터, 리스트, 데이터프레임이 해당

 

<차원에 따른 분류>

차원 : 데이터 내에서 특정 데이터 값을 찾을때 필요한 정보의 개수

1차원 데이터 : 직선위에 데이터값이 나열, 기준점을 중심으로 얼마만큼 떨어져있는지만 알면 된다.

2차원 데이터 : 두가지 정보가 필요하다.

 

  1차원 2차원 n차원
단일형 벡터 행렬 배열
다중형 리스트 데이터프레임  

 

<벡터>

- 데이터 구조의 가장 기본 형태, 1차원이며 한가지 데이터 유형으로 구성

변수명 <- c(값)

- 숫자형, 정수형,문자형, 논리형으로 나눈다.

 

[숫자형 벡터]

#숫자형 벡터 생성하기
ex_vector <- c(-1,0,1)

mode(ex_vector)
# => numeric
str(ex_vector)
# => num[1:3] -1 0 1
length(ex_vector)
# => [1] 3

mode : 데이터 유형을 확인하는 함수

str : 데이터 유형과 값을 전체적으로 확인할 수 있는 함수

length : 데이터 길이를 확인하는 함수

 

[문자형 벡터]

#문자형 벡터 생성하기
ex_vector <- c("1","2","Hello")

ex_vector
# => [1] "1" "2" "Hello"
mode(ex_vector)
# => "character"
str(ex_vector)
# => chr[1:3]  "1" "2" "Hello"

 

[논리형 벡터]

#문자형 벡터 생성하기
ex_vector <- c(TRUE,FALSE,TRUE)

ex_vector
# => [1] TRUE,FALSE,TRUE
mode(ex_vector)
# => "logical"
str(ex_vector)
# => logi [1:3]  TRUE,FALSE,TRUE

 

<범주형 자료>

- 종류를 나타내는 명목형 자료를 바탕으로 범주화한 데이터

 

 

factor(범주화할 자료, labels=c("범주 1","범주 2"))

#숫자형 벡터 생성하기
ex_vector <- c(2,1,3,2,1)

cat_vector <- factor(ex_vector, labels=c("Apple","Banana","Cherry"))
cat_vector
# => Banana Apple Cherry Banana Apple
# Levels: Apple Banana Cherry​

 

<행렬>

matrix(벡터, nrow = 행 개수, ncol = 열개수)
x <- c(1,2,3,4,5,6)
matrix(x, nrow = 2, ncol = 3)
-----------------
	[,1] [,2] [,3]
[1,]   1	3	5
[2,]   2	4 	6
-----------------
matrix(x, nrow = 3, ncol = 2)
-----------------
	[,1] [,2]
[1,]   1	4
[2,]   2	5
[3,]   3	6

행렬 개수에 따라 벡터 데이터가 위에서 아래로(행기준) 순서대로 배치된다. 배치를 바꾸고 싶다면 byrow=T 옵션을 추가하면 된다.

byrow는 데이터를 왼쪽에서 오른쪽으로, 열부처 채우겠다는 옵션으로, T는 TRUE라는 의미이다.

x <- c(1,2,3,4,5,6)
matrix(x, nrow = 2, ncol = 3)
-----------------
	[,1] [,2] [,3]
[1,]   1	3	5
[2,]   2	4 	6
-----------------
matrix(x, nrow = 2, ncol = 3, byrow=T)
-----------------
	[,1] [,2] [,3]
[1,]   1	2	3
[2,]   4	5 	6

 

<배열>

array(변수명, dim = c(행 수, 열 수, 차원 수))
x <- c(1,2,3,4,5,6)
array(x, dim = c(2,2,3))
-----------------
, , 1
    [,1] [,2]
[1,]   1	3
[2,]   2	4
, , 2
	[,1] [,2]
[1,]   5	1
[2,]   6	2
, , 3
	[,1] [,2]
[1,]   3	5
[2,]   4	6

 

<리스트>

list1 <- list(c(1,2,3),"Hello")

list1
--------------------------
[[1]]
[1] 1 2 3
[[2]]
[1] "Hello"
--------------------------

str(list1)
--------------------------
List of 2
$ : num [1:3] 1 2 3
$ : chr "Hello"

 

<데이터 프레임>

data.frame(변수명1, 변수명2, ..., 변수명n)
ID <- c(1,2,3,4,5,6,7,8,9,10)
SEX <- c("F","M","F","M","M","F","F","F","M","F")
AGE <- c(50,40,28,50,27,23,56,47,20,38)
AREA <- c("서울","경기","제주","서울","서울","서울","경기","서울","인천","경기")

dataframe_ex <- data.frame(ID,SEX,AGE,AREA)
dataframe_ex
--------------------------------------------------------------
   ID SEX AGE AREA
1   1   F  50 서울
2   2   M  40 경기
3   3   F  28 제주
4   4   M  50 서울
5   5   M  27 서울
6   6   F  23 서울
7   7   F  56 경기
8   8   F  47 서울
9   9   M  20 인천
10 10   F  38 경기
--------------------------------------------------------------
str(dataframe_ex)
--------------------------------------------------------------
'data.frame':	10 obs. of  4 variables:
 $ ID  : num  1 2 3 4 5 6 7 8 9 10
 $ SEX : chr  "F" "M" "F" "M" ...
 $ AGE : num  50 40 28 50 27 23 56 47 20 38
 $ AREA: chr  "서울" "경기" "제주" "서울" ...
반응형