R语言掷骰子条件概率代码中e_outcomes报错问题求助
问题排查与修正
你遇到的问题核心是对prob包的语法使用有误,prob包没有直接通过e_outcomes(c_outcomes,a_outcomes)这种方式获取条件事件结果的逻辑,以下是具体的修正方案:
正确实现步骤
- 生成三个骰子的完整样本空间
library(prob) # 创建三个骰子的所有可能结果,带概率空间 three_dice <- rolldie(3, makespace = TRUE)
- 定义"点数和大于3且小于8"的事件A
# 计算每个结果的点数和 three_dice$sum <- rowSums(three_dice[,1:3]) # 筛选出符合条件的样本 event_A <- subset(three_dice, sum > 3 & sum < 8)
- 定义"恰好两个点数相同"的事件判断逻辑
# 写个小函数判断单条结果是否恰好两个点数相同(排除三个全同) exactly_two_match <- function(dice_vals) { length(unique(dice_vals)) == 2 }
- 获取条件事件的结果(已知A发生时,恰好两个点数相同的所有情况)
# 直接在事件A的样本空间里筛选符合"恰好两个相同"的结果 e_outcomes <- subset(event_A, apply(event_A[,1:3], 1, exactly_two_match))
- 验证条件概率(和你之前得到的e_prob对齐)
# 条件概率 = 交集事件概率 / 事件A的概率 e_prob <- prob(e_outcomes) / prob(event_A)
错误原因
- 你原代码里的
e_outcomes(c_outcomes,a_outcomes)是完全不符合prob包语法的写法,prob包没有名为e_outcomes的内置函数,你应该通过子集筛选的方式,从事件A的样本空间里提取满足第二个条件的样本点。 - 单独写
e_outcomes只会返回一个未定义的对象,自然无法得到结果。
内容的提问来源于stack exchange,提问作者user21430163
相关产品推荐
相关产品推荐

