计算具有x"conditions"的人在R中具有相同条件的概率?
Calculate the probability of people that have x "conditions" have the same conditions in R?
我正在尝试了解这方面的理论以及该术语的名称。我想在 R 中对此进行编码。
在数据集中有 n 个人,所有这些人最多可以有 z 个条件。
例如,我想知道有 3 种情况的人,他们最有可能有哪些情况。人 A 有条件 {1,2,3},人 B 有条件 {4,7,8},人 C 有条件 {2,5,8} 我想展示他们最有可能的条件集群是什么可以有。
我希望将此问题扩展到具有 n 个条件的人,因此具有 4 个条件、5 个等条件的人
为了获得概率,你可以分组具有相同概率的人conditions and 过滤条件相同的组数.
假设 n 个不同的条件,对于每个条件:1 表示一个人患有某种条件,否则为 0:
no_of_cond <- ncol(df) # number of conditions
为每个人评估 condition_set
和 condition_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")
虚拟数据:
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:以上都是基本聚合。对于任何统计测试,推论交叉验证将是一个更好的论坛。
您可能正在寻找常用项集。
在你的情况下,项目是条件,所以频繁的条件集。
我正在尝试了解这方面的理论以及该术语的名称。我想在 R 中对此进行编码。
在数据集中有 n 个人,所有这些人最多可以有 z 个条件。
例如,我想知道有 3 种情况的人,他们最有可能有哪些情况。人 A 有条件 {1,2,3},人 B 有条件 {4,7,8},人 C 有条件 {2,5,8} 我想展示他们最有可能的条件集群是什么可以有。
我希望将此问题扩展到具有 n 个条件的人,因此具有 4 个条件、5 个等条件的人
为了获得概率,你可以分组具有相同概率的人conditions and 过滤条件相同的组数.
假设 n 个不同的条件,对于每个条件:1 表示一个人患有某种条件,否则为 0:
no_of_cond <- ncol(df) # number of conditions
为每个人评估 condition_set
和 condition_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")
虚拟数据:
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:以上都是基本聚合。对于任何统计测试,推论交叉验证将是一个更好的论坛。
您可能正在寻找常用项集。
在你的情况下,项目是条件,所以频繁的条件集。