기본 콘텐츠로 건너뛰기

통계관련 함수와 메서드 사전

A B C d E F G H I K L M N O P Q R S T U V W Z A statsmodels.ap.stats.anova_lm(x) statsmodels.formula.api.ols 에 의해 생성되는 모형 즉, 클래스 인스턴스(x)를 인수로 받아 anova를 실행합니다. np.argsort(x, axis=-1, kind=None) 객체 x를 정렬할 경우 각 값에 대응하는 인덱스를 반환합니다. Axis는 기준 축을 지정하기 위한 매개변수로서 정렬의 방향을 조정할 수 있음(-1은 기본값으로 마지막 축) pandas.Series.autocorr(lag=1) lag에 전달한 지연수에 따른 값들 사이의 자기상관을 계산 B scipy.stats.bernoulli(x, p) 베르누이분포에 관련된 통계량을 계산하기 위한 클래스를 생성합니다. x: 랜덤변수 p: 단일 시행에서의 확률 scipy.stats.binom(x, n, p) 이항분포에 관련된 통계량을 계산하기 위한 클래스를 생성합니다. x: 랜덤변수 n: 총 시행횟수 p: 단일 시행에서의 확률 C scipy.stats.chi2.pdf(x, df, loc=0, scale=1) 카이제곱분포의 확률밀도함수를 계산 $$f(x, k) =\frac{1}{2^{\frac{k}{2}−1}Γ(\frac{k}{2})}x^{k−1}\exp\left(−\frac{x^2}{2}\right)$$ x: 확률변수 df: 자유도 pd.concat(objs, axis=0, join=’outer’, …) 두 개이상의 객체를 결합한 새로운 객체를 반환. objs: Series, DataFrame 객체. Axis=0은 행단위 즉, 열 방향으로 결합, Axis=1은 열단위 즉, 행 방향으

R markdown과 HTML

1 마크다운 문법
  • 1.1 YAML헤더
  • 1.2 문장내에서의 형식
  • 1.3 블럭형식
  • 1.4 수식 표현
  • 1.5 R code
    • 1.5.1 기능적 옵션
    • 1.5.2 출력옵션
  • 1.6 Figures
  • 1.7 Tables
이 장에서는 R 코드, 그림, 표, 인용, 수식 이론들, 그리고 식들과 같은 책을 구성하는 일반적인 요소들을 소개한다.
먼저 Pandoc의 Markdown의 문법을 소개한다.

1 마크다운 문법

Pandoc의 마크다운 문법을 간략히 소개한다. 이 문법의 좀더 자새한 내용은 http://pandoc.org에서 참조할 수 있다.

1.1 YAML헤더

문서의 제목, 저자, 작성일, 기타 파라미터, 출력형태 등의 정보를 메타데이터라 하는데 이러한 정보는 .Rmd 파일의 제일 상단에 위치한다. 이 정보들을 문서를 렌더링하는 출력 포멧 함수에 적용된다.
이 부분의 작성에 필요한 자체적인 형식이 존재한다.
다음에서 나타낸 것과 같이 이부분의 처음과 끝은 ‘—’(3개이상의 대신선)와 ‘—’ 로 구성되며 내용은 그 사이에 입력된다.
-–
title: ‘test’
author: ‘shs’
output: thml_document
-–
데이터의 입력은 키:값(key:value) 형식을 갖는다. 여러개의 값을 입력하는 경우 대괄호내에서 쉼표로 구성된다. 즉,
[A, B]
또는 여러줄로 표현할 경우는 줄당 하이픈(-)으로 시작한다.
- A
- B
이 헤더 파일은 위와 같은 문법하에 작성되어야 하고 그 문법이 렌더링 시 효과를 나타내기 위해서는 사전에 정의된 키 즉, 사용되는 문서의 템플릿과 rmarkdown 패키지의 출력 포맷 함수에 의해 지정되는 것을 사용하여야 한다. 이렇게 사전에 정의된 것들은 팬독에 의해 최종적으로 문서를 랜더링시 사용되기도 한다. 특히 문서의 포맷은 헤더의 키 output에 전달되는 값들에 의해 효과를 나타낸다. rmarkdown 패키지에 의해 제공되는 기본 출력 포맷 함수는 다음과 같다.
- html_document: HTML 문서
- pdf_document: 레이텍을 사용한 PDF 문서
- word_document: 워드문서
각 함수는 다음과 같이 기본 정보를 찾아볼 수 있다.
Hide
library(rmarkdown)
?html_document
예로 html_document()는 다양한 매개변수를 가지고 있으므로 별도로 지정할 수 있다. 즉, 매개변수(키): 값의 형식으로 작성된다. 그러나 함수의 모든 default(기본) 값들을 설정하기 위해서는 다음과 같이 작성된다.
output: html_document   
또는   
output:   
 html_document: default
