是否有可能在线性模型中评估返回不同行数的函数的结果,例如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共享一个类似的标题,但错误完全不同
答案 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")))