9

すでに多くの「密度関数のピーク」スレッドがあるようですが、この点に具体的に取り組んでいるスレッドは見当たりません。見逃していたら重複してすみません。

私の問題: 1000 個の値のベクトル (サンプルが添付されています) が与えられた場合、データのヒストグラムまたは密度関数のピークを特定したいと思います。以下のサンプル データの画像から、ヒストグラムの ~0、6200、および 8400 にピークが見られます。ただし、これらのベクトルが数千あるため、できれば簡単な手順で、これらのピークの正確な値を取得する必要があります。プロセスへ。

ヒストおよび密度関数

私はもともとヒストグラム出力自体を扱い始めましたが、ピーク検出コマンドを適切に機能させることができませんでした (まったくそうではありませんでした)。splus2Rパッケージからpeaks()コマンドを取得して、ヒストグラム オブジェクトまたは密度オブジェクトで動作させる方法もわかりません。各ピークの最大周波数の正確なデータ値を特定したいので(密度関数値とは対照的に、わずかに異なります)、これは私の好みですが、それもわかりません。

私はサンプル データ自体を投稿しますが、ここでそれを行う方法がわかりません (見落としている場合は申し訳ありません)。

4

4 に答える 4

7

y 値が (サンプル プロットのように) 滑らかな場合、これはかなり繰り返してピークを見つけるはずです。

peakx <- x[which(diff(sign(diff(y)))==-2)]
于 2012-10-30T06:08:54.723 に答える
3

ヒストグラムについて考えているので、ヒストグラムの出力を直接使用する必要がありますか?

data <- c(rnorm(100,mean=20),rnorm(100,mean=12))

peakfinder <- function(d){
  dh <- hist(d,plot=FALSE)
  ins <- dh[["intensities"]]
  nbins <- length(ins)
  ss <- which(rank(ins)%in%seq(from=nbins-2,to=nbins)) ## pick the top 3 intensities
  dh[["mids"]][ss]
}

peaks <- peakfinder(data)

hist(data)
sapply(peaks,function(x) abline(v=x,col="red"))

これは完全ではありません。たとえば、隣接している場合でも、上位のビンのみが検索されます。「ピーク」をより正確に定義できますか?それが役立つことを願っています。

ここに画像の説明を入力

于 2012-10-30T06:46:50.350 に答える