【问题标题】:Conditional Prob in RR中的条件概率
【发布时间】:2016-08-11 00:52:18
【问题描述】:

我有一个包含超过 45 类药物的大型数据集。对于每个 id,如何找出给定 AC 的类别 AB 的条件概率。 1、2、3 等是唯一的 id。

我的数据集看起来像

ID1.AB AD AC FG AB DC GM AC
ID2.AB AC DG GM
ID3.AB DG GM AC

我们可以在 R 中执行此操作吗?我尝试在 R 中使用 prob 函数,但它给了我一个错误。

PS:类别不一定是连续的。我认为每个类别对于每个 id 都是唯一的,而不管它出现的次数。

【问题讨论】:

  • 什么是“正确答案”?这些是列表对象吗?所有带有 AB 的 ID 值也有 AC 值。此外,发布dput(dat) 的结果,其中 dat 是正在考虑的数据帧或矩阵。仅在行开头的句点不是合法的 R 分隔符。而且默认包中没有prob函数。
  • AB、AD、AC等,都是药品类别。正在将 ID 转介给患者。例如,Id1 是服用 AB、AD、AC、FG、AB、DC、GM、AC 的患者。如果患者 1 已经服用 AC,我试图找出他服用 AC 的概率是多少。我希望它清除。
  • 我在R.library(prob)中安装了prob包有这个功能

标签: r dataset conditional unique probability


【解决方案1】:

我可能对您要查找的内容感到困惑,但简单的条件概率似乎如下:

# Create Dataset
mystring = c("AD", "AC", "BD", "DC")

k = NULL
for(i in 1:45){
  samp = sample(mystring, 3, replace = T)
  k = c(k,paste(samp, collapse = " ") )
}

st = data.frame(1:45, k, stringsAsFactors = F)

library(stringr)

# Number of strings that contain both groups or 
# occurances of the intersection
alpha = str_detect(st[,2],"AC") & str_detect(st[,2],"AD") 

# Occurances of AC
beta = str_detect(st[,2], "AC")

# P(A \ B) / P(B)
(sum(alpha)/45) / 
  (sum(beta)/45)

另外,我根据您提供的数据样本假设存储为字符串的类别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多