59doit
[ R ] 기술통계분석 #2 본문
1. 대표값 구하기 : 자료 전체를 대표하는 값으로 분포의 중심 위치를 나타내는 평균, 중위수, 사분위수, 최빈수 등의 통계량
ex) 생활비 변수를 대상으로 대표값 산출
#1 평균과 중위수
mean(x) # [1] 5.354032 median(x) # [1] 5.4 sort(x) sort(x,decreasing=T) |
mean()함수
median()함수,
sort()함수 : sort(x, decreasing = FALSE, …)
decreasing = TRUE : 내림차순
decreasing = FALSE 또는 option 제외 : 오름차순
#2 사분위수
quantile(x,1/4) # 25% # 4.6 quantile(x,2/4) # 50% # 5.4 quantile(x,3/4) # 75% # 6.2 quantile(x,4/4) # 100% # 7.9 |
ex) 생활비 변수의 최빈수
#1 최빈수: 빈도수가 가장 많은 변량
table()함수
#2 2개의 행을 묶어서 matrix생성
x.m <- rbind(x.t) class(x.m) # [1] "matrix" "array" str(x.m) # int [1, 1:42] 1 2 6 2 2 5 3 3 15 9 ... # - attr(*, "dimnames")=List of 2 # ..$ : chr "x.t" # ..$ : chr [1:42] "2.1" "2.3" "3" "3.3" ... which(x.m == 18) # [1] 19 |
#3 데이터프레임으로 변경
x.df <- as.data.frame(x.m) #which(x.df[1, ] == 18) which(x.df == 18) # [1] 19 |
#4 최빈수와 변량 확인
x.df[1, 19] attributes(x.df) names(x.df[19]) |
attributes()함수: 특정 객체의 속성 정보를 확인할 수 있는 기능
2. 산포도 구하기 : 자료가 대표값으로부터 얼마나 흩어져 분포하고 있는가의 정도를 나타내는 척도 분산(Variance), 표준편차(Standard Deviation)
ex) 생활비 변수를 대상으로 산포도 구하기
var(x) sd(x) sqrt(var(data$cost, na.rm = T)) |
var()함수
sd()함수
sqrt()함수
3. 표본분산과 표본표준편차
표본분산
표본표준편차
표준오차 : 표본과 실제 모집단 간의 차이를 나타내는 값
변동계수(Coefficient of variation)
변동계수 = 표준편차/평균
측정단위가 다른 아이템의 편차를 비교하기 위해 사용
Ex. 평균값이 100일 때 표준편차가 10이면 변동성이 큼
평균값이 1000일 때 표준편차가 10이면 변동성이 작음
4. 빈도분석
비율척도를 대상으로 직접 빈도분석을 수행한 결과는 의미가 없음.
일정한 간격으로 범주화 하여 빈도분석을 해야 의미가 있음
ex) 생활비 변수의 빈도분석과 시각화
#1 연속형 변수의 빈도분석
table(data$cost) |
#2 연속형 변수의 히스토그램 시각화
hist(data$cost) |
#3 연속형 변수의 산점도 시각화
plot(data$cost) |
#4 연속형 변수 범주화
data$cost2[data$cost >= 1 & data$cost <= 3] <- 1 data$cost2[data$cost >= 4 & data$cost <= 6] <- 2 data$cost2[data$cost >= 7] <- 3 |
#5 범주형 데이터 시각화
table(data$cost2) par(mfrow = c(1, 2)) barplot(table(data$cost2)) pie(table(data$cost2)) |
(5) 비대칭도 구하기
* 왜도: 평균을 중심으로 하는 확률분포의 비대칭 정도를 나타내는 지표. 분포의 기울어진 방향과 정도를 나타내는 양
>0 : 분포의 오른쪽 방향으로 비대칭 꼬리가 치우침
<0 : 분포의 왼쪽 방향으로 비대칭 꼬리가 치우친다.
=0 : 평균을 중심으로 좌우대칭
* 첨도: 표준정규분포와 비교하여 얼마나 뾰족한가를 측정하는 지표
=0 (또는 3) : 정규분포 곡선
>0 : 정규분포보다 뾰족한 형태
<0 : 정규분포보다 완만한 곡선 형태
cf) 첨도식에서 -3을 적용하지 않으면 정규분포의 첨도는 3
ex) 패키지를 이용한 비대칭도 구하기
#1 왜도와 첨도 사용을 위한 패키지 설치
install.packages("moments") library(moments) cost <- data$cost |
#2 왜도 구하기
skewness(cost) |
#3 첨도 구하기
kurtosis(cost) |
*kurtosis()함수에서 첨도 식에서 -3을 미 적용 : 정규분포첨도는 3
#4 히스토그램으로 왜도와 첨도 확인
hist(cost) par(mfrow = c(1, 1)) |
ex) 히스토그램과 정규분포 곡선 그리기
hist(cost,freq=F) lines(density(cost), col = 'blue') x <- seq(0,8,0.1) curve(dnorm(x,mean(cost),sd(cost)),col='red',add=T) |
- line()함수: 분포선 추가
- curve()함수: 정규분포 확률밀도 구함
ex) attach()/detach()함수로 기술통계량 구하기
sd <- sd(cost,na.rm=T) sqrt(var(cost,na.rm=T)) sd(cost,na.rm=T) detach(data) |
- attach()함수: database가 R search path에 추가됨. 데이터셋을 추가하면 이후부터는 ‘data$’ 생략 가능
- detach()함수: attach()함수 해제
ex) NA제거 후 기술통계량
#1 NA가 있으면 error발생 함수
test <- c(1:5,NA,10:20) min(test) max(test) range(test) mean(test) |
데이터에 NA가 있는 경우 min(), max(), range(), mean()함수는 결과로 NA 출력
#2 NA제거 후 통계량 구하기
min(test,na.rm=T) max(test,na.rm=T) range(test,na.rm=T) mean(test,na.rm=T) |
na.rm=T 로 NA제거
기술통계량 보고서 작성
도분석과 기술통계량의 분석 결과를 토대로 표본의 인구통계학적 특성을 제시하는 방법
(1) 기술통계량 구하기
ex) 변수 리코딩과 빈도분석 하기
#1 거주지역 변수의 리코딩과 비율 계산
data data$resident2[data$resident == 1] <- '특별시' data$resident2[data$resident >= 2 & data$resident <= 4] <- "광역시" data$resident2[data$resident == 5] <- "시구군" x <- table(data$resident2) x prop.table(x) y <- prop.table(x) round(y*100,2) |
#2 성별 변수의 리코딩과 비율 계산
data$gender2[data$gender == 1] <- "남자" data$gender2[data$gender == 2] <- "여자" x <- table(data$gender2) prop.table(x) y <- prop.table(x) round(y*100,2) |
#3 나이 변수의 리코딩과 비율 계산
data$age2[data$age<=45] <- "중년층" data$age2[data$age>=46 & data$age <=59] <- "장년층" data$age2[data$age>=60] <- "노년층" x <- table(data$age2) x |
#4 학력수준 변수의 리코딩과 비율 계산
data$level2[data$level == 1] <- "고졸" data$level2[data$level == 2] <- "대졸" data$level2[data$level == 3] <- "대학원졸" x <- table(data$level2) x prop.table(x) y <- prop.table(x) round(y*100,2) |
#5 합격여부 변수의 리코딩 및 비율 계산
data$pass2[data$pass == 1] <- "합격" data$pass2[data$pass == 2] <- "불합격" x <- table(data$pass) x prop.table(x) y <- prop.table(x) round(y*100,2) head(data) |
'통계기반 데이터분석' 카테고리의 다른 글
[ R ] 집단간 차이분석 - 세 집단 검정 #3 (0) | 2022.11.23 |
---|---|
[ R ] 집단간 차이분석 - 두 집단 검정 #2 (0) | 2022.11.23 |
[ R ] 집단간 차이분석 - 추정과 검정 #1 (0) | 2022.11.23 |
[ R ] 기술통계분석 연습문제 (0) | 2022.11.22 |
[ R ] 기술통계분석 #1 (0) | 2022.11.22 |