簡體   English   中英

R 中的 sample() function 中的概率參數是如何工作的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM