ヒステリシスループの領域をエレガントに決定する方法(内部/外部の問題)


8

2つのパラメーターを測定しました(溶存有機炭素DOC = y、排出量= x)。これら2つの変数を互いにプロットすると、ヒステリシスループが得られます(コード例と図を参照)。

ここで、さらに分析するために、このヒステリシスループの領域を決定します。これは、モンテカルロダーティングメソッドを使用して実行できることを理解しました。この方法では、未知の領域の面積は、既知の長方形の面積に、内側のフィールド(ループ)でのヒットを掛けたものに比例します。

私の問題は、Rを使用して内側/外側の問題を解決する方法です。どのようにして既知の領域を持つ長方形を描画し、ヒステリシスループの内側と外側のランダムヒットに優れるのでしょうか。

私は他の方法を受け入れることに注意してください...

私はググっていろいろな統計サイトを検索したが答えは見つからなかった。他のウェブサイト/投稿への直接的な支援やリンクは大歓迎です。

私のヒステリシスループ

Data <- read.table("http://dl.dropbox.com/u/2108381/DOC_Q_hystersis.txt", sep = ";",
               header = T)

head(Data)
plot(Data$Q, Data$DOC, type = "o", xlab = "Discharge (m3 s-1)", ylab = "DOC (mg C l-1)",
 main = "Hystersis loop of the C/Q relationship")

回答:


6

まったく異なる方法は、ポリゴンの面積を直接計算することです。

library(geometry)
polyarea(x=Data$Q, y=Data$DOC)

これにより0.606が得られます。


+1。さらに、(たとえば、長さとは異なり)エリアは、頂点座標の独立したエラーに対して非常に堅牢です。この解決策はポリゴンについてあまり想定していないことに注意してください。特に、それはその(マニフェスト)凸性の欠如を尊重します。
whuber

1

1つの可能性はこれです。ヒステリシスループが凸型であるように見えますね。そのため、ポイントを生成し、それがデータセットとランダムポイントの和集合の凸包の一部であるかどうかを各ポイントについてテストできます。ある場合、元のデータセットの外側にあります。処理を高速化するために、元のデータセットのサブセット、つまり凸包自体を構成するポイントを操作できます。

Data.subset <- Data[chull(Data$Q, Data$DOC),c("Q","DOC")]

x.min <- min(Data.subset$Q)
x.max <- max(Data.subset$Q)
y.min <- min(Data.subset$DOC)
y.max <- max(Data.subset$DOC)

n.sims <- 1000
random.points <- data.frame(Q=runif(n=n.sims,x.min,x.max),
  DOC=runif(n=n.sims,y.min,y.max))
hit <- rep(NA,n.sims)
for ( ii in 1:n.sims ) {
  hit[ii] <- !((nrow(Data.subset)+1) %in%
    chull(c(Data.subset$Q,random.points$Q[ii]),
      c(Data.subset$DOC,random.points$DOC[ii])))
}

points(random.points$Q[hit],random.points$DOC[hit],pch=21,bg="black",cex=0.6)
points(random.points$Q[!hit],random.points$DOC[!hit],pch=21,bg="red",col="red",cex=0.6)

estimated.area <- (y.max-y.min)*(x.max-x.min)*sum(hit)/n.sims

凸包

もちろん、Rの方法ではforループを使用しませんが、これは理解しやすく、遅くなりすぎません。推定面積は0.703です。

編集:もちろん、これは関係の推定された凸性に依存します。たとえば、右下に非凸部があるようです。原則として、同じようにそのような領域の面積をモンテカルロ推定し、これを元の面積推定から差し引くことができます。


ポリゴンをラスタライズし、そこに含まれるセルをカウントすることで面積を推定する方がはるかに高速で正確です。
whuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.