Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 完全分离-如何实施';固定效应的零平均正态先验';在布格尔默_R_Mixed Models - Fatal编程技术网

R 完全分离-如何实施';固定效应的零平均正态先验';在布格尔默

R 完全分离-如何实施';固定效应的零平均正态先验';在布格尔默,r,mixed-models,R,Mixed Models,我的glmer模型包含两个预测因子和一个交互项,受到完全分离的影响。根据Ben Bolker的建议,然后我用bglmer拟合模型,对固定效应施加零平均正态先验。我的代码如下: bglmer(Binary_outcome ~ (1|Subject) + Factor1 + Factor2 + Factor1:Factor2, mydata, control=glmerControl(optimizer="bobyqa"), fam

我的
glmer
模型包含两个预测因子和一个交互项,受到完全分离的影响。根据Ben Bolker的建议,然后我用
bglmer
拟合模型,对固定效应施加零平均正态先验。我的代码如下:

bglmer(Binary_outcome ~ (1|Subject) + Factor1 + Factor2 + Factor1:Factor2, 
       mydata, 
       control=glmerControl(optimizer="bobyqa"), 
       family = binomial, 
       fixef.prior = normal(sd = c(3, 3, 3)))
Factor1和Factor2都是因子变量,每个变量有四个级别。对于我的代码,我遵循了这个示例。据我所知,我现在在我的固定效应结构的所有元素上放置了标准差为3的零平均正常先验


代码似乎起了作用,但我完全不确定我所做的是否正确。3 SD是帮助完全分离的一般建议吗?我如何指定只在交互项上出现的
fixef.prior
?(完全分离与
Factor1
Factor2
的特定组合有关,而不是一般的
Factor1
Factor2
)。或者,如果涉及到相互作用,我是否必须在所有三个元素上设置固定效应的先验值?

如果有疑问,请进行实验tl;dr惩罚一切可能都没问题,但如果你喜欢惩罚互动,而不是惩罚主要影响,你可以这样做(或者几乎如此;你必须给出一个有限的sd,但它可以非常大)。sd=3是合理的;sd=2.5是截距以外参数的默认值。除非你正在拟合一个预测模型,并且想麻烦地做交叉验证来选择惩罚的最佳强度,否则实际上没有一种自动的方法来决定;您只需选择一个sd,使您的所有参数“合理”,而不会将您确定的参数过度挤压到零

我模拟了有点像你的数据(2个因子,每个因子有4个级别,二进制响应,一个随机截取项),并尝试了不同的惩罚场景。我设置了真实参数,这样大多数参数都是合理的(β=1),但有一个大的主效应和一个大的交互参数(β=12)

  • 没有处罚(
    glmer
  • sd=3进行处罚
  • sd=1对所有条款进行处罚
  • 主效应项的惩罚非常弱(
    sd=1e4
    )和交互作用的惩罚中等(
    sd=2
    )[“混合”]
帮助(“bmerDist类”)

在指定标准时 偏差,长度小于固定数量的向量 效果将重复其尾部,而第一个元素 假设仅适用于截距项。那么在 默认值为“c(10,2.5)”,则截取接收标准 偏差为10,各种坡度均为 标准偏差2.5

库(lme4)
图书馆(blme)
图书馆(扫帚、混合)
图书馆(点须)
库(颜色空间)

dd有疑问时,进行实验tl;dr惩罚一切可能都没问题,但如果你喜欢惩罚互动,而不是惩罚主要影响,你可以这样做(或者几乎如此;你必须给出一个有限的sd,但它可以非常大)。sd=3是合理的;sd=2.5是截距以外参数的默认值。除非你正在拟合一个预测模型,并且想麻烦地做交叉验证来选择惩罚的最佳强度,否则实际上没有一种自动的方法来决定;您只需选择一个sd,使您的所有参数“合理”,而不会将您确定的参数过度挤压到零

我模拟了有点像你的数据(2个因子,每个因子有4个级别,二进制响应,一个随机截取项),并尝试了不同的惩罚场景。我设置了真实参数,这样大多数参数都是合理的(β=1),但有一个大的主效应和一个大的交互参数(β=12)

  • 没有处罚(
    glmer
  • sd=3进行处罚
  • sd=1对所有条款进行处罚
  • 主效应项的惩罚非常弱(
    sd=1e4
    )和交互作用的惩罚中等(
    sd=2
    )[“混合”]
帮助(“bmerDist类”)

在指定标准时 偏差,长度小于固定数量的向量 效果将重复其尾部,而第一个元素 假设仅适用于截距项。那么在 默认值为“c(10,2.5)”,则截取接收标准 偏差为10,各种坡度均为 标准偏差2.5

库(lme4)
图书馆(blme)
图书馆(扫帚、混合)
图书馆(点须)
库(颜色空间)

dd非常感谢你,这非常有帮助!我尝试了所有3个版本,每个版本都使相关参数合理。如果这个答案解决了您的问题,我们鼓励您单击复选标记接受它…完成-抱歉,我还是这里的新系统!非常感谢,这非常有帮助!我尝试了所有3个版本,每个版本都使相关参数合理。如果这个答案解决了您的问题,我们鼓励您单击复选标记接受它…完成-抱歉,我还是这里的新系统!
library(lme4)
library(blme)
library(broom.mixed)
library(dotwhisker)
library(colorspace)

dd <- expand.grid(Subject=factor(1:10),
                  Factor1=letters[1:4],
                  Factor2=LETTERS[1:4],
                  rep=1:20
                  )
bvec <- rep(1,16)
bvec[c(2,10)] <- 12
form <- response ~ (1|Subject) + Factor1 + Factor2 + Factor1:Factor2
set.seed(101)
dd$response <- simulate(form[-2],
         newdata=dd,
         newparams=list(beta=bvec, theta=1),
         family=binomial,
         weights=rep(1,nrow(dd)))[[1]]

b0 <- glmer(form, 
            dd,
            family = binomial)
bfun <- function(sd) {
   bglmer(form, dd, family = binomial, fixef.prior = normal(sd = sd))
}
b1 <- bfun(3)
b2 <- bfun(1)
## eight intercept + main effects first, then eight interaction parameters
b3 <- bfun(rep(c(1e4,2),c(8,8))

theme_set(theme_bw())
dwplot(list(unpenalized=b0,sd3=b1,sd1=b2,mixed=b3),effect="fixed") +
    coord_cartesian(xlim=c(-5,5))+
    geom_vline(xintercept=c(0,1),lty=2,colour="darkgray") +
    scale_colour_discrete_qualitative(guide=guide_legend(reverse=TRUE))