问题描述
我正在尝试进行多元线性回归,但所有分组变量的系数都相同
names<- rep(LETTERS[1:25],each = 20)
daysp<- runif(1:500,1,500)
startdate <-sample(seq(as.Date('1999/01/01'),as.Date('2020/01/01'),by="day"),500)
enddate<- sample(seq(as.Date('2010/01/01'),500)
class <- rep(LETTERS[1:4],each = 125)
amt<- runif(1:500,10000,500000)
2ndclass <- rep(LETTERS[5:8],each = 125)
df<-data.frame(names,daysp,startdate,enddate,class,amt,2ndclass)
已更改为因子类和第二类
fitted_models = df %>% group_by(names) %>% do(model = lm(daysp ~ startdate + enddate
+ class + 2ndclass + amt,data=df))
fitted_models$models
我该如何进行回归并为每组获取不同的系数?
解决方法
data = df
显式使用整个数据框df
,忽略任何分组。使用.
引用通过管道传输的数据,这将使do
使用组。请参阅?do
底部的示例以供参考:
## From ?do
by_cyl <- mtcars %>% group_by(cyl)
models <- by_cyl %>% do(mod = lm(mpg ~ disp,data = .))
尽管dplyr
> 1.0的版本将更喜欢使用nest_by
(也在?do
帮助页面上进行了演示):
models <- mtcars %>%
nest_by(cyl) %>%
mutate(mod = list(lm(mpg ~ disp,data = data)))
models %>% summarise(broom::tidy(mod))