如何处理 "sporadic" 多项措施?
How to handle "sporadic" multiple measures?
我发现自己正在分析我真的不知道如何处理的数据。我接受任何建议,即使是关键字也会有所帮助。理想情况下,我正在寻找 运行 Jags 上的贝叶斯分层模型的提示(我正在研究 R 和 RJags)。
想象一下,例如10 个人报告了他们对 5 个项目的看法。
困难在于,对于某些人,我对一个(或多个)项目有两种或三种看法,在其他情况下,我可能有 NA
s。所以数据的结构本质上是不平衡的。数据结构示例(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 代码以适应新格式。
我发现自己正在分析我真的不知道如何处理的数据。我接受任何建议,即使是关键字也会有所帮助。理想情况下,我正在寻找 运行 Jags 上的贝叶斯分层模型的提示(我正在研究 R 和 RJags)。
想象一下,例如10 个人报告了他们对 5 个项目的看法。
困难在于,对于某些人,我对一个(或多个)项目有两种或三种看法,在其他情况下,我可能有 NA
s。所以数据的结构本质上是不平衡的。数据结构示例(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 代码以适应新格式。