我写了一个脚本,为每个Id我建立一个模型。
数据是一个data.frame,对于每个Id,我有几行,我可以为他建立一个模型。所以dlply为每个Id获取data.frame的这个子集,并为他构建一个模型。
model<- dlply(Data, "Id",
function(df) {
HistoryWeights<-1+log(length(df$Row))
model<-glm(formula = form,family = binomial("logit"),data = df,weights = HistoryWeights)
return(model)
})
问题是,如果我在没有weights
的情况下运行脚本就可以了。但是,如果我在glm模型中添加权重,这将返回给我:
eval(expr,envir,enclos)中的错误:object&#39; HistoryWeights&#39;找不到
以下是iris的一个简单示例:
Data<-iris
Data$Predicted<- ceiling(rnorm(dim(Data)[1],0,0.00001))
Data$Row<-1:nrow(Data)
form<-formula(Predicted~Sepal.Length
+Sepal.Width
+Petal.Length
+Petal.Width)
model<- dlply(Data, "Species",
function(df) {
HistoryWeights<-1+log(length(df$Row))
model<-glm(formula = form,family = binomial("logit"),data = df,weights = HistoryWeights)
return(model)
})
有什么问题?
感谢
答案 0 :(得分:3)
在您的示例中,将HistoryWeights
作为列添加到数据框中:
model<- dlply(Data, "Species",
function(df) {
df$HistoryWeights<-1+log(length(df$Row))
model<-glm(formula = form,family = binomial("logit"),data = df,weights = HistoryWeights)
return(model)
})