gpt4 book ai didi

r - 使用 prob 包计算 R 中的条件概率

转载 作者:行者123 更新时间:2023-12-04 10:54:43 26 4
gpt4 key购买 nike

我的数据如下所示:

d

#> # A tibble: 220 x 2
#> smoker pain
#> <chr> <chr>
#> 1 Smoker Pain
#> 2 Smoker Pain
#> 3 Smoker Pain
#> 4 Smoker Pain
#> 5 Smoker Pain
#> 6 Smoker Pain
#> 7 Smoker Pain
#> 8 Smoker Pain
#> 9 Smoker Pain
#> 10 Smoker Pain
#> # … with 210 more rows

是两个变量的组合:吸烟者和疼痛。

d %>% 
count(smoker, pain, sort = T)
#> # A tibble: 4 x 3
#> smoker pain n
#> <chr> <chr> <int>
#> 1 No smoker No pain 107
#> 2 Smoker Pain 70
#> 3 Smoker No pain 35
#> 4 No smoker Pain 8

我想计算一个人在吸烟的情况下感到疼痛的概率 P(pain|smoker):

library(tidyverse)
library(prob)

d <- probspace(d)
Prob(d, event = smoker == "Smoker", given = pain == "Pain")
#> [1] 0.01282051

据我所知,这个值一定是吸烟者感到疼痛的百分比:

70/105

#> [1] 0.667

这里有什么问题?

这是数据的代码:

smoker <- c(rep("Smoker", 105), rep("No smoker", 115))
pain <- c(rep("Pain", 70), rep("No pain", 35), rep("Pain", 8), rep("No pain", 107))

d <- tibble(smoker, pain)

最佳答案

我认为您应该再添加一行 d <- cbind(id = seq(nrow(d)),d)之后 d <- tibble(smoker, pain) , IE。,

d <- tibble(smoker, pain)
d <- cbind(id = seq(nrow(d)),d)

然后你会得到想要的结果
> Prob(d, event = pain == "Pain", given = smoker == "Smoker")
[1] 0.6666667

注意 : 这样做的原因是, Prob()计算 intersect()在事件和给定条件之间。当您将数据框用于概率空间时,交集中的重复项将被删除。为避免这种情况,您需要手动添加额外信息以区分数据框中的行 d , 这样所有的重复项都可以保存到计算结束。

关于r - 使用 prob 包计算 R 中的条件概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59286121/

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