③ 実習:Rを使ってみよう データの読み込み データの整形とプロット Catch curve analysis 時空間データのプロット

Slides:



Advertisements
Similar presentations
図示、可視化モジュール ~ pylab と numpy を ちょっと~. pylab とは? ・数学や統計的なグラフを生成するモ ジュール ・インストール pip や easy install からのインストールを推奨 →numpy モジュールなどの前提としている。 Anaconda の場合は標準.
Advertisements

まぐろはえ縄データを用いた 標準化 CPUE の推定 遠洋水産研究所 くろまぐろ資源部 太平洋くろまぐろ資源研究室 市野川 桃子.
情報処理 第 11 回. 今日の内容 練習用ファイルのダウンロード作成できる主なグラフ棒グラフの操作 – 棒グラフの作成 – グラフの位置とサイズの調整 – グラフタイトルの表示 – 軸ラベルの表示 – 横軸の文字の配置 – データラベルの表示.
Windows 環境から SAS を使う 長野 祐一郎 1. データのダウンロード 2. データの加工 3. プログラムの作成 4.TeraTerm によるプログラムの実行 5. 処理結果の確認 6.SAS のデータ処理を概観 今回の授業では、 Windows 環境で作成されたデータを.
コンピュータと情報 第10回 Excel を使ってみる. Excel の起動 ① 「スタート」ボタンをク リック ② すべてのプログラムにマ ウスカーソルをあわせる ③ 「 Microsoft Office 」 → 「 Microsoft Excel 2003 」 にマウスをあわせて,ク リック ④.
コンピュータ演習 Excel 入門 岡田孝・山下雅啓 Excel の機能は膨大 その中のごく一部を紹介 表計算機能 – データの入力、表の作成、計算など グラフ機能 – 棒グラフ、円グラフなどグラフ作成 データベース機能 – 並べ替え(ソート)、検索、抽出など マクロ機能 – VBA で自動化したマクロを作成可能.
JMP version5(以上) 日本語版のScripting Languageによる プログラミング
初年次セミナー 第13回 2次元グラフィックス(1).
TeX で数式を書くための PowerPoint アドイン Ver (2011/06/26) Ver. 0.1 (2007/5/30)
データ分析入門(12) 第12章 単回帰分析 廣野元久.
Rコマンダーで2要因の 反復測定ANOVA 「理学療法」Vol28(8)のデータ
2017/3/2 情報処理 第8回.
データ分析入門(7) 第7章 データの操作と比較 廣野元久.
Fortran と有限差分法の 入門の入門の…
REIMEI EISA Viewerの使い方
Rによる回帰分析 高崎経済大学 宮田 庸一.
自己回帰モデルへの橋渡し 高崎経済大学 宮田庸一
Excelによる統計分析のための ワークシート開発
RコマンダーでANOVA 「理学療法」Vol28(7)のデータ
2017/3/7 情報処理 第8回.
C言語 配列 2016年 吉田研究室.
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
心理学情報処理法Ⅰ やってみよう:Excelを使ってみよう.
大阪工業大学 情報科学部 情報システム学科 宇宙物理研究室 B 木村悠哉
回帰分析.
ブロック線図によるシミュレーション ブロック線図の作成と編集 ブロック線図の保存と読込み ブロック線図の印刷 グラフの印刷
文字化けの背景を知る.
相関と回帰:相関分析 2つの変量それぞれが正規分布にしたがってばらつく量であるとき,両変数の直線的な関係を相関分析する. 例:兄弟の身長
Real Time Graph 指定された計測のデータを実時間収集サーバ(LABCOM)から取得し、リアルタイムにグラフとして表示する。
情報処理 第6回.
データ分析入門(13) 第13章 主成分分析 廣野元久.
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
【小暮研究会2】 「ベイズのアルゴリズム」:序章 【1,2:計量経済分析と統計分析】 【 3:ベイズ定理】
第9回:Microsoft Excel (1/2)
近年の北極振動の増幅 Recent Arctic Oscillation amplification
スペクトル・時系列データの前処理方法 ~平滑化 (スムージング) と微分~
地理情報システム論 第14回 ラスタ形式による空間的演算 GISの応用(2)~土地利用の予測
第10回:Microsoft Excel (2/2)
慶應義塾大学 理工学部 数理科学科 南 美穂子 データから情報を引き出そう 慶應義塾大学 理工学部 数理科学科 南 美穂子
Rコマンダーで分割プロットANOVA 「理学療法」Vol28(8)のデータ
行列による画像処理 デジタル表現論 担当者:劉 雪峰 2017年6月1日.
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
Rコマンダーで2元配置ANOVA 「理学療法」Vol28(8)のデータ
Curriki原典
数量分析 第2回 データ解析技法とソフトウェア
デジタル画像とC言語.
主成分分析 Principal Component Analysis PCA
「入力」はInputBoxやテキストボックスに限らず、 セルからのデータの入力や、チェックボックス等からの入力全てを含める。
部分的最小二乗回帰 Partial Least Squares Regression PLS
Rを使用したデータ解析・グラフ描き.
データの型 量的データ 質的データ 数字で表現されるデータ 身長、年収、得点 カテゴリで表現されるデータ 性別、職種、学歴
Cプログラミング演習資料.
第10回:Microsoft Excel (2/2)
統計ソフトウエアRの基礎.
計測工学 計測工学8 最小二乗法3 計測工学の8回目です。 最小二乗法を簡単な一時関数以外の関数に適用する方法を学びます。
データ解析 静岡大学工学部 安藤和敏
回帰分析(Regression Analysis)
情報の集約 記述統計 記述統計とは、収集したデータの分布を明らかにする事により、データの示す傾向や性質を要約することです。データを収集してもそこから情報を読み取らなければ意味はありません。特に膨大な量のデータになれば読みやすい形にまとめて要約する必要があります。
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
データ解析 静岡大学工学部 安藤和敏
精密工学科プログラミング基礎 第7回資料 (11/27実施)
Googleマップを活用した 生物調査データベースの構築
モデルの微分による非線形モデルの解釈 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
森 裕一(岡山理科大学) 山本義郎(岡山大学自然科学研究科) 渡谷真吾,尾高好政(倉敷芸術科学大学) 垂水共之,田中 豊(岡山大学)
回帰分析入門 経済データ解析 2011年度.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
Cプログラミング演習資料.
素子のばらつきが特性に与える影響を調べます。 ここでは,RCフィルタ回路の 抵抗の誤差1%,コンデンサの誤差5% とします。
Presentation transcript:

