我的数据来自多项选择问题,受访者可以选择多个选项(五个选项是他们持有的不同角色,例如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
的输出,但是对于选择对。
感谢您的帮助。
答案 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