给定一对值作为条件的二进制矩阵中的条件概率

时间:2018-05-12 20:06:08

标签: r conditional probability

我的数据来自多项选择问题,受访者可以选择多个选项(五个选项是他们持有的不同角色,例如Role1是IT委员会的参与者,或者Role2是预算委员会的参与者等)。我将角色转换为二进制变量,其中“1”表示受访者选择了该角色,“0”表示他们没有选择角色。

以下是示例数据:

structure(list(Role1 = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 0, 1), Role2 = c(0, 1, 1, 1, 1, 0, 1, 1, 1, 
1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1), Role3 = c(1, 0, 0, 0, 0, 1, 
0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1), Role4 = c(0, 1, 0, 
1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0), Role5 = c(0, 
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1)), row.names = c(NA, 
-20L), class = c("tbl_df", "tbl", "data.frame"))

使用bindata软件包,其condprob函数可计算受访者在担任其他角色时担任任何角色的概率。

library(bindata)
# Returns a matrix containing the conditional probabilities, and converts the matrix to a data frame
condlTable.df <- as.data.frame(condprob(SOdata))

我的编程问题:R如何接受任意随机对角色并计算任何其他角色的条件概率?例如,如果受访者选择了Role1和Role2,一对角色,他们还选择了Role3,Role4或Role5的概率是多少?理想的输出就像condprob的输出,但是对于选择对。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

prop.table函数能为您提供所需吗?

例如:

prop.table(condlTable.df)

这会按行给出比例: Role1 Role2 Role3 Role4 Role5 Role1 0.07097829 0.05977119 0.02241420 0.01867850 0.007471399 Role2 0.07097829 0.07097829 0.01774457 0.01330843 0.008872286 Role3 0.06083853 0.04055902 0.07097829 0.02027951 0.020279510 Role4 0.07097829 0.04258697 0.02839131 0.07097829 0.000000000 Role5 0.04731886 0.04731886 0.04731886 0.00000000 0.070978286

根据我的评论/问题添加CondlTable.df。 Role1 Role2 Role3 Role4 Role5 Role1 1.0000000 0.8421053 0.3157895 0.2631579 0.1052632 Role2 1.0000000 1.0000000 0.2500000 0.1875000 0.1250000 Role3 0.8571429 0.5714286 1.0000000 0.2857143 0.2857143 Role4 1.0000000 0.6000000 0.4000000 1.0000000 0.0000000 Role5 0.6666667 0.6666667 0.6666667 0.0000000 1.0000000

以下是您的原始数据:

   Role1 Role2 Role3 Role4 Role5
1      1     0     1     0     0
2      1     1     0     1     0
3      1     1     0     0     0
4      1     1     0     1     0
5      1     1     0     0     0
6      1     0     1     1     0
7      1     1     0     0     0
8      1     1     0     0     1
9      1     1     0     0     0
10     1     1     1     0     0
11     1     1     0     0     0
12     1     0     0     1     0
13     1     1     1     0     0
14     1     1     0     0     0
15     1     1     0     0     0
16     1     1     0     0     0
17     1     1     1     1     0
18     1     1     0     0     0
19     0     0     1     0     1
20     1     1     1     0     1