数据链接: https://drive.google.com/open?id=1aMgwSPOZAEO3cICqLeQyqsDF_5WrhFXe
我在使用上面链接的数据对二项式glm进行事后分析时遇到问题。
实验:我正在研究给出3个解释变量的昆虫标记的可检测性(存在/不存在);应用方法(apptreat - factor,2 level),marker(factor,2 levels)和曝光时间(exp - numeric,3 levels)。响应变量(检测)记录为1表示当前,0表示不存在。在多次运行模型以确定是否有任何相互作用之后,我想出了以下模型。
型号:
id.glm2<-glm(detec~apptreat+marker+exp+apptreat*exp, family=binomial, data=indiv_detec2)
anova(id.glm2, test="Chisq")
输出:
Analysis of Deviance Table
Model: binomial, link: logit
Response: detec
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 906 1182.37
apptreat 1 238.847 905 943.52 < 2.2e-16 ***
marker 1 156.844 904 786.68 < 2.2e-16 ***
exp 1 138.098 903 648.58 < 2.2e-16 ***
apptreat:exp 1 9.414 902 639.17 0.002153 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
我想进行事后多重比较分析,以比较每个变量中的差异,包括使用glht
CRAN中multcomp
函数的交互。我能够对主要效果进行比较,并发出关于存在交互的警告(正如其他帖子所预期的那样)。为了对交互进行posthoc分析,我使用以下代码在交互数据中添加了一列,并将其作为glm模型中的主要效果包含在内
indiv_detec2$AE<-interaction(indiv_detec2$apptreat, indiv_detec2$exp)
id.glm2<-glm(detec~apptreat+marker+exp+AE, family=binomial, data=indiv_detec2)
anova(id.glm2, test="Chisq")
当我使用glht
函数对交互变量(AE)进行posthoc分析时,会产生以下错误消息
glht(m1, linfct = mcp(AE = "Tukey"))
modelparm.default(model,...)中的错误:系数和协方差矩阵的维度不匹配
数据不平衡但我不知道这将如何阻止交互变量上的posthoc而不是其他变量。我知道这个问题已经提到了其他帖子,但我还没有能够让这些帖子中提到的解决方案发挥作用。我认为这是我做错了/简单的错误而且无法解决的问题。
答案 0 :(得分:0)
您一年前发布了此问题-您是否找到问题的答案?如果是这样,您应该发布自己的问题的答案并接受。
关于您所做的事情,有几件事不一定与您的问题有关,而是相关的:
1)当您在模型中使用“ *”指定互动时,模型会自动包含没有互动的主要效果,即,您只需指定:
id.glm2<-glm(detec~apptreat*exp+marker, family=binomial, data=indiv_detec2)
而如果您指定与“:”的交互,则需要包括主要效果。
2)您对anova()的使用似乎是不正确的,通常使用anova()来比较不同的模型,并且您在上面的使用仅指定了m1(我假设它与您在示例中构建的模型相同,但使用不同的名称),请参见anova()上的信息页:Description of anova usage。我认为您打算使用Anova()代替?
关于您使用交互功能和主要问题的信息,经过一点点Google搜索,我发现交叉验证的answer会出现相同的问题。他们在他们的代码中注意到,其列中的NA导致了此问题,需要删除它们才能使代码正常工作。我建议您按照此处的说明进行操作,方法是手动将其删除,或者尝试使用na.rm = TRUE并查看是否会改变您的结果。