VPAによる資源計算を実施する

vpa(
  dat,
  sel.f = NULL,
  tf.year = 2008:2010,
  rec.new = NULL,
  rec = NULL,
  rec.year = 2010,
  rps.year = 2001:2010,
  fc.year = 2009:2011,
  last.year = NULL,
  last.catch.zero = FALSE,
  faa0 = NULL,
  naa0 = NULL,
  f.new = NULL,
  Pope = TRUE,
  p.pope = 0.5,
  tune = FALSE,
  abund = "B",
  min.age = 0,
  max.age = 0,
  link = "id",
  base = NA,
  af = NA,
  p.m = 0.5,
  omega = NULL,
  index.w = NULL,
  use.index = "all",
  scale = 1000,
  hessian = TRUE,
  alpha = 1,
  maxit = 5,
  d = 1e-04,
  min.caa = 0.001,
  plot = FALSE,
  plot.year = NULL,
  term.F = "max",
  plus.group = TRUE,
  stat.tf = "mean",
  add.p.est = NULL,
  add.p.ini = NULL,
  sel.update = FALSE,
  sel.def = "max",
  max.dd = 1e-06,
  ti.scale = NULL,
  tf.mat = NULL,
  eq.tf.mean = FALSE,
  no.est = FALSE,
  est.method = "ls",
  b.est = FALSE,
  est.constraint = FALSE,
  q.const = 1:length(abund),
  b.const = 1:length(abund),
  q.fix = NULL,
  b.fix = NULL,
  sigma.const = 1:length(abund),
  fixed.index.var = NULL,
  max.iter = 100,
  optimizer = "nlm",
  Lower = -Inf,
  Upper = Inf,
  p.fix = NULL,
  lambda = 0,
  beta = 2,
  penalty = "p",
  ssb.def = "i",
  ssb.lag = 0,
  TMB = FALSE,
  sel.rank = NULL,
  p.init = 0.2,
  sigma.constraint = 1:length(abund),
  eta = NULL,
  eta.age = 0,
  tmb.file = "rvpa_tmb",
  remove.abund = NULL,
  madara = FALSE,
  p_by_age = FALSE,
  penalty_age = NULL,
  no_eta_age = NULL,
  sdreport = FALSE,
  use.equ = "new",
  ave_S = TRUE
)

Arguments

dat

data for vpa

sel.f

最終年の選択率

tf.year

terminal Fをどの年の平均にするか

rec.new

翌年の加入を外から与える

rec

rec.yearの加入

rec.year

加入を代入する際の年

rps.year

翌年のRPSをどの範囲の平均にするか

fc.year

Fcurrentでどの範囲を参照するか

last.year

vpaを計算する最終年を指定(retrospective analysis)

last.catch.zero

TRUEなら強制的に最終年の漁獲量を0にする

faa0

sel.update=TRUEのとき,初期値となるfaa

naa0

sel.update=TRUEのとき,初期値となるnaa

Pope

Popeの近似式を使うかどうか

p.pope

Popeの式でどこで漁獲するか(0.5 = 真ん中の時期)

tune

tuningをするかどうか

abund

tuningの際,何の指標に対応するか. "N"=年の初めの資源尾数,"Nm"=年の中間での資源尾数,"B"=年の初めの資源重量,"Bm"=年の中間での資源重量,"SSB"=産卵親魚量,"Bs"=資源重量×選択率,"Bo"=資源重量×オメガで調節された選択率,"Ns"=資源尾数×選択率,"SSBm"=年の中間での産卵親魚量,"N1sj"=1歳の資源尾数(日本海スケトウダラ用),"N0sj"=0歳の資源尾数(日本海スケトウダラ用),"F"=漁獲係数の平均

min.age

tuning指標の年齢参照範囲の下限

max.age

tuning指標の年齢参照範囲の上限

tuningのlink関数

base

link関数が"log"のとき,底を何にするか

af

資源量指数が年の中央のとき,af=0なら漁期前,af=1なら漁期真ん中,af=2なら漁期後となる

index.w

tuning indexの重み

use.index

indexのなにを使うか.c(1,3)というような与え方ができる.デフォルトは"all"

scale

重量のscaling

alpha

最高齢と最高齢-1のFの比 F_a = alpha*F_a-1

maxit

石岡・岸田/平松の方法の最大繰り返し数

d

石岡・岸田/平松の方法の収束判定基準

min.caa

caaに0があるとき,0をmin.caaで置き換える

plot

tuningに使った資源量指数に対するフィットのプロット

plot.year

上のプロットの参照年

term.F

terminal Fの何を推定するか: "max" or "all"

stat.tf

最終年のFを推定する統計量(年齢で同じとする:changed on Nov/2021)

add.p.est

追加で最高齢以外のfaaを推定する際.年齢を指定する.

sel.update

チューニングVPAにおいて,選択率を更新しながら推定

sel.def

sel.update=TRUEで選択率を更新していく際に,選択率をどのように計算するか."max"=選択率が一番大きい年齢の選択率を1とする,"maxage"=最高齢の選択率を1とする,"mean"=全体に対する割合として選択率を決める(saa=faa/sum(faa))

max.dd

sel.updateの際の収束判定基準

ti.scale

資源量の係数と切片のscaling

