[ R ] 기술통계분석 #1
기술통계분석
(1) 빈도분석
명목척도 또는 서열척도 같은 범주형 데이터를 대상으로 비율을 측정하는데 주로 이용
명목척도: 명목상 의미 없는 수치로 표현. 예) 거주지역, 성별
서열척도: 계급 순위를 수치로 표현. 예) 직급, 학력 수준
(2) 기술통계분석
등간척도나 비율척도와 같은 연속적 데이터를 분석할 때 이용
등간척도: 속성의 간격이 일정한 값을 갖는 변수. 예) 만족도 조사의 보기
비율척도: 등간척도의 특성에 절대 원점이 존재하는 척도. 0을 기준으로 한 수치. 사칙연산이 가능. 예) 성적, 나이, 수량, 길이, 금액
척도별 기술통계량 구하기
ex) 전체 데이터 셋의 특성 보기
#1 데이터 셋 가져오기
getwd() # "C:/Rwork" data <- read.csv("dataset2/descriptive.csv", header = T) head(data) # resident gender age level cost type survey pass # 1 1 1 50 1 5.1 1 1 2 # 2 2 1 54 2 4.2 1 2 2 # 3 NA 1 62 2 4.7 1 1 1 # 4 4 2 50 NA 3.5 1 4 1 # 5 5 1 51 1 5.0 1 3 1 # 6 3 1 55 2 5.4 1 3 NA |
#2 데이터 셋의 데이터 특성 보기
dim(data) # [1] 300 8 length(data) # [1] 8 length(data$survey) # [1] 300 str(data) # 'data.frame': 300 obs. of 8 variables: # $ resident: int 1 2 NA 4 5 3 2 5 NA 2 ... # $ gender : int 1 1 1 2 1 1 2 1 1 1 ... # $ age : int 50 54 62 50 51 55 56 49 49 49 ... # $ level : int 1 2 2 NA 1 2 1 2 1 2 ... # $ cost : num 5.1 4.2 4.7 3.5 5 5.4 4.1 675 4.4 4.9 ... # $ type : int 1 1 1 1 1 1 1 NA 1 1 ... # $ survey : int 1 2 1 4 3 3 NA NA NA 1 ... # $ pass : int 2 2 1 1 1 NA 2 2 2 1 ... |
- dim () : 객체의 차원을 조회하거나 설정하는 함수
- str - 데이터의 구조적 형태를 요약하여 출력
#3 데이터 특성(최소값, 최대값, 평균, 분위수, 결측치 등) 제공
summary(data) # resident gender age level # Min. :1.000 Min. :0.00 Min. :40.00 Min. :1.000 # 1st Qu.:1.000 1st Qu.:1.00 1st Qu.:48.00 1st Qu.:1.000 # Median :2.000 Median :1.00 Median :53.00 Median :2.000 # Mean :2.233 Mean :1.42 Mean :53.88 Mean :1.836 # 3rd Qu.:3.000 3rd Qu.:2.00 3rd Qu.:60.00 3rd Qu.:2.000 # Max. :5.000 Max. :5.00 Max. :69.00 Max. :3.000 # NA's :21 NA's :13 # cost type survey pass # Min. :-457.200 Min. :1.00 Min. :1.00 Min. :1.000 # 1st Qu.: 4.425 1st Qu.:1.00 1st Qu.:2.00 1st Qu.:1.000 # Median : 5.400 Median :1.00 Median :3.00 Median :1.000 # Mean : 8.752 Mean :1.27 Mean :2.61 Mean :1.432 # 3rd Qu.: 6.300 3rd Qu.:2.00 3rd Qu.:3.00 3rd Qu.:2.000 # Max. : 675.000 Max. :2.00 Max. :5.00 Max. :2.000 # NA's :30 NA's :26 NA's :113 NA's :20 |
- summary - 각 variable에 대한 요약된 데이터 정보 보기, variable이 수치 데이터의 경우 min, 1Q, median, mean, 3Q, max, NA의 개수 등의 정보 보여주며, categorical/factor 데이터의 경우, 각각의 개수 출력
1) 데이터 구조 - class, dim, nrow, ncol
class - 데이터 타입 정보 (vector, list, data.frame 등의 구조)
dim - 데이터의 행 및 열의 개수
nrow - 데이터의 행(row) 개수, 일반적으로 R에서는 Observation의 개수
ncol - 데이터의 열(column) 개수, 일반적으로 R에서는 Variables의 개수
2) 데이터 구성 변수 - names
names - 데이터의 각 variable의 name 출력
3) 데이터 요약 - summary, table, str
summary - 각 variable에 대한 요약된 데이터 정보 보기, variable이 수치 데이터의 경우 min, 1Q, median, mean, 3Q, max, NA의 개수 등의 정보 보여주며, categorical/factor 데이터의 경우, 각각의 개수 출력
table - categorial/factor variable에 대해 각각의 빈도수를 표 형태로 출력
str - 데이터의 구조적 형태를 요약하여 출력
4) 데이터 내용 부분 보기 - head, tail
head - 실제 데이터의 앞쪽 부분 보기 (기본 5개 )
tail - 실제 데이터의 뒷쪽 부분 보기 (기본 5개 )
5) 데이터 크기 - object.size
object.size - 메모리 상에서의 데이터 크기
(1) 명목척도 기술통계량
- 명목상 의미 없는 수치로 표현된 거주지역이나 성별과 같은 명목척도 변수를 대상 구성비율은 표본의 통계량으로 의미
ex) 성별 변수의 기수롱계량과 빈도수
length(data$gender) # [1] 300 summary(data$gender) # Min. 1st Qu. Median Mean 3rd Qu. Max. # 0.00 1.00 1.00 1.42 2.00 5.00 table(data$gender) # 0 1 2 5 # 2 173 124 1 |
ex) 이상치(outlier) 제거
data <- subset(data,gender==1|gender==2) x <- table(data$gender) x # 1 2 # 173 124 barplot(x) ![]() |
ex) 구성 비율 계산
prop.table y <- prop.table(x) round(y*100,2) # 1 2 # 58.25 41.75 |
- prop.table(x)함수 : prop.table(x, margin=NULL)
margin=1(행), 2(열) 계산기준
- round()함수 : round(x, digits=0)
digits: 표시할 소수점 이하 자리
(2) 서열척도 기술통계량
- 계급 순위를 수치로 표현한 계급이나 학력 수준 등과 같은 서열척도 변수를 대상 table()함수로 구해진 빈도수를 통해서 표본의 통계량 산출
ex) 학력수준 변수를 대상으로 구성 비율 산출
length(data$level) # [1] 297 summary(data$level) # Min. 1st Qu. Median Mean 3rd Qu. Max. NA's # 1.000 1.000 2.000 1.842 2.000 3.000 13 table(data$level) # 1 2 3 # 115 99 70 |
ex) 학력수준 변수의 빈도수 시각화
x1 <- table(data$level) barplot(x1) ![]() |
막대차트, 파이차트 주로 사용
(3) 등간척도 기술통계량
- 등간척도: 속성의 간격이 일정한 값을 갖는 변수
ex) 만족도 변수를 대상으로 요약통계량
#1 등간척도 변수 추출
survey <- data$survey survey # [1] 1 2 1 4 3 3 NA NA NA 1 2 2 2 2 NA NA NA NA NA NA NA 2 2 1 # [25] 2 3 3 5 2 NA NA NA NA NA NA NA NA NA 2 2 3 4 3 2 2 3 4 5 # [49] 4 2 NA 2 3 4 3 NA NA NA NA NA NA NA 3 3 3 3 2 2 3 3 NA NA # [73] NA 2 2 2 NA 2 2 3 NA NA 3 3 3 3 3 3 3 1 4 NA NA NA NA 4 # [97] 3 3 4 NA NA NA NA 3 3 2 NA NA 3 NA 2 NA 2 2 5 2 NA 3 NA NA # [121] NA NA NA NA NA NA NA NA 2 2 4 3 4 3 3 3 NA NA NA 2 2 2 2 2 # [145] 1 2 NA NA NA NA NA 3 3 3 3 4 3 NA 4 2 2 2 2 2 NA NA NA NA # [169] 3 3 2 NA 2 3 3 3 NA NA 3 4 3 4 NA NA 3 3 4 2 1 2 4 3 # [193] 3 2 5 2 2 2 2 1 2 4 NA 2 2 1 1 1 2 2 NA NA NA NA NA NA # [217] NA NA NA NA 2 3 4 5 3 3 4 NA 2 1 2 NA 1 2 2 1 2 2 NA NA # [241] 3 4 5 3 NA 3 4 4 5 2 2 3 NA NA 2 1 2 1 NA NA 2 3 NA 3 # [265] 4 3 4 3 4 NA NA NA 2 1 2 NA NA NA NA NA 1 1 2 2 NA NA NA NA # [289] NA 2 1 2 3 NA NA NA NA |
#2 등간척도 요약통계량
summary(survey) # Min. 1st Qu. Median Mean 3rd Qu. Max. NA's # 1.000 2.000 3.000 2.605 3.000 5.000 112 |
ex) 등간척도 빈도분석
x1 <- table(survey) x1 # 1 2 3 4 5 # 20 72 61 25 7 |
ex) 등간척도 시각화
hist(survey)![]() pie(x1) ![]() |
(4) 비율척도 기술통계량
- 비율척도: 등간척도의 특성에 절대 원점(0)이 존재하는 척도
- 사칙연산 가능
- 빈도분석과 기술통계량 등 가장 많은 표본의 통계량을 얻을 수 있는 척도
ex) 생활비 변수 대상 요약통계량
length(data$cost) # [1] 297 summary(data$cost) # Min. 1st Qu. Median Mean 3rd Qu. Max. NA's # -457.200 4.400 5.400 8.784 6.300 675.000 30 |
ex) 데이터 정제(결측치 제거)
plot(data$cost) ![]() data <- subset(data,data$cost>=2&data$cost<=10) x <- data$cost mean(x) # [1] 5.354032 |
- plot()함수로 결측치 발견
- subset()함수로 결측치 제거된 subset 산출