状態を A から状態 B に、またはその逆に設定するプログラムを作成しようとしています。
rnumbers <- data.frame(replicate(5,runif(2000, 0, 1)))
20 行ではなく 10000 行であることを除いて、この乱数のデータ フレームは一様分布であると想像しています。
状態 A と状態 B に移行する確率を設定します。
dt <- c(.02)
A <- dt*1
B <- dt*.5
データ フレーム rnumbers を通過する関数を作成し、数値が B 未満の場合は 0 を、数値が A 未満の場合は 1 を入力します。
step_generator <- function(x){
step <- ifelse ( x < B, 0, ifelse(x < A, 1, NA))
return(step)
}
state <- apply(rnumbers, 2, step_generator)
これは本質的に私が望むものを与えます-rnumbersの乱数の値に応じて、0、1、またはNAを含む列を持つデータフレーム。しかし、私はいくつかのことを見逃しています--
1) 各状態がどのくらい続くかを追跡したいと思います。つまり、上記のように各行を時間の変化として想像すると ( dt <- c(.02)
)。「状態対時間」をプロットできるようにしたい。これに対処するために、これが私が試したことです:
state1 <- transform(state, time = rep(dt))
state2 <- transform(state1, cumtime = cumsum(time))
これにより、私が望むものに近づくことができます。cumtime は .02 から .4 になります。ただし、クロックを最初の行で 0 から開始し、後続のすべての行に .02 を追加する必要があります。
2) 各状態がどれくらい続くかを知る必要があります。基本的に、各列を調べて、各状態がどれくらいの時間 (cumsum) 続くかを尋ねられるようにしたいと考えています。これにより、状態 A と状態 B の時間の分布が得られます。これを別のデータ フレームに格納します。
これは理にかなっていると思います。不明な点があればお知らせください。明確にします。
助けてくれてありがとう!