티스토리 뷰
1. 단변수 범주형 자료
- MASS 패키지의 Cars93 자료를 불러서 자동차 타입에 따른 빈도를 이용하여 막대그래프 그리기
- library(MASS)
- Cars93 자료는 1993년 미국에서 판매되는 93종의 자동차에 대한 여러 정보를 포함
2. 기본막대그림 ( barplot )
- barplot은 대표적인 단변수 범주형 데이터를 표현할 수 있는 도구
- 사용 예시
# with 함수를 통해 Cars93내의 Type 타입의 데이터가 나타나는 빈도수를 테이블로 구성
tab <- with(Cars93, table(Type))
barplot(tab,
main = "Type of Car", # 기본 막대 그림의 주요 라벨
xlab = "Type", # X축 라벨
ylab = "Number of Car", # Y축 라벨
col = 1:6, # 막대 그림 색상 지정
legend = c("Compact", "Large", "Midsize", "Small", "Sporty", "Van"), # 범례
names.arg = c("Compact", "Large", "Midsize", "Small", "Sporty", "Van")) # 범례 라벨
- x축: 자동차 유형( Type )
- y축: 각 자동차 유형의 빈도수( Number of Car )
- col=1:6: 막대의 색상을 6가지로 지정
- legend: 오른쪽 범례 추가
- names.arg: x축에 표시될 카테고리 이름 지정
3. Side형 막대그림
tab <- with(Cars93, xtabs(~ Type + AirBags))
barplot(tab,
col = rainbow(6),
legend = c('Compact', 'Large', 'Midsize', 'Small', 'Sporty', 'Van'),
xlab = "AirBags",
ylab = "Number of Cars",
beside = TRUE)
- xtabs()
- 교차표 생성
- xtabs(~ Type + AirBags)
- Cars93 데이터셋에서 Type과 AirBags 두 개의 범주형 변수 간 교차빈도표( 분할표 ) 생성
- 범주형 변수 2개 : Type(자동차 유형), AirBags(에어백 타입)
- x축 : 에어백 유형
- y축 : 해당 에어백을 장착한 자동차 수
- beside=TRUE
- 누적 막대가 아닌, 옆으로 나란히 정렬된 막대그래프
- 기본막대그림에서 beside = TRUE가 추가
- col=rainbow(6) : 6개의 범주(자동차 유형)에 대해 다양한 색 지정
- legend : 범례 표시로 색상과 자동차 유형 매칭
4. Stacked 막대그림 – 1
barplot(tab,
col = rainbow(6),
legend = c('Compact', 'Large', 'Midsize', 'Small', 'Sporty', 'Van'),
xlab = "AirBags",
ylab = "Number of Cars",
beside = FALSE)
- beside = FALSE
- 막대들을 누적( stacked ) 형태로 표시
5. Stacked 막대그림 – 2 ( 주석 위치 변경 )
barplot(tab,
col = rainbow(6),
legend = c('Compact', 'Large', 'Midsize', 'Small', 'Sporty', 'Van'),
xlim = c(0, ncol(tab) + 2),
xlab = "AirBags",
ylab = "Number of Cars",
args.legend = list(x = ncol(tab) + 2,
y = max(colSums(tab)),
bty = "n"))
- xlim = c(0, ncol(tab) + 2)
- x축 범위 설정, 범례 공간 확보
- args.legend = list(...)
- 범례 위치 수동 조정
- x = ncol(tab) + 2
- 범례를 막대들 오른쪽에 배치
- y = max(colSums(tab))
- 범례를 y축 위쪽 끝에 위치
- bty = "n”
- 범례 박스 테두리 제거 (n = none)
6. 파이차트 (Pie Chart) – 1
tab <- with(Cars93, table(Type))
pie(tab, col = topo.colors(6))
- with(Cars93, table(Type))
- Cars93 데이터셋에서 자동차 유형(Type)의 빈도수 테이블 생성
- pie(tab)
- 범주형 데이터(tab)를 파이차트로 시각화
- col = topo.colors(6)
- 6가지 색상의 톱그래픽( topographic ) 계열 컬러 사용 (지형도 느낌의 색상)
7. 파이차트 (Pie Chart) – 2
names(tab) <- c("COMPACT", "LARGE", "MIDSIZE", "SMALL", "SPORTY", "VAN")
pie(tab, col = topo.colors(6))
- names(tab) <- …
- 빈도 테이블( tab )의 범주 이름( label )을 사용자 지정한 문자로 바꿈
- pie(tab, col = topo.colors(6))
- 변경된 이름으로 파이차트 생성, 색상은 topo.colors 계열 사용
8. 히스토그램 ( Histogram )
with(Cars93, hist(MPG.highway,
xlab = 'MPG in Highway',
main = 'MPG in Highway'))
- 오른쪽으로 치우친 ( skewed to the right ) 분포
- with(Cars93, ...)
- Cars93 데이터셋 안의 열을 직접 사용할 수 있게 함
- hist(MPG.highway)
- MPG.highway 변수의 히스토그램 생성
- MPG.highway는 연속형 자료여야 함
- MPG.highway 변수의 히스토그램 생성
- xlab( x축 레이블 )
- MPG in Highway
- main( 그래프 제목 )
- MPG in Highway
9. 확률밀도함수 그림( Density Plot )
- vcd 패키지에 있는 Arthritis 자료를 이용한 확률밀도함수 그림
- > library(vcd)
> summary(Arthritis)
> head(Arthritis)
- > library(vcd)
- density 함수의 이용
- with(Arthritis,plot(density(Age)))
- Age(나이) 변수에 대한 확률 밀도 함수를 시각화
- 특징
- 히스토그램보다 매끄러운 곡선 형태
- 데이터 분포의 전반적인 모양을 시각적으로 표현
- 연속형 변수 분석에 적합
- with(Arthritis,plot(density(Age)))
- 확률밀도함수 값을 이전에 그렸던 히스토그램에 overlay 시키기
- 옵션을 probability=T로 지정
- > with(Cars93, hist(MPG.highway, xlab='MPG in Highway', main='MPG in Highway', probability=T))
> with(Cars93, lines(density(MPG.highway), col='red', lwd=2))
- > with(Cars93, hist(MPG.highway, xlab='MPG in Highway', main='MPG in Highway', probability=T))
- probability = T 옵션 사용
- 히스토그램의 y축을 도수(count) 가 아닌 확률밀도(probability) 로 표시
- 이를 통해 밀도 함수(density curve) 와 스케일이 일치되어 겹쳐 그릴 수 있음
- lines() 함수로 덧그리기
- lines(density(MPG.highway))는 해당 데이터의 확률밀도함수를 빨간 선으로 덧그림
- col = 'red'은 색상, lwd = 2는 선 굵기 설정입니다.
- R Console 창에서 colors()를 입력하면 657 종류의 색 지정 옵션을 확인할 수 있음
- 옵션을 probability=T로 지정
10. Quantile-Quantile (QQ) Plot
- 특정 분포를 따르는지 아닌지 Q-Q 그림을 통해서 살펴볼 수 있음
- 자료의 특정 분포를 가정했을 때 얻은 백분위수 값과 샘플 백분위수 값을 x=y 축에 도시하여 y=x 직선 상에 자료가 위치하고 있으면 자료가 가정한 특정분포를 따른다고 해석
- x축
- 가정한 분포(예: 정규분포)의 이론적 분위수
- y축
- 실제 샘플 데이터의 분위수
> with(Cars93,qqnorm(Turn.circle,main='Q-Q plot of Turn.circle
\n (U-turn space, feet)'))
> with(Cars93,qqline(Turn.circle,col='orange',lwd=2))
- qqnorm()
- Turn.circle 데이터의 분위수를 이론적 정규분포의 분위수와 비교하는 Q–Q plot을 그림
- qqline()
- Q–Q plot 위에 기준 직선(y = x)을 그려줌
- col='orange'는 색상 지정, lwd=2는 선 굵기
728x90
'방송대 > R 컴퓨팅' 카테고리의 다른 글
8강. R 함수 만들기 (0) | 2025.04.11 |
---|---|
7강. R 프로그래밍의 기초 (2) (0) | 2025.04.11 |
6강. R 프로그래밍의 기초 (1) (0) | 2025.04.10 |
5강. 데이터 구조 (2) (0) | 2025.03.23 |
4강. 데이터 구조 (1) (0) | 2025.03.15 |
댓글