【问题标题】:R variogram plot in lme vs lm?lme vs lm中的R变异函数图?
【发布时间】:2017-05-16 21:56:45
【问题描述】:

如果我使用 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

【问题讨论】:

  • 是的,我就是这么做的。我写错了|主题。

标签: r correlation covariogram


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多