计算具有x“条件”的人在R中具有相同条件的概率?

时间:2018-06-14 15:51:54

标签: r statistics cluster-analysis analysis

我试图理解这个理论以及这个术语的名称。我想在R中编写代码。

在数据集中有 n 人数,所有人都可以拥有 z 条件。

因此,例如,我想知道有三个条件的人,他们最有可能的条件组。人A具有条件{1,2,3},人B具有条件{4,7,8},人C具有条件{2,5,8}并且我想显示他们最可能的条件集群是什么可能有。

我希望将此问题扩展到 n 条件数的人,所以有4个条件的人,5个等。

2 个答案:

答案 0 :(得分:0)

要获得 概率 ,您可以 群组具有相同条件的人 过滤器具有相同条件计数的群组

假设n条件和条件不同:1表示一个人患有病症,否则为0:

no_of_cond <- ncol(df)                                       # number of conditions

为每个人评估condition_setcondition_count

df$condition_set <- apply(df, 1, function(x) {if (sum(x)>0) { paste(names(which(x == 1)),collapse = ", ")
                                                            } else {return(NA)}
                                             })
df$condition_count <- rowSums(df[,1:no_of_cond])

对具有相同条件的人进行分组,并使用相同的condition_count过滤组:

library(dplyr)

case_count_df <- function(n) { df_temp <- df %>% group_by_all() %>% 
                                          summarise(ppl_count= n()) %>% 
                                          filter(condition_count == n)  
                                          return (df_temp) }

有2个条件的人的摘要,其他人可以类似地获得:

df_2_cond <- case_count_df(2) %>% ungroup()
df_2_cond$prob <- df_2_cond$ppl_count/sum(df_2_cond$ppl_count)
plot(as.factor(df_2_cond$condition_set), df_2_cond$prob, xlab = 'condition_set', 
     ylab = 'probability', main = "People with 2 conditions")

people with 2 conditions

虚拟数据:

df <- data.frame(expand.grid( a = rep(c(0,1),2), b = rep(0,3), 
                              c = c(0,1,0), d = c(0,0,1) ))

PS:以上都是基本聚合。对于任何统计测试,交叉验证的推论将是一个更好的论坛。

答案 1 :(得分:0)

您可能正在寻找频繁项目集

在您的情况下,项目是条件,因此频繁的条件。