R 指定不同组中具有相同级别的不同截取之间的相关性
假设我有两个因子变量R 指定不同组中具有相同级别的不同截取之间的相关性,r,lme4,random-effects,R,Lme4,Random Effects,假设我有两个因子变量foo和bar,它们都包含相同的级别“a”,“b”,和“c”。有没有办法在lme4(或任何其他包)中指定一个模型,该模型具有foo和bar的随机截获,且截获之间具有相同级别的相关性?换句话说,我认为foo中“a”的效果应该与条中的“a”相关(类似于“b”和“c”)。从形式上看,这可能类似于: 对于[“a”、“b”、“c”]中的每个级别k 下面是一些估算sigma^2_foo和sigma^2_bar的代码: library(lme4) levs <- c("a", "
foo
和bar
,它们都包含相同的级别“a”
,“b”
,和“c”
。有没有办法在lme4(或任何其他包)中指定一个模型,该模型具有foo
和bar
的随机截获,且截获之间具有相同级别的相关性?换句话说,我认为foo
中“a”
的效果应该与条中的“a”
相关(类似于“b”
和“c”
)。从形式上看,这可能类似于:
对于[“a”、“b”、“c”]
中的每个级别k
下面是一些估算sigma^2_foo
和sigma^2_bar
的代码:
library(lme4)
levs <- c("a", "b", "c")
n <- 1000
df <- data.frame(y = rpois(n, 3.14),
foo = sample(levs, n, TRUE),
bar = sample(levs, n, TRUE))
mod <- glmer(y ~ (1 | foo) + (1 | bar), df, poisson)
> mod
Formula: y ~ (1 | foo) + (1 | bar)
Random effects:
Groups Name Std.Dev.
foo (Intercept) 0.009668
bar (Intercept) 0.006739
你的模型没有固定的效果,这就是为什么你没有得到相关矩阵。根据您的描述,您指的是foo
和bar
在某些级别上的交互。要添加此类交互,需要将foo:bar
术语作为固定效果添加到模型中,如下所示:
mod <- glmer(y ~ (1 | foo) + (1 | bar) + foo:bar, df, poisson)
summary(mod)
df$foo_bar.inter[df$foo != df$bar] <- NA
你可以试试看,如果需要进一步的帮助,请告诉我
祝你好运。非常感谢@TeeKea(+1)的回答,但我认为这不是我想要的。我不想添加任何固定的效果-只是一个超参数来关联随机截取与匹配级别。不确定它是否有用,但我添加了一些Stan代码,以展示如何在Stan中对其进行编码。您是否详细了解了nlme
?我的理解是,你至少可以为线性随机效应模型编码你自己的协方差结构。您可能在可以使用的优化器方面受到限制,也无法使用nlme
执行二项式glmm之类的操作,但它可能适合您的目的?e、 我对nlme不是很熟悉-我会看一看,谢谢!
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) [glmerMod]
Family: poisson ( log )
Formula: y ~ (1 | foo) + (1 | bar) + foo:bar
Data: df
AIC BIC logLik deviance df.resid
3962.1 4016.1 -1970.1 3940.1 989
Scaled residuals:
Min 1Q Median 3Q Max
-1.8572 -0.6665 -0.0947 0.5406 3.8695
Random effects:
Groups Name Variance Std.Dev.
foo (Intercept) 0 0
bar (Intercept) 0 0
Number of obs: 1000, groups: foo, 3; bar, 3
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.07131 0.05882 18.212 <2e-16 ***
fooa:bara 0.16682 0.07692 2.169 0.0301 *
foob:bara 0.04549 0.08039 0.566 0.5715
fooc:bara -0.08801 0.08464 -1.040 0.2984
fooa:barb 0.08196 0.08370 0.979 0.3275
foob:barb 0.05421 0.08006 0.677 0.4983
fooc:barb 0.08886 0.07712 1.152 0.2492
fooa:barc -0.02109 0.07884 -0.268 0.7891
foob:barc 0.12437 0.07720 1.611 0.1072
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) foo:br fob:br foc:br fo:brb fb:brb fc:brb fo:brc
fooa:bara -0.765
foob:bara -0.732 0.560
fooc:bara -0.695 0.531 0.509
fooa:barb -0.703 0.537 0.514 0.488
foob:barb -0.735 0.562 0.538 0.511 0.516
fooc:barb -0.763 0.583 0.558 0.530 0.536 0.560
fooa:barc -0.746 0.571 0.546 0.519 0.524 0.548 0.569
foob:barc -0.762 0.583 0.558 0.530 0.535 0.560 0.581 0.569
df <- transform(df,foo_bar.inter=interaction(foo,bar, sep = ":"))
df$foo_bar.inter[df$foo != df$bar] <- NA