와 같이 나타낼 수 있다. 위의 두번째 형식은 output이라는 전체적인 키에 하위에 속하는 html_document라는 변수의 값으로 default값을 설정한다는 의미이다. 주의할 점은 줄바꿈의 경우 들여쓰기(2개의 빈칸)을 해야 한다는 것이다.
위와같은 형식으로 각각의 변수를 키로 사용하여 각 값을 지정할 수 있다. 다음은 제목과 그 제목에 번호 등을 지정하기 위한 방법이다.
title: "example"
output:
 html_document:
   self_contained: false #데이터등 외부로 부터 이용에 대한 지정
   theme: cerulean #선택할 수 있는 여러 테마가 존재 그 중 하나를 지정
   highlight: pygments
   toc: true #목차 테이블의 포함여부
   number_section: true #목차에 번호를 넣을지에 대한 결정
위와 같은 기본 사항은 Rstudio의 툴바에 나타나는 기어표시 버튼을 활성화 시켜 output option에서 설정할 수 있다.

1.2 문장내에서의 형식

** 이탤릭체**
이탤릭체의 문자는 underscores 또는 asterisks에 의해 다음과 같이 작성한다.
_text_, or *text*
이탤릭체는 나타내고자 하는 문자를 underscores 또는 asterisks으로 감싼다.
강조(bold)
위 이탤릭체의 underscore 또는 asteriks를 두개씩 작성한다.
__text__, or **text**
강조체는 나타내고자 하는 문자 양쪽에 underscores 또는 asterisks 두개씩 입력한다.
텍스트 삭제
틸트(물결모양, ~)를 삭제하고자 하는 글자등을 둘러싼다.
~~이것은 삭제표시~~
이것은 삭제표시
아래첨자와 윗첨자
아래첨자는 문자 양쪽을 tilt(~), 윗첨자는 캐럿(^)으로 감싼다.
H~~2~O,  2^10^
**Bold아래첨자윗첨자
문장내 코드표시
문장내의 백틱(키보드 상단의 esc 바로 밑에 있음) 하나씩을 코드주위를 감싼다.
문장내의 `code`를 감싼다.
문장내의 sum(x)
Small cap
Small caps can be produced by the HTML tag span, e.g., Small Caps renders Small Caps.
링크와 이미지
URL이나 이메일 주소를 면< >내에 작성하면 링크로 렌더링된다.
[text](link)의 구문을 사용하여 링크 할 수 있다.
또한 웹사이트를 레퍼런스로 연결하기 위해서는
[사이트이름]: 사이트주소로 연결할 수 있다.
문서 내부에 연결 역시 [이름](링크할 부분의 id)와 같이 동일한 형식으로 연결할 수 있다.
YAML
이미지 역시 유사한 구문을 사용한다. ![image title](path/to/image) 다음 Rmd. 파일의 YAML 헤더 부분의 그림으로 시험적으로 이미지를 호출한 것이다. dynamicDocu
호출한 이미지의 크기 등을 조절은 마크다운에서 직접적으로 조정할 수 없지만 니터 패키지에 의한 include_graphic() 함수를 적용할 수 있다. 예를들어 웹으로 부터 이미지를 호출할 경우 out.width=’40%’와 같은 옵션지정으로 그 크기를 지정할 수 있다.
백텝3개{r out.width='10%'}
library(knitr)
knitr::include_graphics('https://www.rstudio.com/wp-content/uploads/2014/06/RStudio-Ball.png')  
백텝3개
주석(footnote)
캐럿기호와 대괄호를 사용하여 나타낸다. 즉, ^[]
이것은 바닥글을 테스트하기 위한 것이다.1

1.3 블럭형식

단락
특별한 표시 없이 표현되고 단락의 구분은 하나이상의 빈줄을 입력하는 것으로 이루어진다.
일반 방식과 다른 점은 개행을 하기 위해서는 문장 끝에 2개 이상의 빈칸을 입력한 후 엔터키를 실행하거나
줄바꿈을 위한 문장의 끝에 백슬래시’\’를 입력하고 엔터키를 활성시켜야 한다.
엔터키만을 활성하면 줄바꿈없이 동일한 단락으로 인식한다.
머릿글
제목(header)의 크기는 #의 갯수로 그 크기를 조절한다. 1개 부터 6개 까지로 구분된다.
어떤 헤더에 번호가 정해지지 않기 위해 {-}를 머릿글 후에 첨가한다. 또한 문단 후에 헤더를 첨가할 경우 문단과 한 줄을 개행해야 한다.
다음은 예를 보인다.
#### First-level header

#### Second-level header {-}

