如何处理 "sporadic" 多项措施?

How to handle "sporadic" multiple measures?

我发现自己正在分析我真的不知道如何处理的数据。我接受任何建议,即使是关键字也会有所帮助。理想情况下,我正在寻找 运行 Jags 上的贝叶斯分层模型的提示(我正在研究 R 和 RJags)。

想象一下,例如10 个人报告了他们对 5 个项目的看法。 困难在于,对于某些人,我对一个(或多个)项目有两种或三种看法,在其他情况下,我可能有 NAs。所以数据的结构本质上是不平衡的。数据结构示例(id为标识符,Kn为被测项):

    [id] [K1] [K2] [K3] [K4] [K5] [K6]
[1]    1   ??  -1    2    3    -3    4
[2]    2   NA  -2    1    2    -4    5
[3]    3   0   NA    NA   3    -2    3
[4]    4   NA  -2    2    NA   NA    5
[5]    5   2   -1    3    4    -5    4
[6]    6   1   NA    1    1    -1    3

我想出的解决方案是为那些具有多次测量值的人复制行,并为 "fill in" 除了多次测量的项目之外的项目的行,这些项目的唯一可用测量值。举一个简单的例子,让个人 1 在项目 K1 上有两个可用的措施(例如 1 和 2):

    [id] [K1] [K2] [K3] [K4] [K5] [K6]
[1]    1   1   -1    2    3    -3    4
[2]    1   2   -1    2    3    -3    4
[3]    2  NA   -2    1    2    -4    5
[4]    3   0   NA    NA   3    -2    3
[5]    4  NA  -2    2    NA    NA    5
[6]    5   2   -1    3    4    -5    4
[7]    6   1   NA    1    1    -1    3

id是个体标识,现在id==1对K1有两种不同的度量。我不能取平均值,我真的需要一种方法来系统地包含这些附加信息。然后,我 运行 JAGS 中的一个分层模型使用嵌套索引为每个个体提供一个系数,而不是为每一行提供一个系数。我想知道另一种方法可能是使用 "selector",一个 0 的矩阵,值 1 表示被测量的项目。有可能在 Jags 中实现吗?我在任何地方都找不到类似数据结构的示例。这可能类似于一种非常不平衡的重复测量数据结构,但实际上测量是同时发生的。

只需制作一个带有 id、measure_id 和值的长 table,而不是带有 NA 的宽 table:

n.subjects <- 10
new.df <- data.frame(        id = rep(old.df$id, 6),
                     measure_id = rep(1:6, each=n.subjects)
                         values = c(old.df$K1, 
                                    old.df$K2, 
                                    old.df$K3, 
                                    old.df$K4, 
                                    old.df$K5,
                                    old.df$K6))

df <- df[!is.na(df$value)]  # remove measurements with NA's

然后您可以轻松修改 JAGS 代码以适应新格式。