③ 実習:Rを使ってみよう データの読み込み データの整形とプロット Catch curve analysis 時空間データのプロット 簡単なCPUE解析

データの読み込み データの整形とプロット Catch curve analysis 時空間データのプロット 簡単なCPUE解析

「作業ディレクトリ」を決める データの入出力をする場合,この ディレクトリ(フォルダ)上に読み込 むデータを置いたり,また,出力さ れるデータが置かれたりします 今までのRのオブジェクト(.Rdata) や履歴(.Rhistory)がこのフォルダ 内で保存されます Rエディタで作成したスクリプトも, このフォルダに保存されます

作業ディレクトリ(kensyu2015)にデータ(data.zip)を置いて展開 dataフォルダの中身(csvファイル) を全て,kensyu2015フォルダに移 動させる

作業ディレクトリに移動する Rを立ち上げ,kensyu2015を「作業 ディレクトリ」に指定する 「ファイル」→「ディレクトリの変更」 →作成したフォルダを選ぶ

caa <- read.csv("caa.csv") caa # dataフォルダの中の年齢別漁獲尾数        データ(caa.csv)を読み込む caa <- read.csv("caa.csv")  caa X X1991 X1992 X1993 X1994 X1995 X1996 1 0 199.874276 216.596467 267.690569 218.698390 165.560323 249.248457 2 1 129.461780 121.415250 162.962634 158.666333 154.135672 95.753371 3 2 72.371953 71.295753 82.083224 85.462795 98.075615 76.984231 .... caa[,1] # 1列目のデータだけ見る [1] 0 1 2 3 4 5 6 caa[1,] # 1行目のデータだけ見る X X1991 X1992 X1993 X1994 X1995 X1996 X1997 1 0 199.8743 216.5965 267.6906 218.6984 165.5603 249.2485 187.9007 X1998 X1999 X2000 1 130.2869 79.9196 77.11111

