[英]How does the probability argument work in the sample() function in R
我試圖了解 R 中的sample()
function 中的稱重工作原理(概率參數)。
# seed
set.seed(123)
# some numbers
x = c(1:100)
# some probabilties
p = seq(from = 0, to = 1, length.out = 100)
# sample size
n = 10000
# sample 10000 times from x with probability p
x1 <- sample(x, size = n, replace = TRUE, prob = p)
# plot
hist(x1)
plot(density(x1))
這大概就是概率論證的作用嗎?
# adding weights manually
weight = rep(x, n * p)
# now sample from the weighted vector
x2 <- sample(weight, n, replace = TRUE)
# plot
hist(x2)
plot(density(x2))
編輯
我想我在手動添加權重時犯了一個錯誤,即我使用了n*p
但我認為我應該使用x*p
。 然后結果確實有點變化:
# adding weights manually
weight = rep(x, x * p)
# now sample from the weighted vector
x2 <- sample(weight, n, replace = TRUE)
您得到的結果是預期的,因為通過將p
定義為均勻間隔的數字序列, x
的值越大,其被采樣的概率就越大。 就像你說的,這是一個加權抽樣程序。
看下面兩個案例。
在第一種情況下,抽樣元素2
的概率大 4 倍,結果大致顯示了這一點。
set.seed(2022)
# sample size
n <- 10000
v <- 1:2
x <- sample(v, n, replace = TRUE, prob = c(1, 4)/5)
proportions(table(x))
#> x
#> 1 2
#> 0.1976 0.8024
barplot(table(x))
在下面的例子中,抽取10
的概率是抽取向量1:100
中任何其他數字的概率的 600 多倍。
s <- 1:100
p <- rep(1, 100)
p[10] <- 400
p <- p/sum(p)
y <- sample(s, n, replace = TRUE, prob = p)
proportions(table(y))
hist(y)
由reprex package (v2.0.1) 創建於 2022-02-13
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.