チューニングVPA

3つ目のVPAプログラムです。

一つ目は北大水産の実験で使用したVPAの計算式を用いました。
二つ目は、資源解析手法教科書に載っている計算式を使用したVPAでした。

今回は資源解析手法教科書のpp112-115の チューニングVPAの計算方法をそのまま用いて計算プログラムを作りました。ただし、p115の手法②「6歳のFは(11)式」と書かれていましたが、本 プログラムでは(12)式を使用しました。

VPAの結果を資源量指数(CPUEなど。CPUEの解説ページはこちら)でチューニングすることにより、解析結果の信頼性を上げようというものですが、資源量指数の正確性に大きく左右されるという欠点もあるようです。細かい解説は教科書に譲ります。

一応教科書p114の表2の数値例を用いて動作確認を行いましたが、バグ等あればご一報いただけると幸いです。

RでVPA

早速RでチューニングVPAしてみましょう。
VPAがどういうモノか知りたい方はこのページを参照してください。

私の自作したVPAプログラムはこちらからダウンロードしてください。右クリックして名前を付けてリンク先を保存するとよいです。

サンプルデータはこちらから落としてください。これは管理人の作成したシミュレーションデータであり、実データではありません。

また、今回はチューニングするための指数も必要となります。かなり適当に作りましたが、資源量指数はこちらから落としてください。

 

では、VPAのプログラム「VPA_Tuned.txt」とデータファイル「data.txt」そしてチューニングするための資源量指数「index_Tuned.txt」がすべて同じフォルダに格納されているという前提で話を進めていきます。

まずは、Rを起動した後コンソールのファイル→ディレクトリの変更をして、データや計算プログラムの入ったフォルダを指定してください。そのうえで、以下を実行します。


source("VPA_Tuned.txt")

Catch <- read.table("data.txt", header=T)
Index <- read.table("index_Tuned.txt", header=T)

一行目は計算プログラムを読み込むという指示で、2,3行目はデータの読み込みです。

今回はTuned_VPAという名前の関数を作成しました。私の作ったTuned_VPAという関数には引数として、データ、資源量指数、自然死亡係数、漁獲の影響力の初期パラメータの3つが必要となります。
これらを突っ込めば一瞬で海の中にいる魚の個体数と漁獲の影響力の経年変化を計算することが可能です。
やってみます。

(2019年3月11日追記:変数名が間違っていたので、コードを修正しました)


Tuned_VPA(Catch, Index, M=0.2, F.first=0.5)

Mが自然死亡係数(自然死亡の大きさ。自然死亡率そのものではない)で、F.firstが漁獲係数(漁獲の影響力。漁獲割合そのものではないので注意)の初期値です。新たに加わった資源量指数はIndexという名前で中に突っ込みました。

計算結果は長いのでこちらからダウンロードしてください

チューニングVPAにはほかにも色々な計算方法があります。このプログラムはその一例です。
チューニングする指標をたくさんに増やしたり、チューニングの方法を変えたり、扱う対象をよく吟味して計算方法を変えていきましょう。

2013年8月31日:新規追加
2019年3月11日:Rのコードを修正

チューニングVPA” に対して3件のコメントがあります。

  1. CFT より:

    こんばんは。VPAを勉強中の者です。

    載せていただいているコマンドをコピー&ペーストして実行すると、
    「エラー: 関数 “Tuned_VPA” を見つけることができませんでした」
    と表示されて続行できません。
    必要なテキストファイルは1つのフォルダに格納し、作業ディレクトリにしています。

    Rのバージョンは3.0.1です。

    原因、対処法として考えられることを教えていただけないでしょうか。
    お手数おかけしますが、何卒よろしくお願い申し上げます。

    1. 馬場真哉 より:

      CFT様

      コメントありがとうございます。
      管理人の馬場です。

      理由が2つ考えられます。
      1つはダブルクォーテーションの文字化けです。
      文字化けが起こらないように、コードの書き方を修正しました。
      こちらをコピーしてお使いください。

      2つ目ですが、Tuned_VPAの実行コードが間違っていました。
      Catchという変数を使って、VPAを実行するように、コードを修正しました。
      こちら、大変失礼いたしました。

      お手数ですが、こちらでご確認ください。

      また、かなり昔に作ったコードですので、正直、今ならこのようなプログラムは書かないだろうな、という実装のやり方になっております。
      今後修正することを検討しますが、現状は、あくまで参考程度の情報としていただけますと幸いです。

      1. CFT より:

        馬場様
        早々のご対応ありがとうございます。
        無事に実行することができました。

CFT へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Rコードあり

次の記事

成長曲線