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

作者: jas9441314 (jet B)   2017-06-23 00:48:28
[問題類型]:
程式諮詢(我想用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 的版本和套件版本資訊,
讓版友更容易找出錯誤
[關鍵字]:
選擇性,也許未來有用
作者: andrew43 (討厭有好心推文後刪文者)   2017-06-23 01:20:00
不懂「希望1:368每個數字都能被抽中」是怎麼回事?不是已經給定機率抽出放回,又怎麼保證都能被抽中?
作者: inin007 (inin)   2017-06-23 01:58:00
這問題敘述,中文能力要加油
作者: jas9441314 (jet B)   2017-06-23 09:16:00
就是給定抽後放回 但想每個都抽到
作者: f496328mm (為什麼會流淚)   2017-06-23 10:49:00
你要放回,又要全部都抽到,不可能,你不要放回才能全部抽到
作者: cywhale (cywhale)   2017-06-23 10:50:00
是說每次抽個1000數字(比如)裡面包含1-368,重複10次??
作者: f496328mm (為什麼會流淚)   2017-06-23 10:52:00
例如1:2你抽兩次,抽後放回,那有可能出現兩次都抽到 1or 2,數字多那就更容易重複抽到相同的如果你其中一個機率p,小於nrow(data),那抽不到是正常的調整seed有可能全部都抽到,不過這樣不太好就是了
作者: a78998042a (Benjimine)   2017-06-23 11:44:00
sample.base.v = 1:368s_len.v = length(sample.base.v)sample.f = function()sample(c(sample(sample.base.v),sample(sample.base.v,(nrow(data) - s_len.v),replace=TRUE,prob=rep(1/s_len.v, s_len.v))))sample.result.m = replicate(10, sample.f())既然一定要抽到,就不是純隨機的問題,那就先放一個1:368的base,接著再隨機抽湊滿nrow(data)個數,最後再打亂順序。
作者: f496328mm (為什麼會流淚)   2017-06-23 13:09:00
樓上這樣的base,可是他有機率問題耶,他是有給定機率的
作者: a78998042a (Benjimine)   2017-06-23 15:01:00
發文者說明,抽樣條件為 抽出每組樣本 內 base中所有元素 均 至少大於1個。所以當設定base中任意元素之出現機率<1時,抽樣條件就不可能滿足。
作者: jas9441314 (jet B)   2017-06-23 15:39:00
好的 感謝各位大大 我用其他方式繞過去處理看看
作者: lin15 ( )   2017-06-23 22:49:00
原po國文要加強...

Links booklink

Contact Us: admin [ a t ] ucptt.com