我使用nlme()
函数从nlme
包中拟合了一个模型。
现在,我希望模拟一些预测区间,并考虑参数不确定性。
为此,我需要提取固定效应的方差矩阵。
据我所知,有两种方法可以做到这一点:
vcov(fit)
并且
summary(fit)$varFix
这两个提供相同的矩阵。
然而,如果我检查
diag(vcov(fit))^.5
这并不等同于summary(fit)
中报告的标准误差。
我期望这两个值相同,这样想错了吗?
编辑:这里是一个代码示例:
require(nlme)
f=expression(exp(-a*t))
a=c(.5,1.5)
pts=seq(0,4,by=.1)
sim1=function(t) eval(f,list(a=a[1],t))+rnorm(1)*.1
y1=sapply(pts,sim1)
sim2=function(t) eval(f,list(a=a[2],t))+rnorm(1)*.1
y2=sapply(pts,sim2)
y=c(y1,y2)
t=c(pts,pts)
batch=factor(rep(1:2,82))
d=data.frame(t,y,batch)
nlmeFit=nlme(y~exp(-a*t),
fixed=a~1,
random=a~1|batch,
start=c(a=1),
data=d
)
vcov(nlmeFit)
summary(nlmeFit)$varFix
vcov(nlmeFit)^.5
summary(nlmeFit)
library(nlme); example(nlme); all.equal(sqrt(diag(vcov(fm2))),summary(fm2)$tTable[,"Std.Error"])
- Ben Bolker