[問題] sample中一個每個都抽到

看板R_Language作者 (jet B)時間8年前 (2017/06/23 00:48), 編輯推噓6(6030)
留言36則, 7人參與, 最新討論串1/2 (看更多)
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 請把以下不需要的部份刪除 入門(寫過其他程式,只是對語法不熟悉) *[m [問題敘述]: 我想要從1:368個數字當中 根據每個數字出現的機率p=c(p1,p2,...,p368)抽取1次放回 希望1:368每個數字都能被抽中 然後重複抽10次這樣的動作 但是目前抽出來有些情況只會抽出367個數字而非368個 想請問各位大大如何解決 感謝 [程式範例]: replicate(10,saple(1:368,nrow(data),replace=TRUE,prob=p)) [環境敘述]: 請提供 sessionInfo() 的輸出結果, 裡面含有所有你使用的作業系統、R 的版本和套件版本資訊, 讓版友更容易找出錯誤 [關鍵字]: 選擇性,也許未來有用 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.49.108 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1498150111.A.1FD.html

06/23 01:20, , 1F
不懂「希望1:368每個數字都能被抽中」是怎麼回事?
06/23 01:20, 1F

06/23 01:21, , 2F
不是已經給定機率抽出放回,又怎麼保證都能被抽中?
06/23 01:21, 2F

06/23 01:58, , 3F
這問題敘述,中文能力要加油
06/23 01:58, 3F

06/23 09:16, , 4F
就是給定抽後放回 但想每個都抽到
06/23 09:16, 4F

06/23 10:49, , 5F
你要放回,又要全部都抽到,不可能,你不要放回才能全
06/23 10:49, 5F

06/23 10:49, , 6F
部抽到
06/23 10:49, 6F

06/23 10:50, , 7F
是說每次抽個1000數字(比如)裡面包含1-368,重複10次??
06/23 10:50, 7F

06/23 10:52, , 8F
例如1:2你抽兩次,抽後放回,那有可能出現兩次都抽到 1
06/23 10:52, 8F

06/23 10:52, , 9F
or 2,數字多那就更容易重複抽到相同的
06/23 10:52, 9F

06/23 10:58, , 10F
如果你其中一個機率p,小於nrow(data),那抽不到是正常
06/23 10:58, 10F

06/23 10:58, , 11F
06/23 10:58, 11F

06/23 10:59, , 12F
調整seed有可能全部都抽到,不過這樣不太好就是了
06/23 10:59, 12F

06/23 11:44, , 13F
sample.base.v = 1:368
06/23 11:44, 13F

06/23 11:44, , 14F
s_len.v = length(sample.base.v)
06/23 11:44, 14F

06/23 11:44, , 15F
sample.f = function()
06/23 11:44, 15F

06/23 11:44, , 16F
sample(
06/23 11:44, 16F

06/23 11:44, , 17F
c(
06/23 11:44, 17F

06/23 11:44, , 18F
sample(sample.base.v),
06/23 11:44, 18F

06/23 11:45, , 19F
sample(sample.base.v,
06/23 11:45, 19F

06/23 11:45, , 20F
(nrow(data) - s_len.v),
06/23 11:45, 20F

06/23 11:45, , 21F
replace=TRUE,
06/23 11:45, 21F

06/23 11:45, , 22F
prob=rep(1/s_len.v, s_len.v))
06/23 11:45, 22F

06/23 11:46, , 23F
)
06/23 11:46, 23F

06/23 11:46, , 24F
)
06/23 11:46, 24F

06/23 11:46, , 25F
sample.result.m = replicate(10, sample.f())
06/23 11:46, 25F

06/23 11:48, , 26F
既然一定要抽到,就不是純隨機的問題,那就先放一個
06/23 11:48, 26F

06/23 11:48, , 27F
1:368的base,接著再隨機抽湊滿nrow(data)個數,最後
06/23 11:48, 27F

06/23 11:49, , 28F
再打亂順序。
06/23 11:49, 28F

06/23 13:09, , 29F
樓上這樣的base,可是他有機率問題耶,他是有給定機率
06/23 13:09, 29F

06/23 13:09, , 30F
06/23 13:09, 30F

06/23 15:01, , 31F
發文者說明,抽樣條件為 抽出每組樣本 內 base中所有
06/23 15:01, 31F

06/23 15:01, , 32F
元素 均 至少大於1個。
06/23 15:01, 32F

06/23 15:01, , 33F
所以當設定base中任意元素之出現機率<1時,抽樣條件就
06/23 15:01, 33F

06/23 15:01, , 34F
不可能滿足。
06/23 15:01, 34F

06/23 15:39, , 35F
好的 感謝各位大大 我用其他方式繞過去處理看看
06/23 15:39, 35F

06/23 22:49, , 36F
原po國文要加強...
06/23 22:49, 36F
文章代碼(AID): #1PI_JV7z (R_Language)
文章代碼(AID): #1PI_JV7z (R_Language)