首页 > 解决方案 > 是否有任何函数可以计算 glmer 的部分响应?

问题描述

我通过库glmer的功能使用混合效应模型lme4。我想计算部分响应函数,但此类模型的函数不起作用response.plot2biomod2我尝试自己这样做:

library(purrr)
library(lme4)



set.seed(1213)

Y_ <- purrr:: rbernoulli(150, p = 0.4)
Y <- ifelse(Y_=='TRUE', 1, 0)
years <-  as.character(rdunif(150,b=5,a=1))
r1_ <- rnorm(150, 800, sd=50)
r2_ <- rnorm(150, 1000, sd=50)
my_data <- as.data.frame(cbind(Y, r1_, r2_, years))
colnames(my_data) <- c("Y", "r1", "r2", "years")
my_data$r1 <- as.numeric(as.character(my_data$r1))
my_data$r2 <- as.numeric(as.character(my_data$r2))
GLMM_MODEL_Model_ <- glmer('Y  ~ r1*r2+ (1 | years)' , 
                           data = my_data, family=binomial(link="logit"),
                           control=glmerControl(optimizer="bobyqa",
                                                optCtrl=list(maxfun=150000)))

my_preds_glmm <- c("r1", "r2")
DATA_PRATIAL_EFFECTS <-  data.frame(matrix(0, nrow = nrow(my_data), ncol=1))
for(i in  1: length(my_preds_glmm)) { 
  Pr <- data.frame(matrix(0, nrow = nrow(my_data), ncol=2))
  colnames(Pr) <- c(paste0("EFFC_",my_preds_glmm[i]) , paste0("VAR_",my_preds_glmm[i]))
  Pr [, 2] <- my_data[, my_preds_glmm[i]]
  DATA_PARTIAL <- data.frame(matrix(0, nrow = nrow(my_data), ncol=length(my_preds_glmm)))
  colnames(DATA_PARTIAL) <- my_preds_glmm
  DATA_PARTIAL[, i] <- my_data[, my_preds_glmm[i]] 
  Pr[, 1]<- predict(GLMM_MODEL_Model_, DATA_PARTIAL, type='response',  re.form=NA)
  DATA_PRATIAL_EFFECTS <- cbind(DATA_PRATIAL_EFFECTS, Pr)
}
DATA_PRATIAL_EFFECTS <- DATA_PRATIAL_EFFECTS[, -1]

我想对我的方法有一些看法。

标签: rlme4mixed-modelspartial-response

解决方案


推荐阅读