データのお砂場(133) R言語、salinity、塩分濃度と河川流量、{boot}

Joseph Halfmoon

Rのパッケージ「Boot」のサンプルデータセットをabc順に経めぐってます。今回はsalinity。しょっぱさ?河口に広がる広大な浅い潟における塩分濃度と流入する河川の水量に関するデータみたいです。前回の医療系もそうだったけれども測定データに単位書いてないっす。でも今回のは「その筋」の人には「自明」ってことみたいデス。

※「データのお砂場」投稿順Indexはこちら

salinityデータセット

サンプルデータセットの解説ページが以下に。

Water Salinity and River Discharge

ノースカロライナ州はパムリコ湾の、パムリコ川下流に広がる潟河口における塩分濃度の測定データだそうです。パムリコ湾は、ごく浅く(水深数メートル)、広く広がる(千葉県全体を上回る面積)干潟みたいなところらしいです。大西洋との境には、アウターバンクスという長大な砂嘴が途切れ途切れに続いているみたいです。南のパムリコ湾だけでなく、北にはアルベマール湾という湾もあるみたいなので、面積どれだけあるのだか。紹介写真を拝見すると、茫漠とした海と川のなす風景です。観光地としては人気?釣りスポット?漁業も盛んみたいっす。なお、今回のデータは、パムリコ湾に注ぐ2大河川?パムリコ川とヌース川のうち、パムリコ川の方で1970年代に取得されたデータみたいです。複数年にわたるデータなのだけれども春(3月から5月)だけ。

データセットには以下の4フィールドがあります。

    1. sal 二週間の平均塩分
    2. lag 二週間遅れ(lag)の平均塩分だが春先限定データのため前後関係一定しない
    3. trend 3-5月のどの2週かを示すインデックス
    4. dis 河川流量

3は0が三月第1週と第2週という感じに順番に振られた数字、という理解でいいみたいですが、他の項目については単位や測定地点、測定された年などの記述は一切ありません。知りたい奴は原典にあたれ、ということか?

しかし、今回は前回のような医療系のデータではないので、簡単に単位等は推測つきました。まず濃度については、ppt(parts per thousand、千分率、パーミル、‰です。重量基準です。)これは海水の塩分濃度を測るときのお約束みたい。ざっくり「その辺の海水」は35pptなんだとか。なお、重量濃度の計測はメンドそうです。実際にはPSU(Practical Salinity Unit 実用塩分単位、電気伝導度から換算する)とか、屈折計による計測(温度で体積膨張の影響をうける)とかいろいろあるみたい。

そんな中、米国のお子様向けのウエブサイト(パムリコ湾の地図や写真あり)にて、以下の記事を発見しましたぞ。

Pamlico Sound facts for kids

上記より塩分濃度について記されている一節を引用させていただきます。

The salinity of the sound averages 20 ppt, compared to an average coastal salinity of 35 ppt in the Atlantic and 3 ppt in the Currituck Sound, which is located north of the Albemarle Sound.

いや~米国のお子様方は、大西洋沿いの湾内の塩分濃度までご存じ。というのもこの湾は、「その筋」の計測が長らく続けられている場所であるみたいです。『METABASE Explorer』様

Pamlico Sound PS1

上記には、70年代の春限定といわず、各年代の非常に多岐に渡る時系列データ多数があり。眺めているだけでも面白いです。

なお、河川流量については、CMS (cubic meters per second)単位でした。日本ではCMSとは言わないけれど、m3/s が「業界標準」みたいなので共通ね。これについては、『国土交通省 川の防災情報』様

河川の流量

昔、土木(河川関係)の人の計測を手伝ったことがあり、その時に流量「xxトン」とか言っていたのを思い出しましたぜ。「単位は?」ときいたら「毎秒」とかえってきたので、1g以下の「デバイス」で飯を食っている半導体屋は震えあがりましたぞ。カイデ~。生コンも「イチ・リューベイ」あたりの単価x円みたいなところで頭をひねっていたので聞いたら、「今回1万トンくらい打つ」らしいので単価1万倍ね。土木関係はデカいっす。

まずは生データ

まずは生データのロードから。こんな感じ。salinityRawData

フツーのデータフレームです。当方勝手推定によれば、salとlagがppt単位、disがCMS単位であると。

とりあえず何だか分からないので、プロットしてみました。

par(mfrow=c(3,1), mar=c(4,4,1,1), oma=c(0,0,0,0))
plot(salinity$trend, salinity$sal, ylim=c(4, 16), col=2, xlab="trend", ylab="salinity$sal", lwd=4)
plot(salinity$trend, salinity$lag, ylim=c(4, 16), col=3, xlab="trend", ylab="salinity$lag", lwd=4)
plot(salinity$trend, salinity$dis, ylim=c(20, 35), col=4, xlab="trend", ylab="discarge", lwd=4)

プロット結果が以下に。salinityPlot

なんだか、trend=2(4月前半)付近に塩分濃度の最小値がくるような。一方、流量の方はtrend=1(3月後半)付近に最大値が来るような。知らんけど。

流量と塩分濃度の「比」をみてみた

まずは、 aggregateを使って trendに対するsarとdisの平均値を算出。

aggregate(salinity$sal, by=list(salinity$trend), mean)
aggregate(salinity$dis, by=list(salinity$trend), mean)

結果が以下に。aggregate

まあ確かに、塩分濃度は4月頭に最小で、流量は3月末に最大と読み取れるけど、グラフからの印象よりは小さい変化に見える?

さて、塩分濃度と流量の比を求め、それをヒストグラムにしてみます。こんな感じ。

salDis.ratio <- salinity$sal / salinity$dis
hist(salDis.ratio)

グラフがこちら。salDisHist

なお、全体平均は0.44くらいっす。

久しぶりにブートストラップ法適用してみた

ブートストラップ法のサンプルデータといいつつ、最近まったくブートストラップ法していなかったので、今回はやってみました。boot.ci使って「信頼区間」の推定まで。

ratio <- function(d, w) sum(d$sal * w)/sum(d$dis * w)
salinity.bootW <- boot(salinity, ratio, R = 999, stype = "w")
boot.ci(salinity.bootW, conf = c(0.90, 0.95), type = c("norm", "basic", "perc", "bca"))

結果が以下に。salinityBootCI

よく分かりもしないまま、4種類も値を求めているけれども、どの方法でも95%信頼区間は、0.38から0.50くらいってこってすか。いいんかな~そういうことで。

データのお砂場(132) R言語、remission、がんの寛解と細胞活性、{boot}へ戻る

データのお砂場(134) R言語、survival、放射線照射後ラットの生存、{boot} へ進む