當第一列中的值超過 1000 時,我試圖從串列中每一行的伯努利分布中繪制 1 或 0。
我相信我當前的代碼正在為串列中的每個資料幀繪制分布,而不是為每一行繪制分布。有沒有辦法可以確認這一點?對于距離大于 1000 的每一行,我想從伯努利分布 1 或 0 中得出。每一行都有自己的機會為 0 或 1
mylistnew<-lapply(mylist, transform, outcome = ifelse(distance > 1000,
rbinom(length(distance),1,0.8), NA))
我看不到如何更改rbinom(length(distance)為單行繪制,而不是資料幀/if else 陳述句的長度。
資料子集:
list(structure(c(775.056695476403, 1414.15314106691, 2509.95923787194,
1666.71143236238, 585.640129954299, 1169.17884175758, 152.505503148836,
619.226302243787, 1263.66546590149, 1682.8712425131, -2.86809018002943,
-2.87220511792857, -2.91236875367306, -2.91236875367306, -2.91137226768259,
-2.91236875367306, -2.86275243787543, -2.8606012634912, -2.86264610888995,
-2.86004943151114, 58.2523804031471, 58.2594633464797, 58.1998311185373,
58.1998311185373, 58.1999333186371, 58.1998311185373, 58.243480631029,
58.2359999509482, 58.2407966146843, 58.2335609045358, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1), .Dim = c(10L, 4L), .Dimnames = list(NULL,
c("distance", "lon", "lat", "ID"))), structure(c(775.056695476403,
1414.15314106691, 2509.95923787194, 1666.71143236238, 585.640129954299,
1169.17884175758, 152.505503148836, 619.226302243787, 1263.66546590149,
1682.8712425131, -2.86809018002943, -2.87220511792857, -2.91236875367306,
-2.91236875367306, -2.91137226768259, -2.91236875367306, -2.86275243787543,
-2.8606012634912, -2.86264610888995, -2.86004943151114, 58.2523804031471,
58.2594633464797, 58.1998311185373, 58.1998311185373, 58.1999333186371,
58.1998311185373, 58.243480631029, 58.2359999509482, 58.2407966146843,
58.2335609045358, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), .Dim = c(10L,
4L), .Dimnames = list(NULL, c("distance", "lon", "lat", "ID"))))
uj5u.com熱心網友回復:
那么你rbinom產生i.i.d.隨機變數,所以你的函式是正確的。一種驗證方法是以下代碼段:
set.seed(12123)
n <- 10000
rowSums( # [3]
(mat <- replicate(n, # [2]
rbinom(10, 1, 0.8) # [1]
))
) / n
# [1] 0.8004 0.7979 0.8025 0.8033 0.7974 0.7988 0.7984 0.7993 0.7990 0.8013
cor(t(mat))
# [,1] [,2] [,3] [,4] [,5] [...]
# [1,] 1.0000000000 0.0028711704 0.0036386366 -0.0003859466 0.0097167804 [...]
# [...]
解釋
- 繪制 10 個伯努利隨機變數
- 重復 10000 次(然后將資料組織為一個
10 x 10000矩陣,在列中重復,在行中包含 10 個自變數) - 取平均值或每一行。當我們從伯努利中提取時,
p = .8我們會期望.8結果顯示的平均值。 - 如果我們查看 10 個觀測值之間的相關性,我們會發現它們都非常接近
0,因此它們是獨立的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517965.html
