1. はじめに

海ごみパッケージの使い方のサンプルです

2. 前提条件

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

パッケージのインストールが完了していない場合は,次のコマンドを実行してください

#install.packages("devtools")
#海ごみパッケージのインストールに必要
#devtools::install_github("y-yasutomo/malia") #パッケージのインストール

#パッケージの呼び出し
library(malia)
#install.packages("dplyr") 
library(dplyr) #データ整形に便利

3. データの可視化

3.1 データの読み込み

データを読み込み,解析に使う形に整形します

目視観測データ

#データ(csvファイル)の名前を指定
Data.name<-"まとめ全データ"
#R内での名称(なんでもいい)
Rev.name<-"S19y1" 

関数Sight.hand()で目視観測データを整形
問題なく実行されると,作業ディレクトリにRev.name.debrisという名称のcsvファイルが作成されます

Sight.hand(Data.name,Rev.name)

努力量データ
努力量データにはEffort.hand()関数を使う こちらは,作業ディレクトリにRev.name.effortという名称のcsvファイルが作成されます

Data.name<-"レグ番号順"
Effort.hand(Data.name,Rev.name)

3.2 作図

航跡図
関数 survey.plot()で航跡図を描くことができます.引数には努力量データを用います.

#Designate voyage name
Vname<-"S19y1"
survey.plot(read.csv(paste(Vname,".effort.csv",sep="")))

3.3 推定のための準備

上で作成した2つのデータを読み込みます

Sight.Data<-read.csv(paste(Vname,".debris.csv",sep=""))
Effort.Data<-read.csv(paste(Vname,".effort.csv",sep=""))

観測データのデータ型を確認します Data.check()関数の引数に観測データを与えます
この関数で,解析に用いる列のデータ型のチェックを行います. 問題がなければ何も返ってきません

Data.check(Sight.Data)

3.4 密度推定

ライントランセクト法による密度推定を行います
推定にはMALIA()関数が使えます
ここでは種類EPSについて,Harf-normal型の発見関数,最大目視距離200mで推定を行っています

tmp.Data<-Sight.Data %>%filter(type == "EPS")
res<-MALIA(tmp.Data,Effort.Data,key="hn",td=200)
Start from 744.599952424419
ite 1 value = 561.803421377293
ite 2 value = 561.803421377293
generated initial value!
initial  value 561.803421 
final  value 557.070751 
converged

調査レグごとの密度推定結果の図

leg.D.plot(res$leg.D.obs$leg.result,xl=c(120,160),yl=c(20,50),save=F,Type="EPS")

3.5 全データの解析

関数SDAM()で全データの解析を行えます.
この関数では,すべてのごみの種類について,4種類の発見関数・共変量をそれぞれ用いた(計16種類)解析を行います.
計算には30程度の時間がかか ます.
計算が終了すると,航海名.result.objというファイルが作成されます. 以下は,既に作成された結果を用いて結果のハンドリングを行います.

#res<-SDAM(Voyage.name=Vname,Sight.Data=Sight.Data,Effort.Data=Effort.Data,COVARIATE = c("conv", "occo","weather", "size"), key.list = c("hn","hr", "hhn", "hhr"),td=200,cp=10)
#結果のオブジェクトの読み込み
res<-readRDS(paste(Vname,".result.obj",sep=""))

4. 結果のハンドリング

4.1 密度推定結果

調査レグごとの密度推定値
以下は,発見関数hhr,共変量weather,種類EPSの結果

#種類'EPS'
leg.D.res<-res$hhr$weather$EPS$leg.D.obs$leg.result
leg.D.plot(leg.D.res,save=F,Type='EPS')

グリッドごとの密度推定結果

 grid.D.res<-res$hhr$weather$EPS$grid.D.res
 grid.D.plot(grid.D.res,save=F,Type='EPS')

4.2 モデル選択

それぞれのごみに対して,16種類の設定で発見関数の推定を行っているのでAICによるモデル選択を行うことができます

 aic.mat<-aic.summary(res)
 aic.mat$EPS

関数aic.summary()の結果オブジェクトと航海の解析結果のオブジェクトを引数に与えることですべてのごみについてAICによって選択されたモデルを抽出しています

 best.model<-model.extract(aic.mat,res) 
 best.model$best.mat

4.3 作表

調査レグごとの密度推定結果

 leg.table<-leg.D.table(best.model$best.list)
 head(leg.table)

グリッドごとの密度推定結果

 grid.table<-grid.D.table(best.model$best.list)
 head(grid.table)

海区ごとの密度推定結果

 area.table<-area.D.table(best.model$best.list)
 head(area.table)

5. 人工物・天然物の合算

5.1 人工物・天然物に分類

関数ls.()で人工物・天然物への合算を行えます.

#人工物の指定
 Ar<-c("FGN","FGF","FGO","EPS","PBA","PBO","FP","PC","G","M","W","UO")
#天然物の指定
 Nt<-c("SW","DW","NO")
 An.table<-ls.(leg.table,Ar,Nt)
 head(An.table)

人工物の結果

 Artificial.leg<-An.table %>%  select(Leg.No.,Leg.Length,Lat.Start,Lon.Start,Lat.End,Lon.End,Artificial_Density) %>% rename(Density=Artificial_Density)
 leg.D.plot(Artificial.leg,save=F)

 Artificial.grid<-grid.D(Artificial.leg)
 grid.D.plot(Artificial.grid,save = F)

天然物の結果

Natural.leg<-An.table %>%  select(Leg.No.,Leg.Length,Lat.Start,Lon.Start,Lat.End,Lon.End,Natural_Density) %>% rename(Density=Natural_Density)
 leg.D.plot(Natural.leg,save=F)

 Natural.grid<-grid.D(Natural.leg)
 grid.D.plot(Natural.grid,save = F)