Я пытаюсь смоделировать бинарный результат, в котором у меня есть N субъектов (с вероятностями для каждого субъекта), измеренных в два разных периода (скажем, до и после). Я хочу увеличить предметные вероятности на определенное значение отношения шансов (ИЛИ) между двумя периодами.
После моделирования я использовал glm
и lme4::glmer
, чтобы проверить, правильно ли была оценена моя заранее заданная пропорция шансов. Я ожидал, что только ИЛИ, оцененный в glm
, будет предвзятым. Тем не менее, OR, оцененное в lme4::glmer
, также было смещено, так как мои предопределенные значения OR увеличиваются. Как я могу исправить это смещение?
Большое спасибо,
Ниже мое моделирование
rm(list=ls(all=TRUE))
library(lme4)
library(ggplot2)
N = 2000 #Number of subjects
X = 1:20 #Odds ratio values tested
set.seed(20)
P = runif(N,-4,4) #Subject-specific probability (in logit scale)
#Vectors that will be used to create a data frame
ind = rep(paste0("Sub",1:N),2) #Vector of individuals
x1 = c(rep(0,N),rep(1,N)) #Categorical Predictor Variable x1
OR.glm = NULL;OR.glmer = NULL
#Loop over X
for (OR in X){
value = rbinom(N,1,plogis(P)) #Simulating values for x1=0
value.simu = rbinom(N,1,plogis(P+log(OR))) #Simulating values for x1=1
df = data.frame(ind=ind,y=c(value,value.simu),x1=x1) #Creating data frame
#Using glm
GLM = glm(y~factor(x1),data=df,family="binomial")
OR.glm = c(OR.glm,exp(GLM$coef[2]))
#Using glmer for each subject
GLMER = glmer(y~factor(x1)+(1|ind),data=df,family="binomial")
OR.glmer = c(OR.glmer,exp(summary(GLMER)$coef[2,1]))
}
DF = data.frame(method = rep(c("glm","glmer"),each=length(X)),
data = c(OR.glm,OR.glmer),x = rep(X,2))
ggplot(DF,aes(x = x,y = data,group=method, colour=method))+ theme_bw()+
geom_point() + stat_smooth(method = 'loess') +
geom_abline(slope=1, intercept=0) + ylim(0, max(X)) + xlim(0, max(X)) +
xlab("Expected OR") + ylab("Observed OR")