演習の概要

注意事項

  • 慶應義塾大学SFCで開講している「環境ガバナンスのデータサイエンス」「空間モデリング特論」の授業履修者向けの演習用ページです。
  • 必ずしも全てのバージョンのRやOSで動作確認を行っていません。この演習用ページを作成している段階では、R3.5.3を使っています。
  • Rの更新などにより、Rコードなどを予告無しに変更する場合があります。

データ分析の準備

データのダウンロード

  • 演習で用いるデータはここからダウンロードしてください。
  • ここでは./直下にgisdataフォルダを作成し、setwd("gisdata")とディレクトリを指定しています

パッケージのインストール

  • install.packages()でパッケージをインストールし、library()でパッケージを呼び出す
  • ここでは以下のパッケージを用います
install.packages("spdep")
install.packages("spatstat")
install.packages("splancs")
install.packages("spatialkernel")
install.packages("spatial")
install.packages("gstat", dependencies = T)
install.packages("sp")
library(spdep)
library(spatstat)
library(splancs)
library(spatialkernel)
library(spatial)
library(gstat)
library(sp)

以下の方法でパイプ %>% の優先順位を高める

needs::prioritize(magrittr)

空間内挿

カーネル密度関数

まず、カーネル密度関数の基本となる、ガウス関数、イパクニコフ関数、四次関数を図示してみよう。 #### ガウス関数

plot(density(0, kernel="gaussian", bw=1), 
     main="", xlab="", ylab="",lwd=2, cex.axis=1)

イパクニコフ関数

plot(density(0, kernel="epanechnikov", bw=1), 
     main="", xlab="", ylab="",lwd=2, cex.axis=1)

四次関数

plot(density(0, kernel="biweight", bw=1), 
     main="", xlab="", ylab="",lwd=2, cex.axis=1)

バンド幅とカーネル密度関数(合成関数)との関係

バンド幅を変えた場合にカーネル密度関数の合成関数がどのように変化するかを見てみよう。

ここでは、ガウス関数を用い、バンド幅=1とした場合の例を示す。

# (a) バンド幅=1
ss <-1
# ss <-0.7    (b) バンド幅=0.7
# ss <-2      (c) バンド幅=2
gau.all <- function(x){
1/sqrt(2*pi*ss)*exp(-x^2/(2*ss^2)) + 
1/sqrt(2*pi*ss)*exp(-(x+4)^2/(2*ss^2)) +
1/sqrt(2*pi*ss)*exp(-(x-2)^2/(2*ss^2)) +
1/sqrt(2*pi*ss)*exp(-(x-5)^2/(2*ss^2)) +
1/sqrt(2*pi*ss)*exp(-(x+1.5)^2/(2*ss^2))}
curve(gau.all, xlim=c(-10, 10), ylim=c(0, 0.8), main="", xlab="", ylab="",
lwd=8, cex.axis=1.8)
#
gau1 <-  function(x){1/sqrt(2*pi*ss)*exp(-x^2/(2*ss^2))}
gau2 <-  function(x){1/sqrt(2*pi*ss)*exp(-(x+4)^2/(2*ss^2))}
gau3 <-  function(x){1/sqrt(2*pi*ss)*exp(-(x-2)^2/(2*ss^2))}
gau4 <-  function(x){1/sqrt(2*pi*ss)*exp(-(x-5)^2/(2*ss^2))}
gau5 <-  function(x){1/sqrt(2*pi*ss)*exp(-(x+1.5)^2/(2*ss^2))}
#
curve(gau1, lwd=4, add=TRUE)
curve(gau2, lwd=4, add=TRUE)
curve(gau3, lwd=4, add=TRUE)
curve(gau4, lwd=4, add=TRUE)
curve(gau5, lwd=4, add=TRUE)