我想在R中創建一個矩陣,元素[-1,0,1]的概率分別爲[1/6,2/3,1/6]。運行時可能性會發生變化。對於靜態概率,我得到了輸出,但問題是概率的動態變化。例如,如果我用[sqrt(3),0,-sqrt(3)]爲上述概率創建矩陣,則所需輸出爲。如何在R中創建一個概率分佈的矩陣
注意:如上所述,概率不應該是靜態的。在運行時可能會有所不同。
請幫忙解決這個問題。
我想在R中創建一個矩陣,元素[-1,0,1]的概率分別爲[1/6,2/3,1/6]。運行時可能性會發生變化。對於靜態概率,我得到了輸出,但問題是概率的動態變化。例如,如果我用[sqrt(3),0,-sqrt(3)]爲上述概率創建矩陣,則所需輸出爲。如何在R中創建一個概率分佈的矩陣
注意:如上所述,概率不應該是靜態的。在運行時可能會有所不同。
請幫忙解決這個問題。
假如你想有一個2×3矩陣:
matrix(sample(c(-1,0,1), size=6, replace=TRUE, prob=c(1/6,2/3,1/6)), nrow=2)
所以,如果你想要的值採樣,在prob
定義的概率。這只是一個向量,但是您可以使用matrix
之後將其製作爲所需形狀的矩陣。用一個變量而不是值來替換概率,使其不變爲靜態。
如果數字應該按一定的方案,而不是隨機抽取根據概率分佈,複製向量元素和洗牌他們:
matrix(sample(rep(c(-1,0,1), times=c(1,4,1))), nrow=2)
你可以試試這個生成一個m×n矩陣:
sample.dynamic.matrix <- function(pop.symbols, probs, m, n) {
samples <- sample(pop.symbols, m*n, prob = probs, replace=TRUE)
return(matrix(samples, nrow=m))
}
set.seed(123)
sample.dynamic.matrix(-1:1, c(1/6,2/3,1/6), 2, 3)
# [,1] [,2] [,3]
#[1,] 0 0 -1
#[2,] 1 -1 0
謝謝@sandipan的詳細答案。 – Siddhu
最受歡迎@Siddhu –
謝謝@mpjdem,但輸出給出了3個零,2(-1)和1(+1)。根據條件,我需要4個零 – Siddhu
這是一個概率,所以它不是確定性的。對於你想要的,你需要帶'times'參數的'rep'函數,然後用'sample'來混洗它。我會很快寫出來的。 – mpjdem
是的,我明白,謝謝 – Siddhu