maa <- read.csv("maa.csv") # 成熟率 waa <- read.csv("waa.csv") # 体重 # 同様に,他のデータも読み込んでみる maa <- read.csv("maa.csv") # 成熟率 waa <- read.csv("waa.csv") # 体重 index <- read.csv("index.csv")               # 資源量指数

データの読み込み データの整形とプロット Catch curve analysis 時空間データのプロット 簡単なCPUE解析

データの整形&概観 caa <- caa[,-1] # 1列目を削除 colSums(caa) # 列方向に足し合わせる # →毎年の総漁獲尾数を見る colSums(caa) X1991 X1992 X1993 X1994 X1995 X1996 X1997 X1998 452.1437 464.3551 580.7432 523.5706 486.2701 483.0708 430.4363 313.8851 X1999 X2000 212.4737 164.5533 plot(colSums(caa)) # プロットする

データのプロット par(mar=c(4,4,1,1)) # mar=margin plot(1991:2000, # もう少し格好良く&省スペースにする par(mar=c(4,4,1,1)) # mar=margin plot(1991:2000, colSums(caa),type="b", xlab="Year",ylab="Catch number", ylim=c(0,max(colSums(caa))))

データのプロット(棒グラフ) barplot(colSums(caa),col="lightblue") 同様に,xlab, ylab (x, y軸のラベル),xlim, ylim (x, y軸の範囲) なども共通のことが多い

行方向への平均 rowMeans(caa) # 年齢別漁獲尾数の年平均となる 行方向・列方向へのデータ処理関数 [1] 179.288680 115.704227 66.045344 28.820419 11.910463 5.295344 [7] 4.085709 行方向・列方向へのデータ処理関数 colSums, rowSums: 列,行方向への足し算 colMeans, rowMeans:列,行方向で平均する apply: 列・行方向に任意の関数を適用する (使い方)  apply(行列, 1(=列)または2(=行), 関数名) つまり,rowMeans(caa)は,apply(caa, 1, mean)と同じ

様々なデータのプロット # 年齢別体重 plot(waa[,1], rowMeans(waa[,-1]), type="b", xlab="Age",ylab="Weight")

# 年齢別成熟率 plot(maa[,1], rowMeans(maa[,-1]), type="b", xlab="Age",ylab="Maturity rate")

plot(0:6, rowMeans(caa), type="b", xlab="Ages",ylab="Mean catch") # 年齢別漁獲尾数の年平均 plot(0:6, rowMeans(caa), type="b", xlab="Ages",ylab="Mean catch") 高齢魚ほど,平均的な漁獲尾数は 少なくなる

matplot(1991:2000, t(caa), type="b", xlab="Year",ylab="Catch Num") # 年齢別漁獲尾数の行列のプロット matplot(1991:2000, t(caa), type="b", xlab="Year",ylab="Catch Num")

データの読み込み データの整形とプロット Catch curve analysis 時空間データのプロット 簡単なCPUE解析

Catch Curve Analysis 高齢魚ほど平均的な漁獲尾数が少なく なっていた  自然死亡や漁獲により,数が減るから 漁獲尾数の少なくなる度合から,     どのくらいの魚が生き残っているか               推定できないか?       (Catch Curve Analysis)

log (Cx) = log(C) + log(N0) + x× log (S) Catch Curve Analysis 毎年の新規加入量は一定 毎年・各年齢の一定割合Sだけ生き残る 0歳の加入尾数: N0 1歳の生き残り N1 = N0 × S 2歳の生き残り: N2 = N1 × S = N0 × S2 x歳の生き残り: Nx = N0 × Sx 全ての年齢を同じ割合 C だけ漁獲して いるなら,x歳の漁獲尾数 Cx は Cx = C × N0 × Sx log (Cx) = log(C) + log(N0) + x× log (S) y = b + a x

