(嗨,莎拉,对不起,我之前没有通过电子邮件回复...)
一般来说,很难回答这些问题——你被你的数据困住了,对吧?所以这不是功率分析的问题。如果你想确保你的结果相当可靠,最好的办法可能是运行一些模拟。我将展示lme4
(在 Github 上的开发版本 1.1-1 中)的一个相当新的功能,即在给定公式和一组参数的情况下模拟来自 GLMM 的数据。
首先我必须模拟预测变量(你不必这样做,因为你已经有了数据——尽管你可能想尝试改变地块数量的范围、每个地块的树等)。
set.seed(101)
## simulate number of trees per plot
## want mean of 700/163=4.3 trees, range=1-22
## by trial and error this is about right
r1 <- rnbinom(163,mu=3.3,size=2)+1
## generate plots and trees within plots
d <- data.frame(plot=factor(rep(1:163,r1)),
tree=factor(unlist(lapply(r1,seq))))
## expand by year
library(plyr)
d2 <- ddply(d,c("plot","tree"),
transform,year=factor(2004:2011))
现在设置参数:我将假设 year 是一个固定效应,并且总体疾病发病率是plogis(-2)=0.12
2011 年除外,当时它是plogis(-2-3)=0.0067
. 地块间标准差为 1(在 logit 尺度上),地块间树内标准差也是如此:
beta <- c(-2,0,0,0,0,0,0,-3)
theta <- c(1,1) ## sd by plot and plot:tree
现在模拟:年份作为固定效应,情节和树中情节作为随机效应
library(lme4)
s1 <- simulate(~year+(1|plot/tree),family=binomial,
newdata=d2,newparams=list(beta=beta,theta=theta))
d2$diseased <- s1[[1]]
总结/检查:
d2sum <- ddply(d2,c("year","plot"),
summarise,
n=length(tree),
nDis=sum(diseased),
propDis=nDis/n)
library(ggplot2)
library(Hmisc) ## for mean_cl_boot
theme_set(theme_bw())
ggplot(d2sum,aes(x=year,y=propDis))+geom_point(aes(size=n),alpha=0.3)+
stat_summary(fun.data=mean_cl_boot,colour="red")
现在拟合模型:
g1 <- glmer(diseased~year+(1|plot/tree),family=binomial,
data=d2)
fixef(g1)
您可以尝试多次,看看结果多久可靠......