#### Third-level header
위와같이 작성할 경우 두번째 헤더에 번호가 첨가되지 않는다.
제목을 reference로 사용하기 위해서는 아이디와 클래스를 영문으로 정해야 한다. #팬독 문법{#UsingPandoc .unnumbered}와 같이 설정하는 것은 이 제목의 아이디가 UsingPandoc이 되고 unnumbered라는 클래스를 가지게 된다.
이러한 아이디 부여는 어떤 링크에 대한 레퍼런스로 사용될 수 있으며 커스텀 CSS를 적용할 수 있게 된다. 또한 .unnumbered 클래스를 부여하면 목차에 들어가진 않는다. 이것은 위에서 소개한 {-}와 같은 효과를 나타낸다.
순서없는 목록
일반적인 순서를 정하지 않는 목록을 말하며 이 목록은 +, *, - 기호로 시작하여 각 목록을 구분한다. 구분 기호 다음에 입력한다. 그리고 목록 입력후 1개의 빈줄을 삽입한후 빈칸 4개 혹은 코드입력의 경우 8칸을 첨가한후 작성하면 하위의 블럭이 형성된다.
- (한개의 빈칸 삽입)하나\  (\는 개행을 의미)
- 둘 \
- 셋\
다음과 같이 출력된다.  - 하나
- 둘
- 셋
- one item
- one item
- one item
   - one item
   - one item
위와 같은 표현의 결과는 다음과 같다.
  • one item
  • one item
  • one item
    • one item
    • one item
  • 목록을 입력한 후 한개의 빈줄일 입력하고 다시 목록을 시작할 경우 각 목록은 블럭이 형성된다.
첫번째 단락의 하위단락을 설정하기 위해서는 한개의 빈줄을 입력한후 빈칸 4개를 입력한 후 시작한다.
  • 첫번째 단락
  • 하위단락
  • 두번째 단락으로 다음에 코드를 입력할 경우 8개의 빈칸을 입력한후 코드를 시작한다. 이 경우 각 입력후 1개의 개행을 하면 블럭처리로 출력된다.
  • library(ggplot2)
    ggplot(x, aes(carat, price))+geom_point()
  • 목록 2
    • 하위목록 3
      • 하위목록3.1
순서있는 항목
위의 순서없는 항목에서 사용하는 *,+,- 기호 대신 숫자와 마침표를 사용한다. 예를들어
1. the first item    
   1.1 sub item  
2. the second item    
   2.1 sub item  
3. the third item  
   3.1 sub item
위 형식의 결과는 다음과 같다.
  1. the first item
  2. 1.1 sub item

  3. the second item
  4. 2.1 sub item

  5. the third item
  6. 3.1 sub item
이 경우 목록에 사용되는 수의 순서가 다르다면 처음 시작하는 숫자를 기준으로 자동적으로 순서가 맞추어진다.
7. 하나
6. 둘
5. 다섯
3. 셋
위의 경우의 출력은 다음과 같다.
  1. 하나
  2. 다섯
  • 괄호내에 문자로 목록을 생성할 수 있다.
    1. 4개의 빈칸후에 작성하여 하위 목록이 된다.
