生存 :: clogit 具有 M 个病例和 M 个对照的分层,它是如何工作的?

问题描述

我是一名生物学家,使用 clogit 建模进行栖息地选择研究。我有一个分层数据集,每个层中有 M 个病例(存在)和 M 个对照(不存在)(作为动物的 ID,我的独立单位)。我的结果二分变量(存在)是物种的出现。我正在针对一组环境预测变量(X1、X2、X3 等)对发生概率进行建模。 Compton et al. (2002) 声明 clogit 不处理预测变量的绝对值,而是处理以下结果:案例中的值 减去 配对控制中的值。

问题1:这是对的吗? (我猜是)

问题2:这将如何应用于我在每个层中有很多个案例和很多个控件的情况?由于 clogit 在层内没有问我任何配对变量,它是否将每个层中的案例和控制配对?实际上,我并不需要将案例和控件严格关联为 1:1,层内的配对对我来说是次要的。对我来说最重要的是隔离层之间的分析,因为我在层之间有一个预测变量 (X3) 的完全不同的值(但不是在层内!每个层的 var(X3) 总是大约为 1)。

其他问题:某些层共享所研究动物的居住地点。 问题3:在分层过程(即使用strata(ID))中是否考虑了这种影响?如果没有,我该如何解释? cluster() 函数一个诱人的选项,但它不会改变预测变量的 Beta 系数,所以我认为我没有让它正常工作。我以为我可以简单地将它添加为预测器,但是 - 如果我这样做 - 它会返回 NA。我想这是因为我有一个 C 级别,其中只有一个层,所以预测变量 C 有点干预了分层变量的工作。

示例代码

Presence = rep(c(1,0),70)
ID = c(rep("Totti",20),rep("DeRossi",6),rep("Aldair",34),rep("Xavi",rep("Iniesta",rep("figo",40)) 
# strata differs in total number of case+controls
X1 = rnorm(140,mean = 5)
X2 = rnorm(140,mean = 6)
X3 = c(rnorm(80,mean=10),rnorm(20,mean=-2),rnorm(40,mean=9)) # the 5th stratum (Iniesta) being the one with extreme values
C = c(rep("Roma",60),rep("Barcelona",40),rep("Madrid",40)) # site where the animals belongs

mydata = data.frame(Presence,ID,X1,X2,X3,C)

# each stratum (ID) has the number of cases equal to the number of controls (M:M)

library(survival)
M = clogit(Presence ~ X1 + X2 + X3 + strata(ID),data = mydata,method = "exact") # basic model

M_clust = clogit(Presence ~ X1 + X2 + X3 + strata(ID) + cluster(C),method = "exact")
# giving: "Error: robust variance plus the exact method is not supported"
# so I compare the two using "efron" method

M_efr = clogit(Presence ~ X1 + X2 + X3 + strata(ID),method = "efron")
M_efr_clust = clogit(Presence ~ X1 + X2 + X3 + strata(ID) + cluster(C),method = "efron")
# coeff. among the two models (with and without cluster) don't change

# tring to include C as a predictor
M_c = clogit(Presence ~ X1 + X2 + X3 + C + strata(ID),data = mydata)
# returns NA

非常感谢!!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)