在线性模型

时间:2016-06-22 18:10:13

标签: r

是否有可能在线性模型中评估返回不同行数的函数的结果,例如Lag()

此错误似乎表明,因为Lag为第一个值返回NA,所以行数不正确。 Lag(csv$Shame)有2行,而数据集的其余部分有3行。

> Lag(csv$Shame)
     Lag.1
[1,]    NA
[2,]     4
[3,]     5

示例:

csv<-data.frame(SelfEsteem=c(1,2,3),Shame=c(4,5,6),participant_number=c(1,1,1))
csv$laggedShame<-Lag(csv$Shame)

works<-lme(SelfEsteem~1,random=~laggedShame|participant_number,na.action=na.omit,data=csv)
fails<-lme(SelfEsteem~1,random=~Lag(Shame)|participant_number,na.action=na.omit,data=csv)

Error in lme.formula(SelfEsteem ~ 1, random = ~Lag(Shame) | participant_number,  : 
  nlminb problem, convergence error code = 1
  message = false convergence (8)
In addition: Warning message:
In matrix(unlist(value), nrow = nrow(data), dimnames = list(row.names(data),  :
  data length [4] is not a sub-multiple or multiple of the number of rows [3]

此问题与this post共享一个类似的标题,但错误完全不同

1 个答案:

答案 0 :(得分:0)

我认为是因为您实际上并未从csv data.frame中删除NA。您可以尝试在函数本身中从data.frame创建works,然后使用与works中类似的代码。我想这就是你想要的:

library(data.table)
fails<-lme(SelfEsteem~1,random=~LShame|participant_number,na.action=na.omit,data=cbind(csv,LShame=shift(csv$Shame,1L,type="lag")))