在 dlply 中构建具有权重的 glm 模型

Building a glm model with weights in dlply

我写了一个脚本,为每个 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 模型中添加权重 return 我: eval(expr, envir, enclos) 错误:未找到对象 'HistoryWeights'

这是一个简单的 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)
              })

有什么问题?
谢谢

在您的示例中,将 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)
              })