log (Cx) = log(C) + log(N0) + x× log (S) Cx = C × N0 × Sx log (Cx) = log(C) + log(N0) + x× log (S) y = b + a x log (Cx) (年齢別漁獲尾数のlog)に対して,年齢(x)を回帰させたものの傾きがlog (S)となる.  exp(傾き)が生き残り率となる plot(0:6, log(rowMeans(caa)), type="b", xlab="Ages", ylab="log(Mean catch)")

回帰式をあてはめる x <- 0:6 # 年齢 y <- log(rowMeans(caa)) # log(caa) res <- lm(y~x)  # yをxに対して回帰 res Call: lm(formula = y ~ x) Coefficients: (Intercept) x 5.3518 -0.6866 > exp(res$coef[2]) x 0.5032655 シミュレーションの仮定 自然死亡係数 0.4, Fの平均は0.32 => Z=0.72  ↑ 切片 ↑ 傾き ← 生き残り率 = 50%

グラフに回帰式を追加する plot(0:6, log(rowMeans(caa)), type="b", xlab="Ages", ylab="log(Mean catch)") abline(res,col=2,lwd=2) abline関数 lm関数の結果を与えると,その予測直線を引く a=XX, b=XXと設定すると,切片=a,傾き=bの直線を引く

データの読み込み データの整形とプロット Catch curve analysis 時空間データのプロット 簡単なCPUE解析

データの読み込み tdat <- read.csv("testdata.csv") dim(tdat) head(tdat) lon lat year N # 経度,緯度,年,CPUE 1 138 35 1990 2 2 148 37 1990 125 3 144 36 1990 42 4 145 40 1990 19 5 140 30 1990 57 6 141 35 1990 40

データの概観 x <- tapply(tdat$N, tdat$year, mean) # 年ごとや緯度経度ごとに平均や合計を # 算出したい  tapply 関数を使う # tapply(集計したいもの, ラベル, 関数) x <- tapply(tdat$N, tdat$year, mean) plot(names(x), x, type="b", xlab="Year",ylab="CPUE")

x <- tapply(tdat$N, tdat$lat, mean) plot(names(x), x, type="b", # 緯度ごとの平均 x <- tapply(tdat$N, tdat$lat, mean) plot(names(x), x, type="b", xlab="Lat",ylab="CPUE")

x <- tapply(tdat$N, tdat$lon, mean) plot(names(x), x, type="b", # 経度ごとの平均 x <- tapply(tdat$N, tdat$lon, mean) plot(names(x), x, type="b", xlab="Lon",ylab="CPUE")

list(tdat$lon,tdat$lat),mean) x1 <- as.numeric(dimnames(x)[[1]]) # 経度・経度ごとの平均 x <- tapply(tdat$N,    list(tdat$lon,tdat$lat),mean) # これを2次元平面上にプロットしてみる x1 <- as.numeric(dimnames(x)[[1]]) y1 <- as.numeric(dimnames(x)[[2]]) image(x1,y1, x, xlab="Lon",ylab="Lat", col=rev(heat.colors(12)))

library(maps) map('world2',lwd=2,add=T) # 地図を上書きする # インストールしておいたライブラリを呼び出す library(maps) map('world2',lwd=2,add=T)

list(tdat$lon,tdat$lat,tdat$year), mean) years <- dimnames(x3)[[3]] # 年によって分布がどう変わるか? # x3は3次元の配列となる x3 <- tapply(tdat$N,    list(tdat$lon,tdat$lat,tdat$year), mean) years <- dimnames(x3)[[3]] image(x1,y1, x3[,,1], xlab="Lon", ylab="Lat", col=rev(heat.colors(12))) map('world2',lwd=2,add=T) title(years[1])

image(x1,y1, x3[,,2], xlab="Lon", ylab="Lat", col=rev(heat.colors(12))) map('world2',lwd=2,add=T) title(years[2])

for(i in 1:length(years)){ image(x1,y1, x3[,,i], xlab="Lon", ylab="Lat", col=rev(heat.colors(12))) map('world2',lwd=2,add=T) title(years[i]) } 複数の図が一気に描画されるので,最後の図しか見ることはできない 「R Graphics」を選択した状態で,メニューの「履歴」→「記録」をクリックすると,過去の図を見ることができるようになる 「記録」にチェックを入れた状態で,もう一度コマンドを実施→PageUp

