【发布时间】:2018-09-27 20:31:04
【问题描述】:
假设我有 5 种疾病(a、b、c、d、e)。询问样本中的每个人是否患有每种疾病,然后分配权重(W)。我需要确定每种疾病组合在人群中的比例。这将涉及人们对任一疾病组合回答 (1,1) 的组合。
df <- data.frame(
a = c(1, 1, 0, 0),
b = c(1, 1, 0, NA),
c = c(0, 1, NA, 1),
d = c(1, 1, 0, 1 ),
e = c(1, 1, 1, 0 ),
W = c(1.5,3.5,2.5,2.3))
df
a b c d e W
1 1 1 0 1 1 1.5
2 1 1 1 1 1 3.5
3 0 0 NA 0 1 2.5
4 0 NA 1 1 0 2.3
我已经能够弄清楚这个得到一个矩阵:
DisDyads <- apply (df, 2, function (x) colSums (df == 1 & x == df, na.rm = TRUE))
a b c d e W
a 2 2 1 2 2 0
b 2 2 1 2 2 0
c 1 1 2 2 1 0
d 2 2 2 3 2 0
e 2 2 1 2 3 0
W 0 0 0 0 0 0
我如何将这些变成比例?
这是矩阵输出的第一行和第二行在适当的条件和比例下的外观示例:
a b c d e W
a 0.5 0.5 0.25 0.5 0.5 0
b 0.5 0.5 0.25 0.5 0.5 0
接下来,我还需要在确定总体水平上每种组合的比例时考虑权重。
有人可以帮我解决这个问题吗?如果我试图寻找三种疾病组合的比例怎么办?例子。具有a,b,c和a,b,d等的人的比例..
我非常感谢任何帮助。提前致谢!
【问题讨论】:
-
计算这些比例(和权重)的算法是什么?
-
这只是简单地将每个人乘以他们的体重,然后除以 (nrow(df)*sum(df$W) @RomanLuštrik
-
您可能需要以不同的方式进行分析,和/或以不同的方式查看您的数据。你的数据不是独立的,所以你不能这样对待它们。您正在分别计算每种疾病的发生率,这是您不应该的,您没有仅发生一种疾病。想出你的组合(为了简短起见,我只显示 a、b 和 c):
a, b, c, ab, ac, bc, abc。然后您对每位患者的回复:1, 2, 3, 4。您不能在组合矩阵中描述这一点,它显示成对组合。 -
在这种情况下,我没有单独计算每种疾病的发生率。 a 和 a 一起出现在矩阵中只是意味着这是患有该疾病的比例,即使您可能患有另一种疾病。一个一个地进行组合是非常低效的。这只是一个例子……我的实际数据集有更多的疾病。 @Anonymouscoward
标签: r matrix combinations weighted