gpt4 book ai didi

r - 列出样本空间?

转载 作者:行者123 更新时间:2023-12-05 02:23:01 25 4
gpt4 key购买 nike

我遇到了这个无法解决的练习:一个瓮包含三个红球、两个绿球和一个白球。三个球是按顺序抽出的,没有从瓮中放回。他们的颜色被记录下来。使用 R 列出样本空间。

我试过:

combn(c(rep("R",3), rep("G",2),"W"),3)

但是这个函数不考虑元素的顺序,而是读取三个R,如R1、R2和R3。结果在输出中有重复的行。

我需要函数来生成这个序列:

Ω = {"GGR" "GGW" "GRG" "GRR" "GRW" "GWG" "GWR" "RGG" "RGR" "RGW" "RRG" "RRR" "RRW" "RWG" "RWR" "WGG" "WGR" "WRG" "WRR"}

最佳答案

问题是,如果顺序很重要,那么您需要排列而不是组合。排列通常会迅速爆发并变得难以控制。我敢肯定这非常低效,但它似乎有效。

balls<-c(rep("R",3), rep("G",2),"W")

permn <- function(x, n) {
if (n<1) return(vector(class(x)))
do.call(rbind, lapply(1:length(x), function(i) {
cbind(x[i], permn(x[-i], n-1))
})
)
}
x <- permn(balls, 3)
unique(sort(apply(x, 1, paste, collapse="")))

它返回

 [1] "GGR" "GGW" "GRG" "GRR" "GRW" "GWG" "GWR" "RGG" "RGR" "RGW" "RRG"
[12] "RRR" "RRW" "RWG" "RWR" "WGG" "WGR" "WRG" "WRR"

根据需要。

permn 函数以递归方式工作。您传入一个值列表 (x) 以及您要从该列表中选择的项目数 (n)。如果您至少要选择一个值,那么我们将设置一个循环,我们可以通过该循环选择每个元素。然后,在我们选择了一个值之后,我们需要从剩余的项目中再选择 n-1 个。所以我们再次调用该函数,这次删除我们刚刚选择的值并减少我们需要选择的项目数。

到目前为止,我们实际上一直在忽略集合中的值(我们假设它们都是唯一的)。但由于在这种情况下,某种颜色的所有球都无法区分,我们需要折叠我们的结果。由于 permn 实际上返回一个矩阵,我们将把像 c("G","G","R") 这样的向量的行折叠到字符串 “GGR” 然后只取唯一值。

当然,并非所有结果的可能性都相同。如果我们想看看它们发生的频率,您可以这样做

sort(prop.table(table(apply(x, 1, paste, collapse=""))))

它还会计算样本空间中每个元素的概率

       GGW        GWG        WGG        GGR        GRG        GRW 
0.01666667 0.01666667 0.01666667 0.05000000 0.05000000 0.05000000
GWR RGG RGW RRR RRW RWG
0.05000000 0.05000000 0.05000000 0.05000000 0.05000000 0.05000000
RWR WGR WRG WRR GRR RGR
0.05000000 0.05000000 0.05000000 0.05000000 0.10000000 0.10000000
RRG
0.10000000

关于r - 列出样本空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25692325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com