如果我在包nlme中使用lme函数并编写
m <- lme(y ~ Time, random = ~1|Subject)
然后写
Variogram(m, form = ~Time|Subject)
它产生的变差函没有问题。
但是,如果我使用没有随机效果的lm,
m <- lm(y ~ Time)
并写
Variogram(m, form = ~Time)
它产生
Error in Variogram.default(m, form = ~Time) :
argument "distance" is missing, with no default
发生了什么事?为什么当我适合lm时它需要一段距离,当它在lme之前不需要它时?
如何绘制变异函数而无需指定“距离”?我使用其他建模方法也有同样的问题:glm,gam,gamm等。
编辑:
您可以使用例如自己验证所有这些nlme中的BodyWeight数据。
> m <- lm(weight ~ Time, data = BodyWeight)
> Variogram(m, form =~Time)
Error in Variogram.default(m, form = ~Time) :
argument "distance" is missing, with no default
答案 0 :(得分:1)
在nlme
中,Variogram.lme
适合lme
方法函数,但lm
模型没有等效方法。
您可以按如下方式使用Variogram.default
:
library(nlme)
mod1 <- lm(weight ~ Time, data = BodyWeight)
n <- nrow(BodyWeight)
variog <- Variogram(resid(mod1), distance=dist(1:n))
head(variog)
############
variog dist
1 17.4062805 1
2 23.1229516 2
3 29.6500135 3
4 15.6848617 4
5 3.1222878 5
6 0.9818238 6
我们还可以绘制变异函数:
plot(variog)