-
[R] R Markdown으로 분석 보고서 만들기Data Analysis/R 2022. 12. 30. 16:06반응형
R Markdown에 대하여
R 마크다운은 데이터 분석의 전 과정을 보고서 형태로 만들 수 있는 R의 좋은 기능입니다.
HTML, PDF, 워드 등의 포맷으로 저장가능하며 문서작성을 따로 하지 않아도 된다는 장점이 있습니다.
기본 문법
1. 청크
· 청크란?
R마크다운에서는 코드를 실행하려면 다음과 같은 문법을 써줘야 되는데, 이를 청크라고 부릅니다.
```{r 청크명}
```*chunk명 생성시 중복된 이름으로 지정시 에러가 나므로 서로 다른 이름으로 지정
2. 수식 입력
$ 수식 $ : inline 삽입
$$ 수식 $$ : 새로운 줄로 삽입$ $ 혹은 $$ $$ 사이에 식을 적으면 수식으로 인식하게 됩니다.
3. 제목 삽입
#
##
###R Markdown 에서는 #으로 제목을 입력할 수 있습니다.
#의 개수를 늘려갈수록 글씨가 작아지게 됩니다.
단축키
1. 청크 생성
Ctrl + Alt + I
매번 청크를 생성할 필요없이 단축키로 한번에 생성할 수 있습니다.
2. knit
Ctrl + Shift + K
knit는 작성한 코드를 문서로 변환시키는 단축키 입니다.
R에서 코드를 한줄씩 실행시키려면 Ctrl + Enter를 입력하는데요.
R마크다운에서도 역시 Ctrl + Enter를 입력시 한줄씩 실행이 가능합니다.
Rmd 문서 생성하기
New File > R Markdown 을 클릭해줍니다.
제목, 저자, 날짜를 자유롭게 작성하고 결과 형태를 지정한뒤
OK를 누르면 기본 형태의 rmd 파일이 생성됩니다.
저는 HTML로 만들어 보도록 하겠습니다.
rmd 문서를 생성하면 다음과 같은 화면이 나옵니다.
처음 생성시 R에서 제공해주는 예시가 적혀 있습니다.
기존 예시는 전부 지우고 새로 작성해보겠습니다.
보고서 작성 예시
저는 함수를 정의하고 단순회귀모형을 적합하여서 실제 회귀식을 추정해보는 실습을 진행했습니다.
1. 데이터 생성
# 데이터 생성 다음과 같은 함수를 고려하자. $$ f(x) = \sin^3(2 \pi x^2), \quad x \in [0,1] $$ 위 함수를 이용해서 다음과 같은 회귀모형을 고려하자. $$ Y = f(x) + \varepsilon $$ 여기서 오차는 $\varepsilon \sim N(0, \sigma^2)$ 이며 이때 $\sigma = 0.1$이다. 위 회귀모형으로부터 $n = 200$개의 데이터를 생성해보자. 이때 $x$는 $[0, 1]$ 에서 등간격으로 생성한다. ```{r data} rm(list=ls()) # seed 고정 set.seed(54) # data generation n = 200 x = seq(0, 1, length = n) # true function f = sin(2 * pi * x^2)^3 #response sigma = 0.1 y = f + rnorm(n, sd = sigma) # data plot plot(x, y, col = "gray", cex = 1.2, bty = "n") #데이터 생성결과 lines(x, f) # 정의한 함수 ``` 우리의 목표는 data만 주어졌을 때, 실제 회귀선을 추정하는 것이다.
코드를 작성하고 knit (Ctrl + Shift + K) 해주면
다음과 같이 문서 형태로 작성이 되면서 html 형식의 파일이 저장된 것을 확인하실 수 있습니다.
[HTML 결과]
데이터와 정의한 함수를 그래프로 나타내보았습니다.
이제 1차부터 10차까지 다항회귀함수를 적합하여 실제 회귀식을 잘 추정하는지 확인해보겠습니다.
2. 다항회귀함수 적합
## for 함수를 이용한 여러 다항회귀함수 적합 for 함수를 이용해서 1차부터 10차까지의 다항회귀함수를 적합해보고자 한다. ```{r lm_for2, fig.height=10, fig.width=10} # 그림 행렬 분할 # 그림을 그릴 때 2x2 행렬 바둑판식으로 배열 # 그림을 행을 우선으로 채워넣음 par(mfrow = c(2,2)) # 빈통 생성 X = NULL for(i in 1:10) { X = cbind(X, x^i) lm_fit = lm (y ~ X) plot(x, y, col = "gray", cex = 1.2, bty = "n", main = paste(i, "-th regression curve")) lines(x, f) lines(x, lm_fit$fitted.values, col = "blue") } ```
다시 한번 knit (Ctrl + Shift + K) 해주고 결과를 확인해보겠습니다.
[HTML 결과]
분석결과 10차 다항회귀함수로 갈수록 점점 비슷해지는걸 확인해보았습니다.
[전체코드와 html 파일]
반응형'Data Analysis > R' 카테고리의 다른 글
[R] 단순회귀분석 (Simple Linear Regression) 실습 (0) 2023.01.10 [R] 회귀분석 실습 - 상관분석 (0) 2023.01.06 [R] plotly 패키지로 인터랙티브 그래프 만들기 (0) 2022.12.29 [R] dplyr 패키지로 데이터 전처리 하기 (2) (1) 2022.12.15 [R] dplyr 패키지로 데이터 전처리 하기(1) (0) 2022.12.14