par(mfrow=c(4,4),mar=c(2,2,1,0.5)) for(i in 1:length(years)){ image(x1,y1, x3[,,i], xlab="Lon", ylab="Lat", col=rev(heat.colors(12))) map('world2',lwd=2,add=T) title(years[i]) } 漁場の位置が東に移動している par(mfrow=c(4,4)) コマンドを使うと,1枚のパネルに16枚の図が書けるようになる mar= のオプションは,margin (余白)の大きさ

データの読み込み データの整形とプロット Catch curve analysis 時空間データのプロット 簡単なCPUE解析

年によるCPUEの変化は,漁場位置の変化か?資源量の変化か? 漁場の位置は,年々東へ ←CPUEの年トレンド ←CPUEの空間分布

アプローチA. 同じ海域でCPUEのトレンドを比較してみる 東経150-160度・北緯25-35度の範囲でデータを取り出してみる tdat2 <- subset(tdat, lon>149 & lon<161 & lat>24 & lat<36) cpue2 <- tapply(tdat2$N, tdat2$year, mean) plot(names(cpue2), cpue2/mean(cpue2), type="b", xlab="Year",ylab="CPUE", ylim=c(0,2)) cpue1 <- tapply(tdat$N, tdat$year, mean) points(names(cpue1),cpue1/mean(cpue1), type="b",pch=2,col=2)

legend("bottomleft",pch=1:2,col=1:2, legend=c("一部海域","全海域")) 一部海域だけで見た場合と,全海域で見た場合で,傾向はかなり異なる 全海域のデータを使うと,漁場の移動の影響が年のCPUEの変化だと,誤って捉えられてしまう  これを,統計的にきちんと解析する(標準化)

アプローチB. 一般化線形モデル(GLM) を用いた解析 (CPUE標準化) gres <- glm(N~factor(year)+factor(lon)+ factor(lat), data=tdat,family="poisson") cpue3 <- exp(c(0,gres$coef[2:16])) plot(cpue3/mean(cpue3),type="b") points(cpue2/mean(cpue2),type="b",pch=2) points(cpue1/mean(cpue1),type="b",pch=3) legend("topright", pch=1:3, legend=c("GLM","一部海域","全海域"))

CPUE標準化とは? N~factor(year)+factor(lon)+factor(lat) 統計的な手法(GLM等)を用いて,応答 変数に影響を与える様々な要因を特 定し,その中から資源量指数を取り出 すこと 例データでの応答変数=N 資源量指数=年によるCPUEの変化 そのほかの要因=緯度,経度 N~factor(year)+factor(lon)+factor(lat) 応答変数 取り出したい「年」の要素 応答変数に影響を与える他の要因

CPUE標準化についての参考文献 Maunder, Punt AE. 2004. Standardizing Catch and Effort Data: A Review of Recent Approaches. Fish. Res. 70, 141-159 庄野. 2004. CPUE標準化に用いられる統計 学的アプローチに関する総説. 水産海洋研 究 68, 106-120  大気海洋研究所共同利用シンポジウム発 表資料 「日本延縄漁業データを用いた標 準化CPUE」 http://cse.fra.affrc.go.jp/ichimomo/Tuna/gl m_longline_presentation.pdf

補足1 # 等高線図のプロット x <- tapply(tdat$N, list(tdat$lon,tdat$lat),mean) # 経度・経度ごとの平均 x <- tapply(tdat$N,    list(tdat$lon,tdat$lat),mean) # これを2次元平面上にプロットしてみる x1 <- as.numeric(dimnames(x)[[1]]) y1 <- as.numeric(dimnames(x)[[2]]) image(x1,y1, x, xlab="Lon",ylab="Lat", col=rev(heat.colors(12))) contour(x1,y1,x,add=TRUE)

補足2 library(mapdata) map("japan") map.axes() # 解像度の高い日本地図 library(mapdata) map("japan") map.axes() map("japan",xlim=c(135,140), ylim=c(32,35),fill=T,col="gray") points(137, 33)