4. 1.
R
통계와 데이터 과학에 쓰이는 오픈소스 프로그래밍 언어
1993년 로버트 젠틀맨(Robert Gentleman), 로스 이하카(Ross Ihaka) 개발
현재는 R 코어 팀이 개발(중)
2000년 2월 29일 R 1.0 출시
2004년 10월 4일 R 2.0 출시
2013년 4월 3일 R 3.0 출시
R 설치하기
-1. R
5. 1.
R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)
공식 홈페이지: https://cran.r-project.org/bin/windows/base/
R 설치하기
-2. R 설치하기
6. 1.
R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)
공식 홈페이지: https://cran.r-project.org/bin/windows/base/
R 설치하기
-2. R 설치하기
7. 1.
R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)
구성 요소 설치 > ’64-bit 사용자 편의를 위한 쉬운 설치’ 선택
R 설치하기
-2. R 설치하기
8. 1.
R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)
R x64 3.5.0 실행 화면
R 설치하기
-2. R 설치하기
9. 2.
작업 디렉터리
getwd()
현재 디렉터리를 반환
setwd()
작업 디렉터리를 설정
R에서 공간데이터 다루기
-1. 기본 사용법
# 현재 디렉터리 반환
getwd()
## [1] "C:/Users/User/Documents"
# 작업 디렉터리 변경
setwd("C:/GEODATA")
getwd()
## [1] "C:/GEODATA"
10. R 패키지
Install.packages()
저장소 또는 로컬 파일에서 패키지 설치
library() 또는 require()
이미 설치된 애드온 패키지를 첨부하고 로드
library()는 패키지를 찾을 수 없는 경우 오류 메시지 표시
# rgdal 패키지 설치
install.packages("rgdal")
# rgdal 패키지 로드
library(rgdal)
require(rgdal)
2.
R에서 공간데이터 다루기
-1. 기본 사용법
12. 2.
Bear Shapefile로 변환
coordinates()
공간 좌표를 설정 하여 공간 객체를 생성
공간 객체에서 공간 좌표 검색
writeOGR()
OGR을 이용하여 공간 벡터 데이터 생성
R에서 공간데이터 다루기
-2. CSV -> Shapefile 변환
# 공간 객체 생성을 위한 공간 좌표·좌표계 설정
coordinates(bear) <- ~location.long+location.lat # 공간 좌표 설정
proj4string(bear) <- CRS("+init=epsg:4326") # 좌표 체계 정의
bear <- spTransform(bear, CRS("+init=epsg:3857")) # 좌표 체계 변환
# Shapefile 생성
writeOGR(bear, ".", "Bear", "ESRI Shapefile")
13. 2.
Bear Shapefile 읽기
readOGR()
OGR 벡터 맵을 공간 객체(Spatial Objects)로 읽기
OGR: GDAL/OGR 라이브러리에서 벡터 파트를 담당
dsn: 데이터 소스 이름(data source name)
plot()
R 객체 플로팅
R에서 공간데이터 다루기
-2. CSV -> Shapefile 변환
# Bear Shapefile 읽기
bear <- readOGR(dsn = ".", layer = "Bear")
# R 객체 플로팅
plot(bear)
28. R 객체의 구조 변경
str()
R 객체의 구조를 간단하게 표시
as.data.frame()
객체가 데이터 프레임인지 확인, 또는 가능한 경우 강제 변형
# bear 객체의 구조 표시
str(bear)
## Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
# SPDF를 data.frame으로 변경
bear.df <- as.data.frame(bear)
# bear.df 객체의 구조 표시
str(bear.df)
## 'data.frame': 1898 obs. of 13 variables:
2.
R에서 공간데이터 다루기
-4. R 객체 구조
29. 플롯 매개변수 설정
par()
mfrow=c(nrows, ncols)
하나의 플롯에 nrows*ncols 그림 표시
c는 연결(concatenate)을 의미
mar, oma
내부, 외부 마진 설정
c(bottom, left, top, right) 형식
# 하나의 플롯에 5*5 그림 표시
# 마진 상단 3; 외부 하단 2, 좌측 2, 상단 4, 우측 2
par(mfrow = c(5,5),
mar = c(0,0,3,0),
oma = c(2,2,4,2))
2.
R에서 공간데이터 다루기
-5. 프레임 분할 플롯
30. 곰 개별 트랙 플로팅
ddply()
데이터 프레임 분할, 함수 적용, 데이터 프레임 내 결과 반환
require(plyr) # plyr 패키지 로드
require(scales) # scales 패키지 로드
# bear.df 개체 플로팅
ddply(bear.df, "tg_lcl_",
function(df){
# 법정구역정보
plot(adm, col="lightgreen", bor=NA,
xlim = range(df$coords.x1), ylim = range(df$coords.x2),
main = df$tg_lcl_[1]); box()
# 곰 좌표
points(df$coords.x1, df$coords.x2, col = alpha("black",.2),
type="o", pch = 19, cex = 0.5)})
2.
R에서 공간데이터 다루기
-5. 프레임 분할 플롯
33. 곰 전체 트랙 플로팅
# 곰 개체 수 확인
n.bear <- length(unique(bear.df$tg_lcl_))
n.bear
# 법정구역정보 플로팅
plot(adm, main = "Bear tracks", col="grey", bor="grey")
# bear.df 개체 플로팅
palette(rich.colors(n.bear, alpha = 0.5)) # 'col=' 인덱스 정의
ddply(bear.df, "tg_lcl_",
function(df)
lines(df$coords.x1, df$coords.x2, col=df$tg_lcl_[1]))
# 범례
legend("bottomleft", legend = unique(bear.df$tg_lcl_),
col = 1:n.bear, lty = 1, cex = 0.5, bty="n", ncol=2)
2.
R에서 공간데이터 다루기
-6. 프레임 단일 플롯
34.
35. 3.
행동권 추정 기법
최소 볼록 다각형
Mohr, 1947
커널 밀도 추정법
전통적 커널 (Worton, 1989)
Brownian bridge 커널 (Bullard, 1999, Horne et al. 2007)
Biased random bridge 커널 (Benhamou and Cornelis, 2010, Benhamou, 2011)
Product 커널 알고리듬 (Keating and Cherry, 2009)
Single-linkage 군집 알고리듬 (Kenward et al., 2001)
3종 LoCoH (Local Convex Hull)법 (Getz et al., 2007, Downs and Horner, 2009)
adehabitatHR 패키지 다루기
-1. adehabitatHR 패키지
36. 3.
DSM과 곰 좌표 중첩하기
subset()
조건을 만족하는 데이터 프레임의 하위 집합을 반환
adehabitatHR 패키지 다루기
-2. 구역 통계
# 곰 단일 개체 선택
mybear <- subset(bear.df, tg_lcl_ == "ancka")
# R 객체 구조를 SpatialPoints로 변환
xy.spatial <- SpatialPoints(mybear[,c("coords.x1","coords.x2")])
# DSM을 곰 좌표 크기로 자르기
myelev <- crop(elev, extent(xy.spatial))
# DSM과 곰 좌표 그리기
image(myelev, asp=1, col=terrain.colors(100))
with(mybear, points(coords.x1, coords.x2, type="o", pch = 19, cex = 0.5, col=rgb(0,0,0,.2)))
37.
38. 3.
고도 값 히스토그램
hist()
주어진 값의 히스토그램 계산
extract()
좌표와 일치하는 화소값 추출
adehabitatHR 패키지 다루기
-2. 구역 통계
# 곰 좌표 영역의 고도 값 히스토그램
myelev
hist(myelev, col="grey", breaks = seq(200,1200,10),
freq=FALSE, bor="darkgrey", ylim = c(0,0.01))
# 곰 단일 개체의 고도 값 히스토그램
mybear$elev <- extract(myelev, xy.spatial)
hist(mybear$elev, col=rgb(1,0,0,.5), breaks = seq(200,1200,10),
freq=FALSE, bor = "red", add=TRUE)
39.
40. Mohr (1947)
전체 좌표를 감싸는 최소 볼록 다각형
install.packages("adehabitatHR") # adehabitatHR 패키지 설치
require(adehabitatHR) # adehabitatHR 패키지 로드
# 100% MCP
mybear.mcp <- mcp(xy.spatial, 100)
lines(mybear.mcp, col = "red", lwd=2)
# MCP 면적 확인
mybear.mcp
## Object of class "SpatialPolygonsDataFrame" (package sp):
## Number of SpatialPolygons: 1
## Variables measured:
## id area
## a a 34240.29
3.
adehabitatHR 패키지 다루기
-3. 최소 볼록 다각형
43. Worton (1989)
전통적 커널
# KDE
mybear.kde <- kernelUD(xy.spatial, h="href")
# KDE 플로팅
plot(mybear.kde)
# KDE 컬러 이미징
image(mybear.kde)
3.
adehabitatHR 패키지 다루기
-4. 커널 밀도 추정법
44.
45. Bullard (1999), Horne et al. (2007)
Brownian bridge 커널
sig1: 야생동물 속도와 관련된 두번째 평활화 매개변수
sig2: 위치 데이터의 부정확성과 관련된 첫번째 평활화 매개변수
3.
adehabitatHR 패키지 다루기
-4. 커널 밀도 추정법