2

さまざまな標高のフィーチャの数で構成される多数のデータセットがあります。現在、1~30mまで1m間隔ごとのデータがあります。プロットすると、私のデータセットの多くは 3 ~ 4 個のピークを示しており、これは高さの層を示しています。

サンプル データセットを次に示します。

高さ <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 ,24,25,26,27,28,29,30) カウント <-c(4000,2000,500,300,200,100,0,0,400,700,800,800,500,1000,1500,2000,2500,2200,1700,1100,500,0,0, 1000,1500,2000,3000,4000,4000,2000)

「ピーク」の総数、ピークの中心位置 (つまり高さ)、およびピーク幅を決定するために、これらのデータセットに何らかの曲線関数を当てはめたいと思います。少し前にfitykソフトウェアを使用して複数のガウス関数を手動でフィッティングすることにより、この種の分析を実行できましたが、Rを介してそのようなプロセスを自動的に実行できるかどうかを知りたいですか?

mixtools パッケージなどを使用して、ヒストグラムへのピークのフィッティングに関する他の多くの投稿を調査しましたが、個々のピーク情報を抽出できるかどうかはわかりません。

あなたが提供できるどんな助けも大歓迎です。

4

2 に答える 2

4

「自分のデータに曲線を合わせるにはどうすればよいか」という質問は広すぎます。これを行う方法は無数にあるからです。また、おそらくここよりもhttps://stats.stackexchange.com/に適しています。ただし、ksmoothベース R からは、基本的なスムーザーのかなり良い出発点です。

plot(Height,Counts)
smoothCounts<-ksmooth(Height,Counts,kernel="normal",bandwidth=2)
dsmooth<-diff(smoothCounts$y)
locmax<-sign(c(0,dsmooth))>0 & sign(c(dsmooth,0))<0
lines(smoothCounts)
points(smoothCounts$x[locmax],smoothCounts$y[locmax],cex=3,c=2)

ここに画像の説明を入力

于 2013-10-17T19:27:39.407 に答える
1

単純なピーク識別は、次の行に沿っている可能性があります。合理的に見えますか?

library(data.table)

dt <- data.table(
Height = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30),
Counts = c(4000,2000,500,300,200,100,0,0,400,700,800,800,500,1000,1500,2000,2500,2200,1700,1100,500,0,0,1000,1500,2000,3000,4000,4000,2000)
)

# crude dHeights/dCounts
dt[,d1 := c(NA,diff(Counts))]
# previous crude dHeights/dCounts (d2Heights/dCounts2 will be even more crude so comparing change in dHeight/dCounts instead)
dt[,d2 := c(tail(d1,-1),NA)]

# local maxima
dtpeaks <- dt[d1 >=0 & d2 <=0]

ピークの FWHM をどのように計算するのかよくわかりませんが、そのプロセスを説明できれば、私がお手伝いできるはずです。

于 2013-10-21T18:09:31.420 に答える