정의목록
어떤 정의의 입력을 하나의 블럭으로 나타낼 수 있다. 다음을 보자.
리스트(정의이름)
(빈줄 하나 삽입)
:(콜론후 3개의 빈칸삽입) 원자벡터들이나 행렬들을 한 그룹으로 모아놓은 그룹이라 할 수 있다.    
:   그러므로 이들은 문자, 숫자, 논리 등 다양한 데이터 타입이 혼합되어 구성될 수 있다.
위의 출력은 다음과 같이 나타난다.
리스트
원자벡터들이나 행렬들을 한 그룹으로 모아놓은 그룹이라 할 수 있다.
그러므로 이들은 문자, 숫자, 논리 등 다양한 데이터 타입이 혼합되어 구성될 수 있다.
항목블럭, 아래에서 소개하는 블럭등 블력을 작성한 후 원 다시 텍스트 문단으로 돌아오기 위해서는 개행을 하고 작성한다는 것을 잊지말자.
블록인용문
인용문 즉, 따옴표로 둘러쌓인 문장은 ‘>’ 와 하나의 공백을 입력한 후에 작성한다. 또한 이러한 블록인용문을 시작하기 위해 이전단락과 최소한 한개의 빈줄이 삽입되어야 한다.
>"오랫동안 꿈을 그리는 사람은 마침내 그 꿈을 닮아간다."
>
> --- 앙드레말로
“오랫동안 꿈을 그리는 사람은 마침내 그 꿈을 닮아간다.”
— 앙드레말로
코드블럭
위에서 문장내에 코드를 나타내기 위해서는 백틱(backticks) 한쌍으로 코드 앞뒤에 첨가하여 나타낸다고 했는데 문장과 유리되에 블럭으로 작성하기 위해서는 백틱 3개 또는 4개씩을 앞 뒤에 첨가한다.
이문장은 ```블럭화된 코드```이다.
이를 나타내기 위해서는 위의 표시 처럼 백틱 3개 또는 4개를 양쪽에 첨가한다.
또는 문장과는 두번의 개행이후 빈칸 4개 이후에 작성한다.
빈칸 4개 이후에 작성된 이것은 코드블럭이다.
또한 다음과 같이 tilt(틸트기호, 물결기호)를 네개 사용하여 코드를 감쌀 경우 이 코드는 위와 같은 블럭으로 표현된다. 아래의 경우 #test는 표의 아이디가 되며 numberLines 클래스는 코드에 줄번호를 표시하는 것으로서 startForm=1은 1번 부터 시작된다는 의미이다. 그러나 이속성은 HTML과 LaTex에서만 적용되며 하이라이트 속성을 사용할 경우에만 효과가 나타난다. 이 속성은 추후에 소개한다.
Hide
library(knitr)
df<-data.frame(x=sample(c("x1", "x2"), 5, T), y=rnorm(5), z=rexp(5))
df
kable(df, digits=2)
kable(df, digits=c(NA, 2, 1))
행블록
작성되는 문장의 한행씩을 블럭으로 구분할 수 있다. 이 경우 파이프기호 (|)가 사용된다. 문장의 시작은 이 기호후의 한개의 빈칸 이후에 입력되어야 하며 들여쓰기의 경우 기호+한개의 빈칸이후에 빈칸은 그 수 만큼 들려쓰기의 형태로 출력된다.
이 블럭은 다른 블럭 생성과 마찬가지로 연결되는 단락 또는 문장과 한개 이상의 빈 줄을 입력해야 한다.
|(한개의빈칸)R markdown으로 책을 만들자
(한개의 빈줄)
| 이 경우 R markdown, knitr, pandoc 패키지가 사용된다.

|  R studio에서 pandoc은 기본적으로 장착되어 있다.

|(빈칸의 수만큼 들여쓰기가 된다.)R과 pandoc의 마크다운은 차이는 거의 없으나

|     pandoc 마크다운은 R 마크다운의 확장 역할을 한다.
위의 코딩은 다음과 같이 출력된다.
R markdown으로 책을 만들자
이 경우 R markdown, knitr, pandoc 패키지가 사용된다.
R studio에서 pandoc은 기본적으로 장착되어 있다.
  R과 pandoc의 마크다운은 차이는 거의 없으나
   pandoc 마크다운은 R 마크다운의 확장 역할을 한다.

