处理三级列联表的适当方法


12

我有一个三级列联表,其中包含几种物种的计数数据,收集它们的寄主植物以及该收集是否在下雨天发生(这实际上很重要!)。使用R,假数据可能是这样的:

count    <- rpois(8, 10)
species  <- rep(c("a", "b"), 4)
host     <- rep(c("c","c", "d", "d"), 2)
rain     <- c(rep(0,4), rep(1,4))
my.table <- xtabs(count ~ host + species + rain)


, , rain = 0

    species
host  a  b
   c 12 15
   d 10 13

, , rain = 1

    species
host  a  b
   c 11 12
   d 12  7

现在,我想知道两件事:物种是否与寄主植物相关?“是否下雨”会影响这种关联吗?我loglm()MASS这里使用:

 # Are species independent to host plants, given the effect of rain?
loglm(~species + host + rain + species*rain + host*rain, data=my.table)

 # Given any relationship between host plants and species, does rain change it?
loglm(~species + host + rain + species*host)

这超出了我的舒适度水平,我想检查一下是否可以正确设置模型,这是解决这些问题的最佳方法。

Answers:


10

有两种解释第一个问题的方式,这在您提出的两种方式中得到了反映:“物种是否与寄主植物有关?” 而且,“考虑到降雨的影响,物种是否独立于寄主植物?”

第一种解释对应于联合独立的模型,该模型指出物种和寄主是相互依赖的,但是共同独立于是否下雨:

pshr=pshpr

pshr(s,h,r)shrpsh(s,h,)pr

第二种解释对应于条件独立性模型,该模型指出物种和寄主在下雨的情况下是独立的:

psh|r=ps|rph|rpshr=psrphr/pr

psh|r(s,h,r)r

您可以在R中测试这些模型(loglin也可以正常工作,但我更熟悉glm):

count <- c(12,15,10,13,11,12,12,7)
species <- rep(c("a", "b"), 4)
host <- rep(c("c","c", "d", "d"), 2)
rain <- c(rep(0,4), rep(1,4))
my.table <- xtabs(count ~ host + species + rain)
my.data <- as.data.frame.table(my.table)
mod0 <- glm(Freq ~ species + host + rain, data=my.data, family=poisson())
mod1 <- glm(Freq ~ species * host + rain, data=my.data, family=poisson())
mod2 <- glm(Freq ~ (species + host) * rain, data=my.data, family=poisson())
anova(mod0, mod1, test="Chi") #Test of joint independence
anova(mod0, mod2, test="Chi") #Test of conditional independence

mod1mod2mod0pshr=psphprsummary(mod2)

解决第一个问题的另一种方法是对fisher.test(xtabs(count ~ host + species))折叠的2x2表格执行Fischer的精确测试()(第一种解释),或者mantelhaen.test(xtabs(count ~ host + species + rain))对2层2x2表格进行Mantel-Haenszel检验()或编写尊重分层的置换测试(第二种解释)。

套用你的第二个问题,请问物种和主机之间的关系取决于它是否下雨?

mod3 <- glm(Freq ~ species*host*rain - species:host:rain, data=my.data, family=poisson())
mod4 <- glm(Freq ~ species*host*rain, data=my.data, family=poisson())
anova(mod3, mod4, test=”Chi”)
pchisq(deviance(mod3), df.residual(mod3), lower=F)

完整的模型mod4已经饱和,但是您可以通过查看mod3上面我所做的偏离来测试有问题的效果。


感谢Lockedoff,特别是因为有条件的和共同的独立模式之间的差异,我帮助我理清了自己的想法
大卫·

1

hostrainhostrain

R命令将是:

glm(公式=物种〜寄主+雨,家庭=二项式(logit),权重=计数)

p


1
Logistic回归似乎还可以,但是它具有固定的行和列总数的附加约束。泊松数据可能并非如此。我相信答案不会有太大的不同。
suncoolsu 2011年

1

最初,我建议尝试使用一种受约束的排序技术 vegan软件包中的,但从第二个想法开始,我怀疑这是否有用,因为您实际上有2个列联表。我希望本示例的第二部分[PDF:R演示–分类分析]将有所帮助。


认为链接已断开,您的意思是这里的绝对链接吗?这很有帮助,谢谢!
大卫w

是的,URL中的空格似乎将其破坏了。
ils
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.