Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R nlme:使用NA的因子名称不正确?_R_Missing Data_Nlme - Fatal编程技术网

R nlme:使用NA的因子名称不正确?

R nlme:使用NA的因子名称不正确?,r,missing-data,nlme,R,Missing Data,Nlme,基本上,我运行的nlme::lme缺少一个值。该模型非常适合na.action=na.omit,但拟合/残差/coef的名称为何似乎都移动了一行 ## 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.d

基本上,我运行的
nlme::lme
缺少一个值。该模型非常适合
na.action=na.omit
,但拟合/残差/coef的名称为何似乎都移动了一行

## 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)
##生成数据---------------------
X1=gl(2,4)
X2=gl(2,2,8)
Y=rnorm(8)
dat=数据帧(Y=Y,X1=X1,X2=X2)
dat
##缺失值-------------
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 12
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
##拟合模型-----------------------
model=nlme::lme(Y~1,random=~1 | X1/X2,data=mis.dat,na.action=na.omit)
摘要(模型)
##不知道名字-------------------
已安装(型号)
>已安装(型号)
1/1        1/1        2/1        2/1        2/2        2/2        
0.67179438 0.67179438 0.67179439 0.02855517 0.02855517 0.02855517 0.02855517 
属性(,“标签”)
[1] “拟合值”
#型号$coef$随机
#剩余(模型)

请注意拟合值的名称是如何定义的?第三个位置是否应该有一个1/2,然后名称向右移动一个位置,从而消除NA?

您发现了一个小错误。查看
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
-值而忽略了观测值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个名称。当使用
match
时,会引入NA

最终问题在于
lme
,它应该只返回7个拟合值。然而,我没有时间去找出如何解决这个问题。请随意