我想创建一个列,其中包含先前分组的回归预测值。
我试过这个:
数据
city<-c("a","a","a","b","b","b","a")
gender<-c("male","female","female","male","male","female","male")
age<-c(24,25,26,78,65,34,23)
death<-c(0,0,1,1,0,0,0)
df<-data.frame(city,gender,age,death)
验证码:
df_1<-df%>%
group_by(city)%>%
glm(death~gender+age,data=df,family="poisson")%>%
mutate(death_p=predict(glm))
结果
Error in model.frame.default(formula = ., data = df, weights = death ~ :
invalid type (language) for variable '(weights)'
3条答案
按热度按时间blpfk2vs1#
1.“永远不要”在基于
df
的管道中使用df
。在任何情况下,如果数据被附加,过滤,扩充,或(如本例中)* 分组 *,重用df
不会给予你预期的结果。请使用cur_data()
。1.我们可以将模型存储为列表列。在这种情况下,因为我们没有汇总它,所以它的效率有点低,因为它会将模型的冗余副本存储在组内的每一行中,但是......我们现在可以接受这种情况。
试试这个:
您可以对
mdl
列执行其他操作,例如提取一些摘要:rta7y2nd2#
我们可以使用
do()
和一些小的改动来实现,比如在glm()函数中包含公式参数,权重可以设置为NULL:u5rb5r593#
下面是一个data.table版本
输出: