首页 > 解决方案 > 计算在 R 中按该顺序获得黑桃、红心和梅花的概率

问题描述

我正在为此苦苦挣扎,有人可以帮助我吗?我目前的代码是

N <- probspace(urnsamples(pcartas, 3,replace=FALSE, ordered=TRUE))
CDE <- intersect(subset(N, (N$outcomes[[]][[2]][1] == "Spade")), 
      subset(N, (N$outcomes[[]][[2]][2] == "Heart")), subset(N, (N$outcomes[[]][[2]][3] == "Club"))) 
pcorazones_diamantes_espadas <- Prob(CDE)

但它不起作用。非常感谢

标签: rr-markdownprobability

解决方案


我认为您的pcartas对象应该是一个简单的向量,而不是数据框。否则,您将难以提取列表的元素。

清除 R 工作区,安装prob包并加载它。

rm(list=ls())
install.packages("prob")
library(prob)

创建样本空间。

pcartas <- cards()$suit

你会看到这是一个因子向量。我要将其转换为字符向量,因为该urnsamples函数将标签转换为它们的数字代码,这在您想要计算概率时变得很困难。如果您不执行下一步,您将看到问题。

pcartas <- unclass(as.character(pcartas))

从此样本空间中无需替换的样本并转换为概率空间(上面的第一行代码):

L <- urnsamples(pcartas, size=3, replace=FALSE, ordered=TRUE);
N <- probspace(L); 

计算任何事件的概率。例如,在第一张牌上获得“黑桃”的概率为:

Prob(N, X1=="Spade")  # Answer=0.25 or 13/52

在第一张牌上获得黑桃,在第二张牌上获得红心的概率为:

Prob(N, X1=="Spade" & X2=="Heart")  # Answer=0.0637 or 13/52 * 13/51

最后,在第一张牌上获得黑桃,在第二张牌上获得红心,在第三张上获得梅花的概率为:

Prob(N, X1=="Spade" & X2=="Heart" & X3=="Club") # Answer=0.016568 or 13/52 * 13/51 * 13/50

如果您没有将样本空间对象转换为字符向量,那么您将不得不使用数字代码来获取概率:

Prob(N, X1==1 & X2==2 & X3==3) 

推荐阅读