수평선
+,-,* 기호를 3개 이상있으면 수평선을 나타낸다.
***
---
위코드는 다음과 같다. *** —
일반적인 복잡한 표 작성등은 knitr의 kable()함수나 R에서 data.frame등을 사용하여 만들수 있다. 그러나 간단한 표 작성은 파이프기오(|)를 사용하여 r makedown에서 직접적으로 생성할 수 있다.
|패키지 | 역할|
|:--------:(하이픈은 3개이상)| :--------:|
|knitr| R코드 실행하고 텍스트와 다시 결합|
|pandoc| 마크다운 문법과 다양한 포맷으로 문서를 변환|
|markdown| knitr, pandoc에 의한 렌더링의 기반 |
위에서 나타낸 표현에서 각 행의 양 끝쪽의 파이프라인 기호는 생략이 가능하고 두번째 행의 클론(:)은 문자의 배열 규칙을 나타낸다.
| :----- 는 왼쪽 정렬
`:—-: 는 가운데 정렬
----:는 오른쪽 정렬
위 코드의 결과는 다음과 같다.
패키지
역할
knitr
R코드 실행하고 텍스트와 다시 결합
pandoc
마크다운 문법과 다양한 포맷으로 문서를 변환
markdown
knitr, pandoc에 의한 렌더링의 기반

1.4 수식 표현

문장내에 수식을 표현할 경우 달러표시 한개씩으로 수식을 감싼다. $f(k) = {n \choose k} p^{k} (1-p)^{n-k}$ 이 식의 결과는 f(k)=(nk)pk(1−p)n−kf(k)=(nk)pk(1−p)n−k 과 같이 나타난다.
블럭으로 나타내기 위해서는 달라표시를 두개씩 사용하면 된다.
$$f(k) = {n \choose k} p^{k} (1-p)^{n-k}$$
위의 결과는 다음과 같다.
f(k)=(nk)pk(1−p)n−kf(k)=(nk)pk(1−p)n−k
다음은 배열표현과 행렬등의 표현이다. 아래표현에서 {ccc}는 열의 수, {bmatrix}, {pmatrix}, {vmatrix}는 행렬, 괄호, 그리고 절대값 표시를 나타낸다.
$$\begin{array}{ccc}
x_{11} & x_{12} & x_{13}\\
x_{21} & x_{22} & x_{23}
\end{array}$$
x11x21x12x22x13x23x11x12x13x21x22x23
$$X = \begin{bmatrix}1 & x_{1}\\
1 & x_{2}\\
1 & x_{3}
\end{bmatrix}$$
X=⎡⎣⎢111x1x2x3⎤⎦⎥X=[1x11x21x3]
$$\Theta = \begin{pmatrix}\alpha & \beta\\
\gamma & \delta
\end{pmatrix}$$
Θ=(αγβδ)Θ=(αβγδ)
$$\begin{vmatrix}a & b\\
c & d
\end{vmatrix}=ad-bc$$
∣∣∣acbd∣∣∣=ad−bc|abcd|=ad−bc

1.5 R code

R markdown에서 R 코드를 입력하는 방식은 문장내에 입력과 블럭 형태로 입력하는 두가지 방식이 존재한다. 블력형태를 코드정크(code junk)라고 하고 백틱 3개와 {r}을 첨가한후 코드를 작성하고 백틱 3개를 마지막부분에 첨가하는 형식을 보인다. 다음을 보자.
codeJunk
반면에 문장내에 입력하기 위해서는 “r mean(x)” 와 같이 r 코드를 백틱한쌍에 감싸는 형식을 취한다. 즉, 이들의 결과는 다음과 같이 나타난다.
Hide
x<-rnorm(100)
 hist(x)
객체 x의 평균은 NA이다.
마크다운에서 R코드를 입력하는 부분ㅇ 코드정크(code junk)의 옵션을 별도로 정할 수 있는데 코드정크옵션이라 한다. 이 옵션은 key=vlaue 형식으로 지정하고 주요하게 사용되는 옵션에 대해 소개한다.

1.5.1 기능적 옵션

코드정크의 출력은 소스, 그래프, 텍스트, 경고, 에러등으로 구분될 수 있고 각 출력을 조절하기 위한 옵션을 소개하면 다음과 같다.
cache 옵션
cache =TRUE로 지정하면 이에 해당하는 코드 정크의 경우 cache 파일로 별도로 저장된다. 이것은 새로운 코드정크를 생성하는 경우 기존의 정크와 같을 경우 계산을 하지 않고 cache 파일에 저장된 값을 가져와서 사용하게 된다. 물론 코드나 값등이 변한 경우 새롭게 계산하게 된다. 이 옵션의 경우 계산과정이 복잡한 경우 이 코드가 나올 때마다 시행하는 것을 방지할 목적으로 사용된다. 기본값은 FALSE이다. eval 옵션
eval=FALSE로 지정하면 지정된 코드 정크는 실행되지 않는다.
또한 코드정크에서 지정된 코드만을 실행하고자 할 경우 실행할 줄 번호를 지정할 수 있다. 예를들어 이 정크 부분의 2, 4번 줄의 코드만을 실행하기 위해 eval=c(2,4)라고 지정한다.
include 옵션
include=FALSE는 지정된 코드정크가 출력되지 않는다.
label옵션
코드정크에 이름을 부여한다. 정크에 부여된 이름으로 재사용할 수 있다. 다음을 보자.
위 코드 정크의 경우 전의 코드인 Testhist의 코드 정크를 다시 실행한다.
이름을 부여할 경우 빈칸, 마침표(.)를 사용하지 않는다. 또한 동일한 이름의 코드정크를 재사용할 경우 이름만을 호출하고 그 코드를 다시 작성하면 에러가 발생한다.

1.5.2 출력옵션

다음은 코드 정크의 출력을 조절 하기 위한 옵션들을 정리한 것이다.
echo 옵션
이전의 설명한 eval 옵션과 유사한 기능을 하는 것으로 FALSE로 지정되면 지정된 코드정크는 출력되지 않는다. 또한 일정한 수치를 지정하면 지정된 수치에 해당하는 줄만 코드가 출력된다. 또한 c(3, 6)과 같이 수치형으로 옵션을 지정하는 경우 지정된 줄의 코드만 출력된다. 즉, 다음 코드의 경우 1번 줄의 코드는 출력되지 않는다. 기본은 TRUE로 지정되어 있다.
prompt
논리형으로 값을 전달한다. 즉, T/F로 지정되며 기본(디폴트)는 F이다.
TRUE(T)로 지정되면 정크코드에 프롬프트(>)가 함께 출력된다.
Hide
2+3
rnorm(10) #평균=0, 표준편차 1의 정규분포에 부합하는 랜덤수 10개를 출력
tidy옵션
T/F로 값을 주며 기본은 T이다. 이 경우 코드 작성 시 정리하지 않을 경우에 정리되어 결과를 출력한다. 다음을 보자. prompt=TRUE일 경우 프롬프트 기호와 줄바꿈 기호가 같이 출력이 된다. 이 옵션을 이용하기 위해서는 formatR 패키지를 인스톨해야 한다.
Hide
test<-function(x) {a<-sum(x); n<-length(x)
                 return(a/n)}
Hide
test<-function(x) {a<-sum(x); n<-length(x)
                 return(a/n)}
comment옵션
일반적으로 R markup으로 작성된 출력물에 ##가 부착되어 표현된다. comment 옵션을 이용하여 이 표시를 지정할 수 있다. 다음의 경우 ’*’로 대체하였다.
Hide
2+3
rnorm(10) #평균=0, 표준편차 1의 정규분포에 부합하는 랜덤수 10개를 출력
또한 표시 기호를 제거하기 위해 comment=NA로 지정한다. 기본값은 ’##’이다.
Hide
2+3
rnorm(10) #평균=0, 표준편차 1의 정규분포에 부합하는 랜덤수 10개를 출력
results 옵션
결과 텍스트를 반환할 방식을 결정하는 옵션이고 ‘markup’, ‘asis’, ‘hide’ 중에 하나를 선택한다. 디폴트 값은 ’markup’이다. ’asis’는 텍스트를 표로 만들기 위한 옵션이다.
Hide
x<-data.frame(op=c(100, 110, 90, 130), hp=c(120, 130, 110, 150), lp=c(80, 90, 70, 100), cp=c(110, 115, 80, 125))
library(knitr)
kable(x, format='latex')
x

1.6 Figures

기본적으로 니터에 의해 변환되어 출력되는 그림들에 다양한 옵션을 지정하여 시각적으로 보다 세련된 출력물을 보일 수 있다. 이것은 그래프가 주는 직관적인 효과를 증가 시킬수 있다. 이에 대한 옵션과 함께 R에서의 플롯의 결과를 보이는 방식을 보자.
R이 사용하는 그래픽 디바이스는 R 콘솔에서 ?device라는 명령으로 알아볼 수 있다. 대표적으로 windows(), pdf(), png(), bitmap(), jpge()등이 있다. HTML로 최종 형식을 가진다면 기본이 png()로 지정되어 있다.
선택된 그래픽 디바이스에서 옵션은 dev.args라는 키에 의해 옵션을 지정할 수 있다. R다음은 형식이 png에 배경색으로 투명을 지정한 예이다.
dev='png', dev.args=list(bg='transparent')
R에서 그래프를 작성하는 경우 두 부분으로 구분할 수 있는 함수를 적용한다. 즉, 고수준함수와 저수준함수가 그것인데 어떤 그래프의 기본적인 형태를 만드는 경우 고수준함수를 이용하고 만들어진 함수에 첨가하는 부분은 저수준 함수를 적용한다. 다음은 정규분포를 따르는 랜덤수 1000개를 추출하여 히스토그램을 작성한다. 이 기본 그래프의 경우는 고수준함수인 hist()를 사용한다. 이 히스토그램에 밀도의 변화를 플롯한다. 이 경우는 lines()라는 저수준함수를 사용한다. 이 경우 각 단계 즉, 고수준함수만을 보이고 다음에 두 함수가 모두 나타나는 그래프를 보일 수 최종 작성된 그래프만 보일 수 있다. 이 경우 사용할 수 있는 옵션이 fig.keep=‘all’로서 코드의 각 단계를 실행하여 생성되는 모든 그래프를 단계별로 보여준다.또한 fig.show=’hold’의 옵션에 의해 관계된 코드 부분과 결과물을 분리하여 나타낸다.
fig.keep의 값은 ’high’, ‘all’, ‘first’, ‘last’,‘none’로서 기본값은 ’high’로 고수준 함수가 생성하는 그래프만 출력한다. 모든 그래프의 출력은 ’all’이고 첫번째, 마지막 그래프만 출력의 경우는 ’first’, ‘last’이고 ’none’은 아무 그래프도 출력하지 않는다.
fig.show의 값은 ’asis’,‘hold’,‘hide’가 있으며 R의 코드 실행과 동일하게 출력하기 위해서는 ’asis’ 값을 주어야 하며 이 값이 기본값이다. 즉, R의 함수 실행은 top-down 방식이다. 즉, 위에서 아래로 한줄씩 실행되므로 아래의 경우 hist()가 실행하고 그 에 대한 결과를 출력한후 lines()함수의 실행결과를 출력한다. 이에반해 코드의 실행화 그 결과를 한번에 묶어 나타내기 위해서는 ’hold’를 지정한다. ’hide’의 경우는 코드가 실행되지만 출력하지 않은 경우 적용한다.
Hide
y<-rnorm(1000)
hist(y, prob=T, main='example')
lines(density(y), col=2)
이미지의 저장
그래픽을 작성할 경우 일반적인 출력과 저장에 대한 사항은 R studio에서 작성되는 문서의 상단에 위치하는 툴바 중 톱니모형의 아이콘을 클릭하여 설정할 수 있다. 그 아이콘 클릭후 Output Options…를 선택한후 output format을 최종결과물에 맞는 형식으로 선택한다. 소개에서는 HTML로 선택한다. 이 창의 하위 선택에서 Figure 창의 선택하여 출력하는 그래프의 너비와 높이를 지정할 수 있다. 그리고 그래프를 별도 파일에 저장하기 위해서는 Advanced 창에서 standalone를 체크를 해제하고 다음과 같이 니터 옵션 설정을 하여야 한다.
r markdown내에 knitr::opts_chunk$set(echo=T, fig.path=“저장경로/”) 와 같이 니터를 사용하여 정크옵션을 지정한다.
위의 standalone은 작성된 문서내에 그래프등의 이미지가 삽입된 상태로 전달된다는 것으로 문서 하나가 독립됨을 의미한다. 그러나 문서가 크거나 삽입되는 이미지가 많을 경우 문서당 로딩되는데 많은 시간이 소요된다. 이 경우 문서에 나타나는 이미지를 별도로 저장하여 텍스트 문서와 같이 이동하는 경우 이러한 문제는 해결된다. 이 경우 위와 같이 별도로 저장되는 경로를 지정한다. 이미지 크기 여러개 그래프의 출력은 다음과 같이 위치와 각각의 크기에 대한 위치 옵션을 지정할 수 있다. 다음은 랜덤수 10개에 대한 x, y 를 생성하여 두 변수들에 대한 회귀식을 계산한후 x,y에 대한 그래프에 회귀선을 첨가한 것으로 옵션에 의해 각 그래프의 크기를 조정한 것이다.
Hide
x<-rnorm(10)
y<-2*x+rnorm(10)
model<-lm(y~x)
plot(x, y)
abline(model, col=2)
위에서 언급한 것과 같이 톱니모양의 아이콘 내에 Figure의 창에서 출력되는 플롯의 크기를 지정할 수 있으며(r markdown 지정) 이 지정은 각각의 코드정크에서의 별도의 크기 지정을 하지 않을 경우에 반영된다. 또한 니터의 정크 옵션 함수에 의해 지정한다면 r makrdown 지정보다 우선한다. 즉, 니터지정은 r 코드정크내에 다음과 같이 작성된다.
library(knitr)
opts_chunk$set(fig.width=4, fig.height=3)
이미지 캡션
이미지 캡션은 위 코드 정크에 입력한 옵션 중 fig.cap=’문자열’의 형태로 지정할 수 있다. 이 캡션의 위치는 위의 옵션의 fig.align의 값에 따른다.
이미지 링크
위의 그래프 작성에서 fig.link=“URL”의 옵션을 첨가하면 그래프등의 이미지 클릭시 해당되는 사이트로 이동할 수 있도록 한다.
이미지 배치
위의 코드정크의 옵션에서 fig.align으로 조정 할 수 있으며 기본값은 default이며 값들은 ‘left’, ‘right’, ’center’이다.

1.7 Tables

니터 패키지의 kable() 함수를 사용한다. 이 함수는 R의 데이터프레임 또는 행렬을 지정된 형태의 표로 전환해 주는 역할을 한다. 이 함수는 함수 자체내에 여러가지 옵션을 지정할 수 있으므로 정크 옵션을 사용할 필요가 없다. 다음은 R에서 데이터프레임 구조의 데이터이다.
Hide
df<-data.frame(x=sample(c("x1", "x2"), 5, T), y=rnorm(5), z=rexp(5))
df
kable()함수중 매개변수중
- digits: 출력하는 데이터의 소수점 자릿수를 지정하는 것으로 c()함수를 적용하여 각 열 마다 특정한 자릿수를 지정할 수 있다.
Hide
library(knitr)
kable(df, digits=2)
kable(df, digits=c(NA, 2, 1))
  • format.args: 데이터를 나타내는 형태를 지정한다.
Hide
kable(df, format.args=list(scientific=T))
  • align: 표 각셀의 데이터 정렬을 지정한다. 왼쪽은 ‘l’, 중앙은 ‘c’, 오른쪽은 ’r’로 지정할 수 있으며 c() 함수를 사용하여 각 열마다 지정을 다르게 할 수 있다.
Hide
kable(df, align=c('l','c','r'))
  • caption: 소슾파일 작성시 사용해야 북다운을 사용하여 표에 대한 reference를 만들수 있다.
Hide
kable(df, align=c('l','c','r'), caption="**표 작성 test**")
  • 표내에 결측치가 존재할 경우 다른 문자로 변경하여 출력하고자 할 경우 다음과 같이 전체 옵션을 변경해 주어야 한다.
  • options(knitr.kable.NA="")


  1. This is footnote.



댓글

이 블로그의 인기 게시물

matplotlib의 그래프 종류

1. 산포도(scatter plot) plt.scatter(x, y) >>> import matplotlib.pyplot as plt >>> import numpy as np >>> data=np.random.rand(1024, 2) >>> data[:3, :] >>> plt.scatter(data[:,0], data[:,1]) >>> plt.show() 2. 막대그래프(bar chart) plt.bar(x, hight, width, align='center') 매개변수중 width에 인수를 전달하여 막대의 두께를 조절할 수 있다. 또한 align의 인수는 'center'와 'edge' 이다. 기본값은 'center'이다. 이 값은 x축의 레이블이 막대의 중간에 위치(center) 또는 왼쪽 가장자리에 위치(edge)시킨다. 코드에서 np.random.randint 는 특정한 범위내에서 지정한 갯수의 랜덤수를 생성 np.unique(배열, retrun_counts=False, axis=None) : 객체 내의 중복되지 않은 수들을 반환한다. return_counts=True이면 각 수에 대한 빈도수를 반환한다. axis를 통해 행(1), 열(0)을 선택한다. >>> x=np.random.randint(1, 6, size=100) >>> uni,count=np.unique(x, return_counts=True) >>> uni array([1, 2, 3, 4, 5]) >>> count array([25, 17, 23, 16, 19], dtype=int64) >>> plt.bar(uni, count) >>> plt.show() 위의 막대그래프의 막대의

유사변환과 대각화

내용 유사변환 유사행렬의 특성 대각화(Diagonalization) 유사변환(Similarity transformation) 유사변환 n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사하다고 하며 이 변환을 유사 변환 (similarity transformation)이라고 합니다. $$\begin{equation}\tag{1} A = PBP^{-1} \Leftrightarrow P^{-1}AP = B \end{equation}$$ 식 1의 유사 변환은 다음과 같이 고유값을 적용하여 특성 방정식 형태로 정리할 수 있습니다. $$\begin{align} B - \lambda I &= P^{-1}AP – \lambda P^{-1}P\\ &= P^{-1}(AP – \lambda P)\\ &= P^{-1}(A - \lambda I)P \end{align}$$ 위 식의 행렬식은 다음과 같이 정리됩니다. $$\begin{align} &\begin{aligned}\textsf{det}(B - \lambda I ) & = \textsf{det}(P^{-1}(AP – \lambda P))\\ &= \textsf{det}(P^{-1}) \textsf{det}((A – \lambda I)) \textsf{det}(P)\\ &= \textsf{det}(P^{-1}) \textsf{det}(P) \textsf{det}((A – \lambda I))\\ &= \textsf{det}(A – \lambda I)\end{aligned}\\ &\begin{aligned}\because \; \textsf{det}(P^{-1}) \textsf{det}(P) &= \textsf{det}(P^{-1}P)\\ &= \t

sympy.solvers로 방정식해 구하기

sympy.solvers로 방정식해 구하기 대수 방정식을 해를 계산하기 위해 다음 함수를 사용합니다. sympy.solvers.solve(f, *symbols, **flags) f=0, 즉 동차방정식에 대해 지정한 변수의 해를 계산 f : 식 또는 함수 symbols: 식의 해를 계산하기 위한 변수, 변수가 하나인 경우는 생략가능(자동으로 인식) flags: 계산 또는 결과의 방식을 지정하기 위한 인수들 dict=True: {x:3, y:1}같이 사전형식, 기본값 = False set=True :{(x,3),(y,1)}같이 집합형식, 기본값 = False ratioal=True : 실수를 유리수로 반환, 기본값 = False positive=True: 해들 중에 양수만을 반환, 기본값 = False 예 $x^2=1$의 해를 결정합니다. solve() 함수에 적용하기 위해서는 다음과 같이 식의 한쪽이 0이 되는 형태인 동차식으로 구성되어야 합니다. $$x^2-1=0$$ import numpy as np from sympy import * x = symbols('x') solve(x**2-1, x) [-1, 1] 위 식은 계산 과정은 다음과 같습니다. $$\begin{aligned}x^2-1=0 \rightarrow (x+1)(x-1)=0 \\ x=1 \; \text{or}\; -1\end{aligned}$$ 예 $x^4=1$의 해를 결정합니다. solve() 함수의 인수 set=True를 지정하였으므로 결과는 집합(set)형으로 반환됩니다. eq=x**4-1 solve(eq, set=True) ([x], {(-1,), (-I,), (1,), (I,)}) 위의 경우 I는 복소수입니다.즉 위 결과의 과정은 다음과 같습니다. $$x^4-1=(x^2+1)(x+1)(x-1)=0 \rightarrow x=\pm \sqrt{-1}, \; \pm 1=\pm i,\; \pm1$$ 실수