確認3
こちらの続き。
random effectをどのように評価するか?
> leaf<-rep(1:4,each=4) > disc<-rep(1:4,4) > conc<-runif(16)*runif(16)*sqrt(leaf) > data<-data.frame(leaf=factor(leaf),disc=factor(disc),conc) > summary(data) leaf disc conc 1:4 1:4 Min. :0.007103 2:4 2:4 1st Qu.:0.084563 3:4 3:4 Median :0.280326 4:4 4:4 Mean :0.420890 3rd Qu.:0.580985 Max. :1.523141
まずは尤度比検定。χ^2分布で近似する方法。
> mixmodel<-lmer(conc~1+(1|leaf),data) > mixmodel Linear mixed model fit by REML Formula: conc ~ 1 + (1 | leaf) Data: data AIC BIC logLik deviance REMLdev 15.14 17.46 -4.569 7.897 9.138 Random effects: Groups Name Variance Std.Dev. leaf (Intercept) 0.176978 0.42069 Residual 0.052425 0.22897 Number of obs: 16, groups: leaf, 4 Fixed effects: Estimate Std. Error t value (Intercept) 0.4209 0.2180 1.931
バラツキが葉で大きいそうなことがつかめる。ML法でやってみると,
> mixMLmodel<-lmer(conc~1+(1|leaf),data,REML=F) > mixMLmodel Linear mixed model fit by maximum likelihood Formula: conc ~ 1 + (1 | leaf) Data: data AIC BIC logLik deviance REMLdev 13.78 16.10 -3.889 7.779 9.243 Random effects: Groups Name Variance Std.Dev. leaf (Intercept) 0.129457 0.35980 Residual 0.052425 0.22897 Number of obs: 16, groups: leaf, 4 Fixed effects: Estimate Std. Error t value (Intercept) 0.4209 0.1888 2.229
となり,分散成分が多少低くなっている。
そして,null modelを作る。
> nullmodel<-lm(conc~1,data) > as.numeric(2*(logLik(mixMLmodel)-logLik(nullmodel))) [1] 10.35676 #対数尤度比統計量。Devianceの差でもある。 > pchisq(10.35676,1,lower=F) #それが自由度1のχ2分布に従うことを利用してp値を算出。 [1] 0.001290014
で,パラメトリックブートストラップだと
> pbst<-numeric(3000) > for(i in 1:3000){ y<-unlist(simulate(nullmodel)) bnull<-lm(y~1) bmodel<-lmer(y~1+(1|leaf),data,REML=F) pbst[i]<-as.numeric(2*(logLik(bmodel)-logLik(bnull))) } > hist(pbst)
で尤度比統計量をシミュレーションしてくれる。
p値は,さきほどの尤度比統計量がどの程度の確率で出てくる値かで求めることができる。
> mean(pbst>10.3567) [1] 0.0003333333
とかなり低いp値になる。そして標準誤差は
> sqrt(0.0003333*(1-0.0003333)/3000) [1] 0.0003332611
とかなり低い。