たとえば、データの移動平均を使用して、ある種のモンテカルロアプローチを使用できます。
適切なサイズのウィンドウを使用して、データの移動平均をとります(幅の決定はあなた次第だと思います)。
データのスルーは(もちろん)より低い平均を特徴とするため、「低」を定義する「しきい値」を見つける必要があります。
これを行うには、データの値をランダムに入れ替え(例:を使用sample()
)、入れ替えたデータの移動平均を再計算します。
この最後のパッセージをかなり高い回数(> 5000)繰り返し、これらの試行の平均をすべて保存します。したがって、基本的には、1つの試行あたり1つ、5000行の行列があり、各行にはその試行の移動平均が含まれます。
この時点で、各列に対して5%(または1%または必要なもの)の分位点を選択します。これは、ランダム化されたデータの平均値の5%のみが存在する値です。
これで、元のデータと比較するための「信頼限界」があります(それが正しい統計用語であるかどうかはわかりません)。この制限よりも低いデータの部分を見つけた場合は、それをスルーと呼ぶことができます。
もちろん、これも他の数学的な方法も生物学的重要性を示すものではないことを覚えておいてください。
編集-例
require(ares) # for the ma (moving average) function
# Some data with peaks and throughs
values <- cos(0.12 * 1:100) + 0.3 * rnorm(100)
plot(values, t="l")
# Calculate the moving average with a window of 10 points
mov.avg <- ma(values, 1, 10, FALSE)
numSwaps <- 1000
mov.avg.swp <- matrix(0, nrow=numSwaps, ncol=length(mov.avg))
# The swapping may take a while, so we display a progress bar
prog <- txtProgressBar(0, numSwaps, style=3)
for (i in 1:numSwaps)
{
# Swap the data
val.swp <- sample(values)
# Calculate the moving average
mov.avg.swp[i,] <- ma(val.swp, 1, 10, FALSE)
setTxtProgressBar(prog, i)
}
# Now find the 1% and 5% quantiles for each column
limits.1 <- apply(mov.avg.swp, 2, quantile, 0.01, na.rm=T)
limits.5 <- apply(mov.avg.swp, 2, quantile, 0.05, na.rm=T)
# Plot the limits
points(limits.5, t="l", col="orange", lwd=2)
points(limits.1, t="l", col="red", lwd=2)
これは単にリージョンをグラフィカルに見つけることを可能にしますが、の行で何かを使用して簡単に見つけることができますwhich(values>limits.5)
。