【问题标题】:nlme: incorrect factor names with NA?nlme:不正确的因子名称与 NA?
【发布时间】:2014-02-20 01:36:29
【问题描述】:

基本上,我在运行 nlme::lme 时缺少值。该模型与na.action=na.omit 拟合得很好,但是为什么拟合/残差/系数的名称似乎都移动了一行?

## Generate data ---------------------
X1=gl(2,4)
X2=gl(2,2,8)
Y=rnorm(8)
dat=data.frame(Y=Y,X1=X1,X2=X2)
dat

## missing value -------------
mis.dat=dat
mis.dat[3,"Y"]=NA
mis.dat
> mis.dat
            Y X1 X2
1 -0.06845332  1  1
2  0.89169085  1  1
3          NA  1  2
4  1.88997449  1  2
5  0.95912879  2  1
6 -0.64049400  2  1
7 -0.23354948  2  2
8 -0.66869350  2  2


## Fit model -----------------------
model=nlme::lme(Y~1,random=~1|X1/X2,data=mis.dat,na.action=na.omit)
summary(model)

## Notie the names -------------------
fitted(model)
> fitted(model)
       1/1        1/1        2/1        2/1        2/2        2/2       <NA> 
0.67179438 0.67179438 0.67179439 0.02855517 0.02855517 0.02855517 0.02855517 
attr(,"label")
[1] "Fitted values"

#model$coef$random
#resid(model)

如何注意拟合值的名称?不应该在第 3 位有 1/2,之后的名称向右移动一位,从而消除 NA?

【问题讨论】:

    标签: r missing-data nlme


    【解决方案1】:

    您发现了一个小错误。看看nlme:::fitted.lme 看看会发生什么:

    使用

    从模型中提取拟合值
    object[["fitted"]]
          fixed        X1        X2
    1 0.6014526 0.1686912 0.1686912
    2 0.6014526 0.1686912 0.1686912
    4 0.6014526 0.1686912 0.1686912
    5 0.6014526 1.0342140 1.0342140
    6 0.6014526 1.0342140 1.0342140
    7 0.6014526 1.0342140 1.0342140
    8 0.6014526 1.0342140 1.0342140
    

    请注意,即使由于缺少 y-value 而从拟合中省略了观察 3 并且不应该存在,也有 8 个拟合值。然后从

    创建名称
    object[["groups"]]
      X1  X2
    1  1 1/1
    2  1 1/1
    3  1 1/2
    4  2 2/1
    5  2 2/1
    6  2 2/2
    7  2 2/2
    

    注意只有 7 个名字。 NA 在使用 match 时被引入。

    最终问题出在lme,它应该只返回 7 个拟合值。但是,我没有时间找出如何解决此问题。欢迎随时report it

    【讨论】:

      猜你喜欢
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      相关资源
      最近更新 更多