构建一个权重为dlply的glm模型

时间:2015-07-24 07:04:05

标签: r plyr glm

我写了一个脚本,为每个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)
              })

有什么问题?
感谢

1 个答案:

答案 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)
              })