分组回归

时间:2018-06-26 01:41:06

标签: r group-by regression

我有一张桌子:

CityData ->

City        Price     Bathrooms      Bedrooms      Porch

Milwaukee   2300      2              3             yes
Chicago     3400      3              2             yes
Springfield 2300      1              1             no
Chicago     2390      2              1             yes

我想对每个城市(每个城市多行)进行回归,以得出每个城市的系数。我想对其他混淆变量(浴室,卧室,门廊)的价格进行回归。

我尝试了dplyr库:

library(dplyr)

fitted_models = CityData %>% 
    group_by(CityData$City) %>% 
    do(model = lm(CityData$Price ~ CityData$Bathrooms +
                  CityData$Porch + CityData$Bedrooms, data = CityData))

但是输出只是

14    lm    list
14    lm    list
14    lm    list

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的操作。这里以mtcars数据为例。

df <- mtcars
models <- df %>% group_by(cyl) %>% summarise(mod = list(lm(mpg ~ wt)))

这将为您提供一个新的变量mod,其中包含模型的所有信息。您可以将系数称为:

models$mod[[1]]$coefficients
(Intercept)          wt 
39.571196     -5.647025

您也可以使其更加复杂。

models <- df %>% group_by(cyl) %>% summarise(mod = list(lm(mpg ~ wt + hp)))
models$mod[[1]]$coefficients
(Intercept)          wt          hp 
45.83607319 -5.11506233 -0.09052672 

当然models还将仍然保留该组的信息

models$cyl
[1] 4 6 8