问题:
我已经测量了 1 个具有 5 个级别的分类变量中的两个二元变量。
最初,我认为我可以使用 Fisher 精确检验或一些它的版本。但是我只找到了表格尺寸特别指定的参考资料(hypergea
以 R 中的 " " 包为例)。就我而言,这是一个.
我想知道是否还有其他合适的方法。
这是我在 R 中使用的示例。
set.seed(66)
group1<-as.data.frame(rbind(cbind(rep("GROUP_1",times=50),sample(x=c(1:50),size=50,replace=TRUE),rbinom(50,1,0.25),rep(NA,times=50)),cbind(rep("GROUP_1",times=50),sample(x=c(51:100),size=50,replace=TRUE),rep(NA,times=50),rbinom(50,1,0.75))))
group2<-as.data.frame(rbind(cbind(rep("GROUP_2",times=50),sample(x=c(101:150),size=50,replace=TRUE),rbinom(50,1,0.05),rep(NA,times=50)),cbind(rep("GROUP_2",times=50),sample(x=c(151:200),size=50,replace=TRUE),rep(NA,times=50),rbinom(50,1,0.95))))
group3<-as.data.frame(rbind(cbind(rep("GROUP_3",times=50),sample(x=c(201:250),size=50,replace=TRUE),rbinom(50,1,0.50),rep(NA,times=50)),cbind(rep("GROUP_3",times=50),sample(x=c(251:300),size=50,replace=TRUE),rep(NA,times=50),rbinom(50,1,0.50))))
group4<-as.data.frame(rbind(cbind(rep("GROUP_4",times=50),sample(x=c(301:350),size=50,replace=TRUE),rbinom(50,1,0.67),rep(NA,times=50)),cbind(rep("GROUP_4",times=50),sample(x=c(351:400),size=50,replace=TRUE),rep(NA,times=50),rbinom(50,1,0.33))))
group5<-as.data.frame(rbind(cbind(rep("GROUP_5",times=50),sample(x=c(301:350),size=50,replace=TRUE),rbinom(50,1,0.20),rep(NA,times=50)),cbind(rep("GROUP_5",times=50),sample(x=c(351:400),size=50,replace=TRUE),rep(NA,times=50),rbinom(50,1,0.20))))
testdata<-rbind(group1,group2,group3,group4)
names(testdata)<-c("GROUP","ID","Var1_","Var2_")
我会在这里指出,Var1_ 和 Var2_ 是从不同的个体中测量的,尽管这些个体是从同一人群中采样的。这就是我将 NA 放在数据框中的原因。另外,请注意,某些数据可能会被 ID 伪复制 - 我稍后会回到这一点。
我正在寻找一种分析这个问题的方法。
具体我想知道:
1. 的状态是否能Var1_
显着预测 的状态Var2_
?关系是什么,它有多强?
2. 这种关系在 GROUP 级别之间是否存在显着差异?它有多大不同(效果大小)?
到目前为止我的方法:
一些搜索表明 GLM 可能是合适的。但是,据我所知,GLM 函数要求 V1 和 V2 变量是来自同一样本的观察值。所以,只是为了看看它的外观,我将把 NA 拿出来运行一个 GLM。
group1<-as.data.frame(cbind(rep("GROUP_1",times=50),rbinom(50,1,0.25),rbinom(50,1,0.75)))
group2<-as.data.frame(cbind(rep("GROUP_2",times=50),rbinom(50,1,0.05),rbinom(50,1,0.95)))
group3<-as.data.frame(cbind(rep("GROUP_3",times=50),rbinom(50,1,0.50),rbinom(50,1,0.50)))
group4<-as.data.frame(cbind(rep("GROUP_4",times=50),rbinom(50,1,0.67),rbinom(50,1,0.33)))
group5<-as.data.frame(cbind(rep("GROUP_5",times=50),rbinom(50,1,0.20),rbinom(50,1,0.20)))
testdata<-rbind(group1,group2,group3,group4)
names(testdata)<-c("GROUP","Var1_","Var2_")
glm_obj_1 <- glm(Var1_ ~ Var2_, data=testdata, family=binomial(link="logit"))
summary(glm_obj)
好的...我想这可能是我所追求的,但我想知道 GROUP 之间的关系是否不同。
glm_obj_2 <- glm(Var1_ ~ Var2_* GROUP, data=testdata, family=binomial(link="logit"))
summary(glm_obj_2)
行!这是一个合理的方法吗?删除 NA 对我来说似乎是有问题的,但我不确定如何在 GLM 规范中处理它。
额外学分:
我之前提到过伪复制。我认为这可以通过随机效应来控制?我将尝试在 LME4 中实现的 GLMM... 这次我将添加更少的 ID 级别以增加伪复制的几率。
library(lme4)
group1<-as.data.frame(cbind(rep("GROUP_1",times=50),sample(x=c(1:5),size=50,replace=TRUE),rbinom(50,1,0.25),rbinom(50,1,0.75)))
group2<-as.data.frame(cbind(rep("GROUP_2",times=50),sample(x=c(6:10),size=50,replace=TRUE),rbinom(50,1,0.05),rbinom(50,1,0.95)))
group3<-as.data.frame(cbind(rep("GROUP_3",times=50),sample(x=c(11:15),size=50,replace=TRUE),rbinom(50,1,0.50),rbinom(50,1,0.50)))
group4<-as.data.frame(cbind(rep("GROUP_4",times=50),sample(x=c(16:20),size=50,replace=TRUE),rbinom(50,1,0.67),rbinom(50,1,0.33)))
group5<-as.data.frame(cbind(rep("GROUP_5",times=50),sample(x=c(21:25),size=50,replace=TRUE),rbinom(50,1,0.20),rbinom(50,1,0.20)))
testdata<-rbind(group1,group2,group3,group4)
names(testdata)<-c("GROUP","ID","Var1_","Var2_")
glmer_obj<-glmer(Var1_ ~ Var2_ * GROUP + (1|ID), data=testdata, family=binomial(link="logit"))
summary(glm_obj)
好吧,它无法收敛,但出于说明目的,我希望它就足够了。这是否是处理此类数据的合适方法?
我渴望听到您的回应、建议、批评等。