Rで解析:水文学に関係する「berryFunctions」パッケージ。水文学、興味が湧きます。


パッケージヘルプのタイトルに「図描写とHydrology(水文学)に関係する機能コレクション」と記載されている「berryFunctions」パッケージが他分野でも利用できそうなので紹介します。

水文学を知らなかったので、調べてみると

「水文学(Hydrology)は地球上の水の循環および分布状況、物理的・化学的特性、および生物的環境と水の相互関係を取り扱う学問です。この中の基礎水文学にあたる部分で、自然科学的なアプローチを重視する学問分野を特に水文科学(Hydrological Sciences)と呼んでいます。」

と日本水文科学会HPで紹介されています。

非常に興味が湧く学問分野です。詳しくは以下の学会を参照ください。
日本水文科学会:http://www.suimon.sakura.ne.jp/about-jahs.html

水文学に関係する「berryFunctions」パッケージの中から、利用できそうな6つの図描写コマンドを紹介します。また、本パッケージでは図の描写以外のコマンドも収録されています。Rの基本コマンドで代用できる内容もありますが、参考までに最後に紹介します。

パッケージのバージョンは1.8.1です。
コマンドはR version 3.2.0で確認しています。

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

githubまたはCRANからインストールが可能です。どちらからでも内容は変わりませんでした。お好みの方法でインストールしてください。

#githubから
ifelse(!require(devtools), install.packages("devtools"), library("devtools"))
install_github("brry/berryFunctions")

#CRANから
#install.packages("berryFunctions")

図描写コマンドの紹介

6つの図描写コマンドを紹介します。詳細はコマンド内のコメントを確認ください。その他の図描写コマンドはパッケージヘルプを確認してください。
”lscコマンド”により出力されず図の解釈がいまいちわかりません。水文学にお詳しい先生、ご教授いただけませんでしょうか。

#パッケージの読み込み
library("berryFunctions")

#Macの日本語文字化け対策
par(family = "HiraKakuProN-W3")

#climateGraphコマンド例
#月別平均の気温と降水量をプロット
#気象庁の東京2014年のデータ
#平均気温
#http://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s3.php?prec_no=44&block_no=47662
#平均降水量
#http://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s3.php?prec_no=44&block_no=47662&year=&month=&day=&view=p5
climateGraph(temp = c(6.3, 5.9, 10.4, 15.0, 20.3, 23.4, 26.8, 27.7, 23.2, 19.1, 14.2, 6.7),
             rain = c(24.5, 157.5, 113.5, 155.5, 135.5, 311, 105.5, 105.0, 155.5, 384.5, 98.5, 62.0),
             main = "東京\n35\U00B0 41' N / 139\U00B0 45' E",
             colrain = "#4b61ba", textprop = 0.2)

#addAlphaを使用したコマンド例
#シンボルのアルファ値(透明度)を自動で調整
NewColors <- addAlpha(c("#d9bb9c", "#28231e", "#deb7a0", "#8a5136", "#e1e6ea"), 0:200/200)
plot(runif(1000), col = NewColors, pch = 16, cex = 2)

#groupHistコマンド例
#グループ毎の出現数を棒グラフで表示
TestData <- data.frame(value = sample(16:30, 100, replace = TRUE), Name = rep(paste0("Test", 1:5), each = 20))
groupHist(TestData, "value", "Name", col = "#e1e6ea", main = "テスト")

#tableColValコマンド例
#セルの番号総数を色数で分割し背景色を設定しプロット
#セル番号総数20の場合、1:4が"#d9bb9c"、5:9が"#a87963"...となります
#オプションを追加することでpdf出力が可能です:, pdffile = "ファイル名.pdf", pdf = TRUE
TestMatrix <- matrix(sample(1:20, 20, replace = FALSE),
                     ncol = 5, byrow = TRUE)
colnames(TestMatrix) <- paste0("Color", LETTERS[1:5])
rownames(TestMatrix) <- paste("群", 1:4, sep = "_")
tableColVal(TestMatrix, palette = c("#d9bb9c", "#a87963", "#deb7a0", "#8a5136", "#4b61ba"), pdf = FALSE)

#movAvLinesコマンド例
movAvLines(1:30, sample(1:20, 30, replace = TRUE), col = "#deb7a0", lwd = 3, plot = TRUE)

#lscコマンドの例
#下記コマンドはヘルプそのママです。面白い図なので紹介
#estimate parameters for Unit Hydrograph, plot data and simulation: lsc
#単位当たりの水量とシミュレーションによる推定値?水文学にお詳しい先生、解釈法を教授いただけませんでしょうか
QOBS <- dbeta(1:40/40, 3, 10) + rnorm(20, 0.2) + c(seq(0, 1, len = 20), rep(1, 20))
PREC <- c(1, 1, 3, 4, 5, 5, 4, 3, 1, 1, rep(0, 30))
lsc(PREC, QOBS, area = 10)

図の出力例

climateGraphコマンド
climateGraph
addAlphaを使用したコマンド
addAlpha
groupHistコマンド
groupHist
tableColValコマンド
tableColVal
movAvLinesコマンド
movAvLines
lscコマンド
omosirozu


その他コマンドの紹介

Rの基本コマンドで代用できる内容もありますが、参考までに紹介します。詳細はコマンド内のコメントを確認ください。その他のコマンドはパッケージヘルプを確認してください。

#コンソールにメッセージを表示
Test <- c("からだに", "いいもの", "info@karada-good.net")
message("お問い合わせ先:\n", pastec(Test, sep = "", collapse = " "))
お問い合わせ先:
からだに いいもの info@karada-good.net

#文字列から空白を削除
#文字列の途中に空白があっても処理できます
Test <- c("から だに", "いいもの ", "    info@karada-good.net")
removeSpace(Test, begin = TRUE, end = TRUE, all = TRUE)
[1] "からだに" "いいもの" "info@karada-good.net"

#統計量を計算
#分位数の上側%:p1,分位数の下側%:p1
cie(sample(1:20, 30, replace = TRUE), lev = 0.95,
    digits = 3, p1 = 0.05, p2 = 0.95)
5%
CI.lower  8.354
CI.upper 12.646
level     0.950
mean     10.500
sd        5.746
CV        0.547
median   10.000
Quant.p1  1.450
Quant.p2 19.000
p1        0.050
p2        0.950
min       1.000
max      20.000

#規則性のあるベクトルを作成
#seq(12, 6, by = -2)と同じ
seqR(range = c(12, 6), by = -2)
[1] 12 10  8  6

#データフレームに指定した値を追加
MYDF <- data.frame(A = 5:3, B = 2:4)
addRows(MYDF, 3)
#下記コマンドと同じ
#TestDF <- data.frame(matrix(rep("NA", 6), 3, 2))
#names(TestDF) <- names(MYDF)
#rbind(MYDF, TestDF)
   A  B
1  5  2
2  4  3
3  3  4
4 NA NA
5 NA NA
6 NA NA

少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク