R 分组回归

R 分组回归,r,group-by,regression,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 Chic

我有一张桌子:

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

有什么建议吗?

你可以试试这样的。这里我将以mtcars数据为例

df <- mtcars
models <- df %>% group_by(cyl) %>% summarise(mod = list(lm(mpg ~ wt)))
你也可以变得更复杂

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 

您希望每个城市有不同的截距,还是希望每个城市的卧室、浴室等有一组不同的系数?此外,为了使您的示例具有可复制性,您必须提供足够的数据来运行回归(行数多于预测数)。我希望为门廊变量使用不同的系数。从
lm(Price~City+Bathrooms+borch+Bedrooms,CityData)
开始,然后根据需要变得更复杂。另外,不要在公式或dplyr/tidy eval函数中使用
$
子集,只使用裸变量名。我不明白这个输出是什么。14是多少?是否为
lm
list
列类型?如果是这样的话,那么这些类型就是该代码的预期类型,因此您需要更清楚地解释您得到了什么以及您在寻找什么。
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$cyl
[1] 4 6 8