我正在编写一个函数,该函数接受一个full
和一个reduced
glm
对象,以汇总感兴趣的变量varofint
和交互变量interaction_var
的交互结果(通过进行lrtest
并在full
对象上使用svycontrast
提取每个interaction_var
水平下varofint
的结果)。样本数据:
x <- data.frame(outcome=rbinom(100,1,.3),varofint=rnorm(100), interaction_var=sample(letters[1:3],100,replace=TRUE))
reduced <- glm(outcome~varofint+interaction_var,data=x)
full <- glm(outcome~varofint*interaction_var,data=x)
我想知道从说(
full
)glm模型中提取参考类别的最佳方法。我显然可以做像这样的事情:levels(full$data$interaction_var)[1]
,但是在给出contrasts
参数的输入的情况下,这种方法是否安全来提取参考类别呢?似乎,如果给出选择SAS对比度的选项,那么这种方法可能会产生与模型中使用的参考类别不同的interactionv_var
水平。以下方法是否更为安全?mf <- model.frame(full)
setdiff(rownames(contrasts(mf[, "interaction_var"])), colnames(contrasts(mf[, "interaction_var"])))
或者类似的。
names(which(apply(contrasts(mf[, "interaction_var"]),1,function(.v){all(.v==0)})))
我有一个更简单的方法来提取参考类别吗?