Bài giảng phân tích dữ liệu không gian bằng ngôn ngữ R do giáo sư Jun Chun Min tại đại học thành phố Seoul biên soạn. Rất chi tiết và hữu íchR là một ngôn ngữ lập trình và môi trường phần mềm dành cho tính toán và đồ họa thống kê. Đây là một bản hiện thực ngôn ngữ lập trình S với ngữ nghĩa khối từ vựng lấy cảm hứng từ SchemePhân tích không gian (cross sectional analysis) là phương pháp phân tích dựa trên số liệu thu thập từ các đơn vị điều tra tại một thời điểm. Chẳng hạn, chúng ta có thể phân tích thu nhập dựa vào số liệu thu thập được từ các hộ gia đình ở nhiều vùng khác nhau của một nước trong một năm nào đó
Spatial Analysis using R 목차 Spatial Analysis using R 목차 Ch 1 R의 기초 R 시작하기 .2 1.1 R이란? 1.2 R 프로그램의 설치와 시작 1.3 R Package 설치 1.4 R 맛보기 예제들 1.5 스크립트(Script)와 RStudio 12 1.6 도움말 얻기 17 1.7 R의 표현 21 데이터 형식 23 2.1 데이터 형식의 종류 23 2.2 벡터(Vector) 25 2.3 행렬(Matrix)과 배열(Array) 30 2.4 리스트(List) 35 2.5 데이터프레임(Data Frame) 36 2.6 Factors 40 열거형 다루기 45 3.1 첨자(Indexing) 45 3.2 [ ], [[ ]], $의 차이 50 3.3 조건식과 매칭 53 3.4 데이터프레임의 부분 추출 55 3.5 데이터프레임의 열의 추가와 제거 58 유용한 R 함수들 59 4.1 General 59 4.2 Built-in constants 61 4.3 Maths 61 4.4 Graphical 61 4.5 Fitting / regression / optimisation 62 4.6 Statistical 63 연습문제 64 부록 – 실습 프로그램 설치 .68 참고 문헌 76 Chulmin Jun Ch R 의 기초 Ch R의 기초 공간 분석을 위해 R 을 배우는 이유에 대해 알아본다 R 과 R 의 패키지를 설치하고 실행하는 법을 배운다 간단한 예제를 통해 R 에서의 표현 방법을 배운다 R 언어의 표현 방법과 다양한 데이터 형식에 대해 예시를 통해 배운다 R 시작하기 1.1 R이란? • 통계적 계산과 그래픽에 특화되어 있는 언어 • 전세계적으로 널리 사용하는 무료 오픈소스 언어 (GNU / GPL) • Ross Ihaka와 Robert Gentleman에 의해 S-PLUS의 무료 버전 형태로 1993년부터 소개됨 • 1997년 이후부터는 R Development Core Team에 의해 R Project가 진행 • 사용자가 제작하여 기여하는 다양한 패키지(package)로 인해 기능이 지속적으로 확장 • 프로그래밍 기능, 우수한 가시화 및 분석 기능 등 제공 • 통계 뿐 아니라 빅데이터, 데이터마이닝, 공간분석 등 다양한 분야의 연구 및 산업계에서 사용되는 강력한 툴이 됨 Chulmin Jun R 시작하기 1.2 R 프로그램의 설치와 시작 먼저 부록의 R 프로그램 설치 방법을 참고하여 설치한다 • 바탕화면의 “R” 아이콘을 더블클릭하거나 [모든 프로그램][R]에서 프로그램을 시작한다 • 다음과 같은 RGui 창이 나타난다 1.3 R Package 설치 • R을 설치할 때는 기본 패키지들이 함께 인스톨된다 • 그러나 필요할 때 마다 사용자들이 만든 많은 패키지들을 설치할 수도 있다 • 사용자 패키지들은 예제 데이터를 함께 가지고 있는 경우가 많다 • 본 연습을 위해서 “ISwR” (Introductory Statistics with R) 패키지를 설치해 보자 메뉴에서 [패키지들][패키지(들) 설치하기…]를 선택한다 또는 명령창에 다음과 같이 입력해도 된다 > install.packages("ISwR", dependencies=TRUE) ※ ‘dependencies=TRUE’는 설치하려는 패키지와 연관된 패키지를 함께 설치하라는 의미이다 ‘depend=T’, 또는 ‘dep=T’로 줄여서 써도 된다 Chulmin Jun Ch R 의 기초 HTTPS CRAN mirror 사이트에는 ‘Korea’가 보이지 않는다 하단의 (HTTP mirrors)를 선택하면 Korea 사이트가 두 개 보인다 이 중 하나를 선택한다 이어서 Package 리스트에서 ‘ISwR’을 선택한다 인스톨후에는 다음 두 가지 방법 중 하나를 이용하여 필요한 패키지를 불러온다 (1) “library(패키지명)”를 명령프롬프트에 입력한다 (예: >library(ISwR) (2) 메뉴의 [패키지][패키지 불러오기]에서 패키지명을 선택한다 Chulmin Jun R 시작하기 ※ Package 목록 • R CRAN 홈페이지(http://cran.r-project.org/)에서 “Packages”를 선택하면 package 들을 배포순 또는 알파벳 순서로 볼 수 있다 • R 홈페이지의 ‘Task View’를 이용하면, package 들이 분야에 따라 분류된 것을 볼 수 있다 • ‘Spatial’ 분야의 패키지들은 어떤 것들이 있는지 살펴 보자 ※ 패키지의 주기적인 업데이트와 버전 정보 • 패키지의 주기적 업데이트 update.packages() • 최신의 안정적인 버전에 관한 정보 View(news()) Chulmin Jun Ch R 의 기초 1.4 R 맛보기 예제들 (1) 간단한 그래프 그리기 • 다음을 명령 프롬프트에 쓰고 엔터를 친다 > plot(rnorm(1000)) ▬ ▬ ※ 이 명령은 표준정규분포에서 랜덤하게(rnorm = random normal) 1000개의 숫자를 가져온 후 plot을 한다 plot 명령은 새로운 pop-up 창에서 결과를 보여준다 아직은 명령에 대한 의미를 자세히 알 필요가 없다 (2) 단순 계산 • 간단한 산술계산을 다음과 같이 할 수 있다 > + [1] > 2^3 [1] > 1/2 [1] 0.5 > 3-2*2+4 [1] Chulmin Jun R 시작하기 (3) 함수의 이용 다음과 같이 내장된 함수를 사용할 수도 있다 (𝑒𝑒 −2 ) • > exp(-2) [1] 0.1353353 • 결과값 앞의 [1]은 결과가 리스트(벡터)로 되어 있을 때, 몇 번째 숫자인지를 나타낸다 다음 예를 보면 이해할 수 있다 > rnorm(15) [1] -1.00026964 -1.95352657 0.48817170 -0.69520362 -1.53144629 0.02412822 [7] 0.88846373 0.50432291 -1.94453418 0.49900102 -0.26338447 0.09827436 [13] -0.02055363 -1.25706097 -0.14944299 ▬ • 위의 예는 정규분포에서 15개의 숫자를 랜덤하게 프린트하는 예이다 다음을 각자 계산해 보자 𝑠𝑠𝑠𝑠𝑠𝑠(𝜋𝜋) , �2, 𝑒𝑒1 , 𝑙𝑙𝑙𝑙𝑙𝑙10 10 , 𝑙𝑙𝑙𝑙𝑙𝑙2 , 𝑙𝑙𝑙𝑙𝑙𝑙𝑒𝑒 10 , |−3|, 5!, � � (4) 할당(Assignment) • 프로그래밍 언어에서와 마찬가지로 변수에 이름을 주어 값을 저장할 수 있다 • 할당 연산자는 “=”, “ x [1] • score.eng = 85 > score.eng [1] 85 > score.eng + 10 [1] 95 > score.eng [1] 85 > score.eng = score.eng + 10 > score.eng [1] 95 > e = exp(1) > e^2 [1] 7.389056 > print(e) [1] 2.718282 • 할당된 객체가 많아지면 시스템 메모리를 많이 사용하므로 프로그램 성능이 느려질 수 있다 이 때는 rm( ) 함수를 사용해서 불필요한 변수를 지울 수 있다 • 먼저 ls( )를 사용하면 현재 사용하고 있는 객체들을 나열할 수 있다 > ls() [1] "e" "score.eng" "x" > rm(e); rm(x); rm(score.eng) (5) 벡터(vector) • Vector는 순차적으로 묶인 동일 타입의 데이터 구조, 즉, 일차원 배열(array)이다 • Vector는 다음과 같이 만들 수 있다 > weight weight [1] 60 72 57 90 95 72 • Vector를 만들 때는 c(…)를 사용하는데, 이 때 c는 combine의 의미이다 • 다음과 같이 height vector를 만든 후, weight와 height를 다시 c로 묶어서 bodysize라는 vector로 저장할 수도 있다 > height bodysize bodysize [1] 60.00 72.00 57.00 90.00 95.00 72.00 1.75 1.80 1.65 1.90 1.74 1.91 • 두 vector가 같은 길이(length)라면 일반 숫자 연산과 같이 할 수도 있다 • 다음과 같이 BMI(Body Mass Index, 체질량 지수)를 계산해 보자 > bmi bmi [1] 19.59184 22.22222 20.93664 24.93075 31.37799 19.73630 ※ BMI가 18.5이하면 저체중, 18.5~24.9는 정상, 25.0~29.9는 과체중, 30.0 이상은 비만이라고 한다 각자, 자신의 BMI를 계산해 보자 이 때, 체중은 kg, 키는 meter단위로 넣는다 Chulmin Jun R 시작하기 • 𝑥𝑥̅ = ∑ 𝑥𝑥𝑖𝑖 ⁄𝑛𝑛을 이용하여 weight의 평균을 구해보자 > sum(weight) [1] 446 > sum(weight)/length(weight) [1] 74.33333 • • 이것을 xbar 변수에 저장하고, 표준편차 SD = �(∑(xi − x� )2 )⁄(n − 1)를 구해보자 다음과 같이 한 단계씩 실행해 본다 > xbar weight - xbar [1] -14.333333 -2.333333 -17.333333 15.666667 20.666667 -2.333333 > (weight - xbar)^2 [1] 205.444444 5.444444 300.444444 245.444444 427.111111 5.444444 > sum((weight - xbar)^2) [1] 1189.333 > sqrt(sum((weight - xbar)^2)/(length(weight) - 1)) [1] 15.42293 ※ 이전 명령은 키보드의 up-arrow(위 화살표)를 이용하여 쉽게 다시 호출할 수 있다 (6) 통계 함수의 이용 • R은 통계를 위한 프로그래밍 언어이다 따라서 위와 같은 연산은 이미 구축되어 있으므로 간단하게 다음과 같이 실행하면 된다 > mean(weight) [1] 74.33333 > sd(weight) [1] 15.42293 > mean(bmi) [1] 23.13262 > sd(bmi) [1] 4.493165 • BMI 치수가 20~25면 정상이라고 가정하자 우리가 가진 데이터의 평균(23.13262)이 정상인지를 알고자 한다 6명의 BMI 치수 샘플이 정규분포에서 추출되었다고 가정할 때, 이들이 평균 22.5인지 알고자 한다면 이 때는 t test를 이용하면 된다 > t.test(bmi, mu=22.5) One Sample t-test data: bmi t = 0.3448, df = 5, p-value = 0.7442 alternative hypothesis: true mean is not equal to 22.5 95 percent confidence interval: 18.41734 27.84791 sample estimates: mean of x 23.13262 • 여기서 t-test에 대해서 간단히 알아보자 • mu는 Greek letter μ를 의미하며, 통계학에서는 일반적으로 이론적인 평균(theoretical mean)을 Chulmin Jun 10 Ch R 의 기초 의미한다 가설검정 절차 • H0: μ= 22.5 • 유의수준 α = 0.05라고 하자 • 기각역: σ가 알려져 있지 않고 n t α/2 = 2.571이다 • 계산한 t값이 기각역에 포함되지 않으므로 평균이 22.5가 아니라고 할 수 없다 𝑡𝑡 = H1: μ≠ 22.5 � −𝜇𝜇 𝑋𝑋 = 23.13−22.5 = 0.3449 𝑆𝑆⁄√𝑛𝑛 4.49⁄�6 p-value • p-value는 α가 얼마일 때 현재의 표본평균 23.13으로 H0을 기각할 수 있는지를 의미한다 • p-value는 표본으로 계산한 검정통계치(test statistic)로 H0을 기각할 수 있는 가장 작은 α값을 의미한다 • 즉, p-value는 H0가 옳다는 가정하에서 구한 검정통계치보다 더 극단적인(H0을 기각할 수 있는 방향에 놓여 있는) 값 이 검정통계치로 나올 확률이다 • 앞의 예에서는 실제 평균이 22.5라는 가정하에서 표본의 평균이 23.13이상이거나 반대 방향으로 그 이하로 나올 확 률(또는 t>0.3449 또는 t [컴퓨터]에서 우측 버튼 > [속성]에서 확인할 수 있다 Chulmin Jun 연습문제 22 이하 옵션들에서 모두 디폴트 상태로 두고 [다음]을 누른다 23 [완료]를 눌러 설치를 마친다 Chulmin Jun 71 72 Ch R 의 기초 1.3 사용자 매뉴얼 • R을 사용하기 위해서는 항상 사용자 매뉴얼을 참고할 것을 권한다 • 사용자 매뉴얼은 R 프로젝트 홈페이지(https://cran.r-project.org)에서 다양한 버전으로 제공한다 • 한글 매뉴얼은 아래의 사이트에서 제공하고 있다 • https://homepage.usask.ca/~chl948/doc/manual/R-intro-ko.html 관련 홈페이지 • 공식 홈페이지 이외에도 R에 대한 사용법과 정보를 제공하는 사이트들이 다수 존재한다 그 중 몇 가지를 소개하면 다음과 같다 • http://www.openstatistics.net • http://www.tutorialspoint.com/r/ • http://www.cyclismo.org/tutorial/R/ • http://www.r-tutor.com/r-introduction • http://www.ats.ucla.edu/stat/r/ • http://www.statmethods.net/ • https://www.safaribooksonline.com/library/view/learning-r/9781449357160/#toc-start Chulmin Jun 연습문제 QGIS 2.1 QGIS의 다운로드 링크 • QGIS는 한국어용 홈페이지인 아래 링크에서 설치 파일을 다운로드 할 수 있다 http://www.qgis.org/ko/site/ 2.2 설치하기 24 위 링크에 접속하여 [지금 다운로드]를 클릭한다 25 QGIS 버전을 선택해야 한다 실습교재는 64비트용 QGIS를 다운 받아 진행한다 본인의 PC가 32비트 운영체제를 사용중이라면 32비트 버전을 다운로드 하도록 한다 윈도우용 다운로드 항목에서 QGIS 독립 설치관리자 버전 2.4의 64비트 혹은 32비트 버전을 클릭한다 Chulmin Jun 73 74 Ch R 의 기초 26 클릭 하면 다운로드가 시작된다 다운로드 경로는 각자 PC마다 조금 차이가 있다 해당 PC의 다운로 드 폴더에 설치 파일이 저장된다 용량은 2.4버전 기준으로 259MB이며, 다운로드에는 20분 정도의 시간이 소요되고 이는 네트워크 속도에 따라 다를 수 있다 다운로드를 마치면 설치 파일을 실행하도 록 한다 27 설치 파일을 실행하면 다음과 같은 로딩이 진행된다 28 로딩이 끝나고 설치 환영 화면이 나타난다 [Next]를 클릭한다 약관이 나타나면 [I Agree]를 눌러 동의 해 준다 설치 환영 화면 약관 동의 29 다음은 설치 경로를 지정해야 한다 기본 경로로 지정하고 [Next]를 클릭한다 다음은 설치 항목을 선 택하는 화면이다 기본 QGIS만 선택하고 [Install]을 클릭한다 설치 경로 지정 설치 항목 선택 • 다른 항목들은 추가적인 데이터를 설치하는 것이다 본 실습에서는 추가 데이터를 이용하지 않기 때문에 설치하지 않 는다 Chulmin Jun 연습문제 30 다음과 같이 설치가 진행된다 설치 진행 설치 완료 31 설치가 완료되면 [Finish] 버튼을 클릭하고 마친다 Chulmin Jun 75 76 Ch R 의 기초 참고 문헌 R 관련 • Adler, J., 2009, R in a Nutshell, O'Reilly • Dalgaard, P., 2008, Introductory Statistics with R, 2nd Ed, Springer • Matloff, N., 2011, The Art of R Programming - A Tour of Statistical Software Design, No Starch Press • Teetor, P., 2011, R Cookbook, O'Reilly • Venables, W N & Smith, D M., 2016, An Introduction To R, Ver.3.3.0, (Official document from https://cran.r-project.org/manuals.html) 공간 분석 관련 • Haining, R., 2004, Spatial Data Analysis - Theory and Practice, Cambridge University Press • Fischer, M & Getis, A (Ed.), 2010, Handbook of Applied Spatial Analysis, Springer • O'Sullivan, D & Unwin, D., 2010, Geographic Information Analysis, 2nd Ed., John Wiley & Sons • Oyana, T and Margai, F., 2016, Spatial Analysis, CRC Press • Wong, D & Lee, J., 2005, Statistical Analysis of Geographic Information with ArcView GIS And ArcGIS, Wiley 공간분석 + R • Bivand, R., 2008, Applied Spatial Data Analysis with R, Springer • Brunsdon, C & Comber, L., 2015, An Introduction to R for Spatial Analysis & Mapping, Sage • Dorman, M., 2014, Learning R for Geospatial Analysis, Packt Chulmin Jun ... is.character("Hello") # => TRUE > is.character('a') # => TRUE > is.character("23.5") # => TRUE TRUE, FALSE > is.logical(TRUE) # => TRUE > is.logical(T) # => TRUE > is.numeric(12.5 # => TRUE >... Ch R 의 기초 HTTPS CRAN mirror 사이트에는 ‘Korea’가 보이지 않는다 하단의 (HTTP mirrors)를 선택하면 Korea 사이트가 두 개 보인다 이 중 하나를 선택한다 이어서 Package 리스트에서 ‘ISwR’을 선택한다 인스톨후에는 다음 두 가지 방법 중 하나를 이용하여 필요한 패키지를 불러온다 (1) “library(패키지명)”를... carcolor carcolor [1] "red" "green" "yellow" > mylist mylist [[1]] [1] [[2]] [1] 21.3 [[3]] [1] TRUE > matrix(1:12, nrow=3)