0
對於一個隨機生成的100個伯努利試驗:怎樣計算二或三比特計數
11010101....
- 如何使用「R」來計算二位計數,即在人看到的次數每00序列,01,10,11
- 如何使用「R」來計算三比特數,即時間序列中的一個看到每個000,001,010的數量,011,100,101,110,111
對於一個隨機生成的100個伯努利試驗:怎樣計算二或三比特計數
11010101....
請注意,如果你粘貼在一起的第99跑DOM與去年99平,你將擁有所有的二位平:
set.seed(144)
trials <- rbinom(100, 1, c(.5, .5))
table(paste0(head(trials, -1), tail(trials, -1)))
# 00 01 10 11
# 21 28 28 22
爲了得到三比特數,可以通過粘貼在一起的第一個98,中部98,最後98擴展此觀察:
table(paste0(head(trials, -2), head(tail(trials, -1), -1), tail(trials, -2)))
# 000 001 010 011 100 101 110 111
# 9 11 14 14 12 16 14 8
Riffing關@ MrFlick的評論下面關於使用embed
的可能性,你可以生成一個量化的方式,連續n位的計數(又名調用paste0
一次,而不是每行一次)有:
nbit <- function(dat, n) {
e <- embed(dat, n)
table(do.call(paste0, rev(split(e, col(e)))))
}
nbit(trials, 2)
# 00 01 10 11
# 21 28 28 22
nbit(trials, 3)
# 000 001 010 011 100 101 110 111
# 9 11 14 14 12 16 14 8
它的工作令人驚歎!但爲什麼?你能再解釋一下嗎? – andrew
'embed'函數可以幫助創建對/三元組。唯一的解決方法是它將它們置於相反的順序:'apply(embed(trials,2),1,paste0,collapse =「」)' – MrFlick