使用无法区分的主题作为预测变量/随机效应

机器算法验证 混合模式 协方差 二元数据
2022-03-29 18:43:43

我想对由一对无法区分的主题共同产生结果的数据进行建模。作为一个例子[*],考虑两个参与者对话的长度。这些数据具有以下性质

  • 结果只能在配对级别上衡量:例如,我们只知道对话的总长度Yi,j,而不是多少ij在他们的互动过程中单独发言。
  • 结果是无向/对称的Yi,jYj,i
  • 对于所有可能的配对,我都有数据——以及等量的数据{i,j}除了什么时候i=j,结果无法衡量。
  • 这些对是集合:它们无法区分/无序。这与许多情况有些不同,在这些情况下,对中的每个成员都有一个可以单独建模的固定角色(例如,买方/卖方)。
  • 我主要对也在对上定义的预测变量感兴趣(例如ij来自同一个组织?他们站得有多远?),但理想情况下希望包括一些主题级别和固定效果。

在拟合混合效应模型时,将Yi,j之所以独立,是因为可能会产生针对特定主题的影响:如果 Bob 叔叔倾向于闲聊,那么包括他在内的对话可能会比平均时间长,而不管其他参与者如何。如果主题是可区分的,我会很想通过为每个主题添加(随机)效果来解释这一点:y_ij ~ X + (1 | i) + (1 | j). 但是,那ij这里是无法区分的。提供lmer()一对主题 id 向量似乎并不能解释观察之间的依赖性<yi,j, i,j><yj,k,j,k>由于可能的贡献j二者皆是。

当受试者无法区分时,我如何解释特定于受试者的影响?

我曾考虑添加大量虚拟变量(对包含 1,对包含 2,...)。但是,这会添加大约 100 个我实际上并不关心的固定效果,这似乎不太好。

我还快速浏览了二元文学,但似乎没有什么合适的。演员-合作伙伴模型似乎需要逐个主题的响应,社会关系模型也是如此,它似乎总是有直接的评级(i喜欢j明显不同于j喜欢i)。

解决这个问题的更好方法是改变模型的相关结构,以便观察对的协方差i,j是一些组合σiσj? 这有点超出了我对混合模型的经验,所以我想知道这在理论上是否合理以及它是否/如何实际上可行。


[*] 实际数据不是对话长度——甚至不是来自人类——所以不要太担心特定于社会语言学的混淆。不过,这似乎是一个非常相似的情况,并且对话示例更加清晰。

2个回答

也许我不清楚,但是您设置的以下模拟似乎适用于您建议的随机效果结构,即

set.seed(2019)
N <- 50 # number of subjects

# id indicators for pairs
ids <- t(combn(N, 2))
id_i <- ids[, 1]
id_j <- ids[, 2]

# random effects
b_i <- rnorm(N, sd = 2)
b_j <- rnorm(N, sd = 4)

# simulate normal outcome data from the mixed model 
# that has two random effects for i and j
y <- 10 + b_i[id_i] + b_j[id_j] + rnorm(nrow(ids), sd = 0.5)

DF <- data.frame(y = y, id_i = id_i, id_j = id_j)

library("lme4")
#> Loading required package: Matrix

lmer(y ~ 1 + (1 | id_i) + (1 | id_j), data = DF)
#> Linear mixed model fit by REML ['lmerMod']
#> Formula: y ~ 1 + (1 | id_i) + (1 | id_j)
#>    Data: DF
#> REML criterion at convergence: 2403.071
#> Random effects:
#>  Groups   Name        Std.Dev.
#>  id_i     (Intercept) 2.1070  
#>  id_j     (Intercept) 3.0956  
#>  Residual             0.5053  
#> Number of obs: 1225, groups:  id_i, 49; id_j, 49
#> Fixed Effects:
#> (Intercept)  
#>       9.562

但是,我认为您将无法在主题级别包含协变量,因为您只有配对级别的数据。


编辑:根据评论,数据的对称性变得更加清晰。据我所知,当前的实现lmer()不允许这样的数据。下面的代码使用 STAN 模拟和拟合此类数据的模型。

set.seed(2019)
N <- 50 # number of subjects

# id indicators for pairs
ids <- expand.grid(i = seq_len(N), j = seq_len(N))
ids <- ids[ids$i != ids$j, ]
id_i <- ids$i
id_j <- ids$j

# random effects
b <- rnorm(N, sd = 2)

# simulate normal outcome data from the mixed model 
# that has one random effect but accounts for the pairs i and j
y <- 10 + b[id_i] + b[id_j] + rnorm(nrow(ids), sd = 0.5)


library("rstan")

Data <- list(N = nrow(DF), n = length(unique(id_i)), 
             id_i = id_i, id_j = id_j, y = y)
model <- "
data {
    int n;
    int N;
    int id_i[N];
    int id_j[N];
    vector[N] y;
}

parameters {
    vector[n] b;
    real beta;
    real<lower = 0> sigma_b;
    real<lower = 0> sigma;
}

transformed parameters {
    vector[N] eta;
    for (k in 1:N) {
        eta[k] = beta + b[id_i[k]] + b[id_j[k]];
    }
}

model {
    sigma_b ~ student_t(3, 0, 10);
    for (i in 1:n) {
        b[i] ~ normal(0.0, sigma_b);
    }
    beta ~ normal(0.0, 10);
    sigma ~ student_t(3, 0, 10);
    y ~ normal(eta, sigma);
}
"

fit <- stan(model_code = model, data = Data, pars = c("beta", "sigma_b", "sigma"))
summary(fit)

对于那些寻求更多理论的人,杜克/华盛顿大学的彼得霍夫一直致力于此。

他 2005 年的 JASA 论文“二元数据的双线性混合效应模型”(pdf代码)描述了一种 MCMC 方法,该方法与上述@Dimitris Rizopoulos 的答案非常相似)。

那个粗略的代码被制作成一个更精致的 R 包,称为 AMEN(加法乘法效应模型),这份 2017 年的预印本/技术报告实际上是一个包含一些工作示例的教程。他称之为“社会关系回归模型”。