정보
-
업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 히스토그램
-
작성자 : 박진만
-
작성일 : 2020-04-01
-
설 명 :
-
수정이력 :
내용
[개요]
-
R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석 환경입니다.
-
통계 분석 기능으로 통계 검정, 선형 회귀 분석, 시계열 데이터 분석, 클러스터링 등을 지원하고 있습니다.
-
또한 최신 논문에서 발표된 같은 새로운 기술도 R로 구현되는 경우가 많습니다.
-
특히 시각화 기능으로 히스토그램, 막대 그래프, 선 그래프, 산포도, 나무 모양 그림이나 히트맵 등 기본적인 그래프가 기본으로 지원하고 있습니다.
-
또한 ggplot2 등의 패키지를 사용하여 더 높은 수준의 그림을 가시화할 수 있습니다.
[특징]
-
데이터를 이해하기 위해서 통계 분석 및 데이터 시각화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어
[기능]
-
데이터형 소개
[활용 자료]
-
없음
[자료 처리 방안 및 활용 분석 기법]
-
없음
[사용법]
-
소스 코드 예시 참조
[사용 OS]
-
Windows 10
[사용 언어]
-
R v3.6.2
-
R Studio v1.2.5033
소스 코드
[히스토그램]
-
히스토그램은 양적 데이터의 분포를 시각화하기 위해 자주 이용되고 있다.
-
즉 데이터 분석 및 통계 검정 등, 그 분포의 특징을 확인하고 데이터 전체의 경향을 파악하는 경우에 사용한다.
-
이 때 히스토그램의 가로축은 계급, 세로축은 도수로 나타낸다.
-
계급이란 데이터를 일정한 폭을 구분하여 만들어진다. 예를 들어, 데이터를 구분 폭을 "5cm"로 설정했을 때, 계급은 "0-5cm", "5-10cm", "10-15cm"... '의 간격으로 만들 수 있다.
-
도수는 각 계급에 포함 된 데이터의 수를 가리킨다. 예를 들어, 식물의 씨앗이 발아 후 10 일 이후에 개체의 길이를 재어 보니 2cm, 5cm, 6cm, 4cm, 9cm, 3cm, 12cm, 1cm였다고 하자. 이 때, 폭 5cm로서 계급과 도수 표를 만들면 아래와 같다.
-
-
이렇게 만들어진 계급과 도수를 각각 가로축과 세로축하여 그래프를 그리면 히스토그램이 그려진다.
계급 | 0≤x <5 | 5≤x <10 | 10≤x <15 | 15≤x <20 |
도수 | 4 | 3 | 1 | 0 |
-
계급의 폭은 스터지스의 공식을 기반으로 결정하거나 스콧의 공식을 기반으로 결정하는 방법이 있다.
-
그러나 이러한 방법은 각각의 특징을 가지는 데이터를 다룰 때 사용한다. 즉 모든 데이터에 이를 적용 할 수 있는 방법은 없다.
-
따라서 계급의 폭은 딱히 공식에 따라 정해진 것이 아닌 데이터의 특징에 따라서, 혹은 분석 목적에 따라 결정하는 것이 좋다.
[hist 함수의 사용법] 기본적인 사용법
-
hist함수에 숫자 벡터를 주는 히스토그램이 그려진다. 히스토그램의 폭은 기본적으로 스터지스의 공식에 의해 계산 된 폭을 이용한다.
x <- rnorm(1000)
hist(x)
hist(x, col = "orange", main = "rnorm")
[hist 함수의 사용법] 너비를 조정하는 방법
-
기본적으로 hist함수에 의해 그려지는 히스토그램의 폭은 스터지스의 공식을 이용하여 계산된다.
-
그러나 폭의 계산식을 변경하고자 하는 경우는 breaks의 인수에 인자를 추가해주면 된다.
-
또한 스터지스의 공식 (Sturges) 이외에 Scott, FD또는 Freedman-Diacoins을 줄 수있다. 또한 breaks폭을 직접 지정하거나 분할하는 값을 지정 할 수 있다.
x <- rnorm(1000)
hist(x, breaks = 10)
hist(x, breaks = c(-5,0, 1, 2, 3, 4, 5))
hist(x, breaks = "Scott")
[hist 함수의 사용법] 세로축을 조정하는 방법
-
히스토그램의 세로축은 도수 (빈도)이지만,이 빈도를 확률로 변경할 수 있다.
-
세로축을 확률로 변경했을 때, 히스토그램의 면적을 모두 더하면 1이된다.
-
세로축을 도수(빈도)로 설정 하거나 확률로 설정 하고자 하는 경우에는 인수 freq를 이용하여 지정한다.
x <- rnorm(1000)
hist(x, freq = FALSE)
hist(x, freq = TRUE)
[hist 함수의 사용법] 밀도를 표시하는 방법
-
hist함수에서 히스토그램을 그린 후 density함수로부터 추측한 밀도 line함수를 겹쳐서 그릴 수 있다.
-
또한 ug함수에서 히스토그램 아래 rug 플롯을 그려 넣을 수도 있다.
x <- c(rnorm(1000), rnorm(1000, 3, 2))
hist(x, freq = FALSE)
lines(density(x), col = "orange", lwd = 2)
hist(x, freq = FALSE)
lines(density(x), col = "orange", lwd = 2)
rug(x)
[hist 함수의 사용법] 여러 히스토그램을 그리는 방법
-
여러 히스토그램 겹쳐 그리는 경우, 히스토그램의 색을 조금 투명화시키는 것으로 겹치는 부분도 보이게 만들 수 있다.
-
히스토그램의 색상을 정할 때 RGB에서는 빨간색은 #ff0000, 파랑은 #0000ff 등과 같이 나타낼 수있다.
-
투명도의 경우 RGB 숫자 뒤에 투명도를 지정하면 된다. 예를 들어, #ff000030과 #0000ff50 등과 같이 지정한다.
x <- rnorm(1000, 10, 5)
y <- rnorm(1000, 15, 5)
hist(x, col = "#ff00ff40", border = "#ff00ff", breaks = 20)
hist(y, col = "#0000ff40", border = "#0000ff", breaks = 20, add = TRUE)
[hist 함수의 사용법] truehist
-
truehist은 MASS 패키지에 포함되어있는 막대 그래프를 그리는 함수이다.
-
사용법은 hist함수와 비슷하지만 옵션이 많은 더 세분화 할 수 있다.
library(MASS)
x <- rnorm(1000)
truehist(x, h = 0.1, prob = TRUE, col = "black")
truehist(x, breaks = c(-4, 0, 1, 2, 3, 4), prob = FALSE, col = "white")
[hist 함수의 사용법] 서로 다른 이중축을 사용한 히스토그램 그리기
-
truehist함수 또는 hist함수를 사용할 때 axes = FALSE지정하는 것으로, 축 좌표를 일시적으로 그리지 않도록 할 수 있다.
-
이것을 이용하면 서로 다른 축의 좌표를 여러개 붙일 수 있다.
-
아래의 예에서는 x 축을 고정하고, 2 개의 히스토그램 그래프를 그렸다.
library(MASS)
par(mar = c(4.5, 4.5, 4.5, 5.5))
x <- rnorm(1000, 300, 100)
y <- rnorm(1000, 500, 200)
truehist(x, xlim = c(0, 1000), h = 10, col = "#ff990080", border = "#ff990080",
axes = FALSE, xlab = "", ylab = "")
axis(side = 1) # x
axis(side = 2, col.axis = "#ff9900", col = "#ff9900") # left y
mtext("Orange", side = 2, line = 3) # left(side = 2), margin(line = 3)
par(new = TRUE)
truehist(y, xlim = c(0, 1000), h = 10, col = "#66990080", border = "#66990080",
axes = FALSE, xlab = "", ylab = "")
axis(side = 4, col.axis = "#669900", col = "#669900") # right y
mtext("Green", side = 4, line = 3) # right(side=4)
[다음글]
[이전글]
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'프로그래밍 언어 > R' 카테고리의 다른 글
[R] R을 이용한 통계 분석 및 데이터 시각화 : 벤 다이어그램 (0) | 2020.04.03 |
---|---|
[R] R을 이용한 통계 분석 및 데이터 시각화 : 막대그래프 (0) | 2020.04.02 |
[R] R을 이용한 통계 분석 및 데이터 시각화 : 수학 함수 그래프 (0) | 2020.04.01 |
[R] R을 이용한 통계 분석 및 데이터 시각화 : 예외처리 (0) | 2020.04.01 |
[R] R을 이용한 통계 분석 및 데이터 시각화 : eval 함수 (0) | 2020.04.01 |
최근댓글