본문 바로가기

R프로그래밍

(11)
[R프로그래밍] 몬테카를로 시뮬레이션으로 원주율(π) 구하기 몬테카를로 시뮬레이션이란 난수를 이용한 시뮬레이션을 여러 번 반복하여 문제의 근사해를 구하는 방법을 말합니다. 수소폭탄의 개발자인 스타니스와프 울람이라고 하는 폴란드계 미국인 과학자에 의해 모나코의 유명한 도박도시 몬테카를로의 이름을 본따 만들어진 것입니다. 수학이나 물리학에 주로 사용되며 엔리코 페르미가 중성자의 특성을 연구하기 위해 이 방법을 사용하기도 하였습니다. 지난 포스팅에서 시뮬레이션의 기본인 난수생성방법을 알아보았습니다. 여기서는 시뮬레이션이 정의와 프로세스, 그리고 R을 이용해 몬테카를로 시뮬레이션을 R로 구현하는 방법에 대해 이야기 하겠습니다. 시뮬레이션의 정의와 프로세스 위키피디아에는 '시뮬레이션은 실제로 실행하기 어려운 실험을 간단히 행하는 모의실험을 뜻한다'라고 정의되어 있습니다. ..
[R프로그래밍] 시뮬레이션의 기본 - 난수생성 동전이 하나 있다고 생각해 보겠습니다. 우리는 동전을 던지면 앞면과 뒷면이 나올 확률이 1/2이라는 것을 알고 있습니다. 그런데 앞면이 계속 나올 때도 있고 뒷면이 계속 나올 때도 있습니다. 동전을 무수히 많이 던지면 앞면과 뒷면이 나오는 횟수는 1/2에 근접해 갈 것입니다. 사진: glennharper 실제로 수없이 많이 동전을 던져 결과를 기록하는 것은 어려울지 모르지만 컴퓨터를 이용하면 쉽게 풀 수 있습니다. 이렇게 어떠한 현상이나 사건에 대한 모형을 만들어 가상으로 수행함으로써 실제 상황에 대한 결과를 예측하는 것을 시뮬레이션이라고 합니다. 동전을 던졌을 때 앞면이 나오는 것을 1, 뒷면이 나오는 것을 0라고 가정하겠습니다. 그럼 동전을 여러번 던지면 아래와 같은 수열을 얻을 수 있습니다. 1 0..
[R프로그래밍] 한국인의 평균키와 몸무게로 회귀분석하기 키가 큰 부모를 둔 자녀들은 키가 클 확률이 높을 것입니다. 그렇다면 세대가 거듭될 수록 키는 무한히 커질까요? 그렇지는 않습니다. 19세기 영국의 화학자인 프랜스시 골턴(Francis Galton, 1822~1911)은 키가 큰 부모들이 낳은 자식들이 키가 점점 더 커지지 않고, 다시 평균으로 회귀한다는 경향을 보고 '회귀(regression)'라는 개념을 사용했습니다. 통계학에서는 '평균으로의 회귀(regression toward mean)'라고 부릅니다. 회귀분석의 개념과 유형 회귀분석은 하나 또는 그 이상의 독립변수(설명변수, 예측변수, 통제변수등으로 불리기도 함)가 한 단위 변할 때, 종속변수에 미치는 영향력을 예측할 때 주로 사용하는 통계분석 기법입니다. 독립변수는 입력 값이나 원인을 말하며,..
[R프로그래밍] 벡터의 의미와 벡터 관련 함수 물리학에서는 양을 스칼라와 벡터로 구분합니다. 스칼라가 크기만 가지고 있는 양인데 반해 벡터는 크기와 방향을 모두 가지고 있는 양을 의미합니다. R에서 벡터는 이와는 약간 다릅니다. R에서의 벡터의 의미, 특징, 그리고 벡터와 관련한 함수들에 대해 이야기해 보겠습니다. 벡터의 의의와 특징R에서의 벡터는 단순한 자료형이 아닙니다. R은 여러 값을 집합으로 처리하는데 막강한 기능을 발휘합니다. 여러 값을 하나로 처리하기 위해 벡터를 사용합니다. 벡터는 C에서 사용하는 배열과 유사합니다. 벡터는 '값들의 집합'이라고 생각하면 됩니다. 실제로 R에서는 스칼라인 하나의 숫자도 하나의 원소를 가진 벡터로 취급합니다. 어떤 벡터 안의 각 수치를 요소라고 부릅니다. R에서 벡터의 특징은 아래와 같습니다. 1. 벡터는 ..
[R프로그래밍] 서울의 기온데이터로 박스플롯 그리기 지난 포스팅에서 Beautiful Soup Library를 활용하여 작년 서울의 기온데이터를 수집했습니다. 오늘은 이 데이터를 가지고 월별로 기온이 어떻게 변했는지 그래프를 그려보겠습니다. 그래프를 그리는 방법은 다양합니다. 엑셀의 차트, 파이썬의 matplotlib 라이브러리, R의 ggplot2 패키지를 활용할 수 있습니다. 저는 R이 가장 쉽고, 편하고, 다양한 결과물을 만들어 낼 수 있어 즐겨 사용하는 편입니다. 오늘 그려볼 그래프는 R의 ggplot2를 이용해 월별 기온변화에 대한 박스플롯 그리기입니다. 데이터 정비하기 우리가 사용할 데이터는 Weather Underground에서 수집한 작년 한 해 서울의 일별 평균, 최고, 최저기온입니다. 그래프를 그리기 전에 먼저 데이터를 살펴보도록 하겠습..
[R프로그래밍] 조건문을 이용하여 콜라츠 추측 계산하기 프로그래밍이란 기본적으로 내 생각을 컴퓨터가 이해할 수 있도록 입력하고 동작하게 만드는 일입니다. 프로그래밍을 하기 위해서는 생각이 논리적이로 명확하게 정리되어 있어야 합니다. '생각의 흐름은 명쾌한가?', '누락되거나 중복되는 내용은 없는가?', '이 프로그램은 결과를 올바르게 계산해 낼 것인가?'에 대해서 먼저 종이와 연필로 그려보는 것이 프로그래밍에 큰 도움이 됩니다. 생각이 명료하면 프로그래밍이 즐겁습니다. 프로그래밍 언어를 통해 명령을 내리기만 하면 되기 때문입니다. 대부분의 프로그래밍 언어에서 조건문과 반복문을 사용할 수 있습니다. 조건문은 조건이 '참(True)'일 때 처리하는 명령과 '거짓(False)'일 때 처리하는 명령을 달리 가져갑니다. 반복문은 일정 범위 또는 특정한 조건을 만족하는..
[R프로그래밍] 헤론의 공식으로 삼각형의 넓이를 구하는 함수 정의하기 R은 통계분석, 수치계산, 그래픽에 특화된 프로그래밍 언어입니다. 기본적으로 제공하는 함수들 역시 다양합니다. 기본적으로 제공하는 함수가 없을 경우에는 사용자가 직접 함수를 만들어 문제를 해결할 수 있습니다. 모든 프로그래밍 언어는 이런 기능을 제공하고 각 언어마다 독특한 문법을 가지고 있습니다. R프로그래밍에서 사용자 정의 함수를 작성하기 위한 문법을 살펴보고 헤론의 공식을 이용해 삼각형의 면적을 구하는 사용자 정의 함수를 작성해 보겠습니다. R에서 함수를 정의하는 법 어떤 두 집합 X, Y에서 X의 각 원소에 Y의 원소가 하나씩만 대응할 때, 우리는 이것을 X에서 Y로의 함수라고 정의합니다. Y = 2X + 1라는 함수를 생각해 보겠습니다. X에 1을 대입하면 Y는 5가 됩니다. X에 어떤 값을 대입..
[R프로그래밍] RStudio에서 프로젝트 생성하고 데이터 불러오기 지난 포스팅에서 R과 RStudio를 설치했습니다. 이제 RStudio를 이용해서 프로젝트를 생성해 보겠습니다. 읽기 전에 추천 한 번! 블로거에겐 큰 힘입니다 RStudio 기본 패널 RStudio창은 기본적으로 4개의 패널로 구분됩니다. 소스편집기와 데이터뷰/R콘솔/작업환경과 히스토리/파일, 플롯, 패키지, 도움말이 그것입니다. 각 패널은 단축키를 가지고 있습니다. 단축키는 의 조합으로 사용할 수 있습니다. 또한, 메뉴의 Tools-Global Options-Panel Layout을 실행하면 각 섹션의 순서와 내용을 변경할 수도 있습니다. 프로젝트 생성하기 프로젝트를 생성해 보도록 하겠습니다. 지난 포스팅에서 사용했던 전자공시시스템의 평균급여 파일을 분석하기 위한 프로젝트를 생성하겠습니다. 메뉴모음에..