lme与lm的R变异函数图?

时间:2017-05-16 21:56:45

标签: r correlation covariogram

如果我在包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

1 个答案:

答案 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)

enter image description here