对特定变量分别进行回归

regression separately for specific variable

我正在尝试 运行 两个变量“面积”和“强度”之间的 lm/glm。

I 运行 变量之间的线性模型回归与所有行组合,并得到如下汇总结果。我想 运行 每个城市的两个变量的 lm (A/B/C/D/E)。我怎样才能 modify/loop 脚本,这样我就不必 运行 脚本 5 次,并将 r 平方值和模型结果添加到数据框中?

R1 <- lm(公式 = 面积 ~ 强度, 数据 = df1) 称呼: lm(公式=面积~强度,数据=df1)

残差: 最小值 1Q 中值 3Q 最大值 -2716.1 -1540.5 -684.3 1588.8 2686.8

系数: 估计标准。错误 t 值 Pr(>|t|) (拦截)1646.30 569.73 2.890 0.00976 ** 强度 -333.10 42.73 -7.795 3.54e-07 ***

签名。代码:0‘’0.001‘’0.01‘’0.05‘.’0.1‘’1

残差标准误差:18 个自由度上的 1790 多重 R 平方:0.7715,调整后 R 平方:0.7588 F 统计量:1 和 18 DF 上的 60.77,p 值:3.537e-07

我正在分享一种存储输出列表的方法以及一种将结果放入主数据帧的方法:

results <- list()
cities <- unique(df1$city)
for (i in 1:length(cities)){
R1 <- lm(area ~ intensity, data=df1[df1$city==cities[i],])
results[[cities[i]]] <- summary(R1) # if you want to store everything
temp_df <- data.frame(prediceted=fitted(R1))
temp_df$city <- cities[i] 
temp_df$r_square <- summary(R1)$r.squared
if(i==1) result_df <- temp_df else result_df <- rbind(result_df, 
temp_df)
}

df1 <- merge(df1, result_df, by='city')