tf.mat

terminal Fの平均をとる年の設定.NA行列に平均をとる箇所に1を入れる.

eq.tf.mean

terminal Fの平均値を過去のFの平均値と等しくする

no.est

パラメータ推定しない.

est.method

推定方法 (ls = 最小二乗法,ml = 最尤法, ls_nolog =最小二乗法で実数)

b.est

bを推定するかどうか

est.constraint

制約付き推定をするかどうか

q.const

qパラメータの制約(0は推定しないで1にfix)

b.const

bパラメータの制約(0は推定しないで1にfix)

max.iter

q,b,sigma計算の際の最大繰り返し数

lambda

ridge penaltyの大きさ

beta

penaltyのexponent (beta = 1: lasso, 2: ridge)

penalty

ridgeVPAの際に与えるpenaltyの種類."p"=指定した年齢範囲の最終年の年齢別Fのbeta乗の和,"f"={最終年の年齢aのF-(tf.yearで指定した年のa歳の平均のF)}のbeta乗の和,"s"={最終年の年齢aのs-(tf.yearで指定した年のa歳の平均のs)}のbeta乗の和

ssb.def

i: 年はじめ,m: 年中央, l: 年最後

ssb.lag

0: no lag, 1: lag 1

TMB

TMBで高速計算する場合TMB=TRUE (事前にuse_rvpa_tmb()を実行) 全F推定法,POPE=TRUE, alpha=1, 途中でプラスグループが変化しない場合のみのときに使用可能

sigma.constraint

sigmaパラメータの制約.使い方としては,指標が5つあり,2番目と3番目の指標のsigmaは同じとしたい場合はc(1,2,2,3,4)と指定する

eta

Fのpenaltyを分けて与えるときにeta.ageで指定した年齢への相対的なpenalty (0~1)

eta.age

Fのpenaltyを分けるときにetaを与える年齢(0 = 0歳(加入),0:1 = 0~1歳)

tmb.file

TMB=TRUEのとき使用するcppファイルの名前

remove.abund

ある値を引いた値に対してチューニングに使用する(トラフグ伊勢・三河湾系群で放流魚を引いて天然魚のみに対してチューニングするため).

madara

マダラ太平洋系群で用いているチューニングのやり方

p_by_age

選択率更新法でridgeVPAの際にpenalty="p"のときに年齢別にペナルテイーを与えるか与えないか.与えたい場合はTRUEとして,penalty_age(eta=NULLのとき)もしくはno_eta_age(etaがNULLでないとき)に年齢範囲を指定する.

penalty_age

選択率更新法でridgeVPAをする際のpenalty="p"のときで,etaがNULLで,p_by_age=TRUE (年齢別にペナルテイーを与えたい)ときにペナルテイーを与える年齢範囲.0歳から2歳までなら0:2とする.

no_eta_age

選択率更新法でridgeVPAの際にpenalty="p"のときで,etaがNULLでなく,p_by_age=TRUE (年齢別にペナルテイーを与えたい)ときに,etaがかからないほうの年齢範囲

sdreport

TMB=TRUEのときにsdreport()を実行するかどうか(naa, faa, 資源量, 親魚量, Fの平均, 漁獲割合のSDを計算する)

use.equ

plus groupが途中で変わる場合の計算式の選択 (old = 従来の方法(プラスグループが延長している年はプラスグループのFが一歳若い年齢のFと等しいという仮定は置かない),new= 新しい方法(プラスグループが延長している年はプラスグループのFが一歳若い年齢のFと等しいという仮定を置く)

ave_S

選択率更新法において,最終年の選択率の仮定が通常(TRUE)とは違い,ヒラメ瀬戸内のように,最終年の選択率がtf.yearで指定した年の平均のF(つまりSUM(F,a)/SUM(F,maxage))に等しいと仮定する場合はFALSEにする.この場合,sel.def="maxage"必須.

Value

list object:

input

解析に用いたデータや仮定

term.f

推定されたターミナルF

np

推定されたターミナルFの数

minimum

最適解における目的関数の値(合計)

minimum.c

最適解における目的関数の値(個々)

logLik

対数尤度

gradient

最適解での傾き

code

最適化法から返されるコード(どのような理由で最適化が停止したのかがわかる)

q

推定されたq(資源量指標値の比例定数))

b

推定されたb(資源量指標値の非線形性))

sigma

資源量指標値の分散の平方根

convergence

解が収束していれば1,そうでないと0

message

最適化に関する注意(あれば)

hessian

ヘッセ行列の値

Ft

最終年のFの平均値

Fc.at.age

Fcurrentで指定した年における平均のF

Fc.mean

Fc.at.ageを平均したもの

Fc.max

Fc.at.ageの最大値

last.year

vpaを計算する最終年を別に指定した場合

Pope

popeの近似式を用いたか否か

ssb.coef

産卵親魚量の計算時期(年始めなら0,年中央なら0.5,年最後なら1)

pred.index

推定された資源量指標値

wcaa

caa*waa.catch

naa

推定された年別年齢別資源尾数

faa

推定された年別年齢別漁獲係数

baa

推定された年別年齢別資源重量

sbb

推定された年別年齢別産卵親魚量

saa

推定された年別年齢別選択率