【问题标题】:How to handle "sporadic" multiple measures?如何处理“零星”多项措施?
【发布时间】:2016-01-27 21:24:51
【问题描述】:

我发现自己正在分析我真的不知道如何处理的数据。我接受任何建议,即使是关键字也会有所帮助。理想情况下,我正在寻找在 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

我提出的解决方案是为那些具有多次测量值的个体复制行,并为那些多次测量的项目以外的项目“填充”该行,并使用唯一可用的测量值。举个简单的例子,让个体 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 中运行分层模型,为每个人提供一个系数,而不是为每一行提供一个系数。我想知道替代方法可能是使用“选择器”,0s 的矩阵和值1 指示正在测量的项目。是否可以在 Jags 中实现这一点?我在任何地方都找不到类似数据结构的示例。这可能类似于一种非常不平衡的重复测量数据结构,但实际上测量是同时的。

【问题讨论】:

  • 和有什么区别??和NA?你说 5 个项目,但有 6 个变量。你的意思是你有 6 件物品?
  • 您与使用 JAGS 的关系如何?调整这些数据以在重复测量方差分析(取决于缺失)中工作可能是微不足道的。或者,尽管可能会违反假设(何时不违反),但您很可能能够获得 lme4 混合效应模型来进行某种分析。无论如何,几乎可以肯定的是,最好不要为了让您的数据更快乐而进行观察。
  • @pavel : "??"代表“我应该使用值 1 还是 2”,我可以更改它只是为了指出问题
  • @rpierce:JAGS 允许我合并先前的信息。我同意你关于重复的观点。

标签: r data-structures statistics


【解决方案1】:

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

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 代码以适应新格式。

【讨论】:

  • 我要补充一点,parvel 之前的评论可能会起作用,即如果您不小心存储了?而不是NA。你可能还有问题。
  • 不,?? 仅具有说明性字符,不在代码上。
猜你喜欢
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 2015-02-16
  • 2015-01-30
  • 2016-05-02
  • 1970-01-01
相关资源
最近更新 更多