为每个领土提取一个线性回归模型 - R

Extract for each Territory a linear regression model - R

我有以下问题。

从以下名为“R”的起始矩阵中,我想通过将两个变量“Morti_per_abitante”和“PL_per_abitante”链接在一起,为每个“Territorio”(领土)导出一个线性模型不同年龄(“Anno”)。

为此,我创建了一个名为 TT 的空 table,我可以在其中为每个区域输入线性模型的值(斜率或“Tasso”和显着性或“signficativita” )

此时我创建了一个 for 循环,它在 TT table 上工作,基于每 13 个“Territorio”中的一个将获得具有 2 个参数的模型:

for (i in 1:13){
  Ter<-TT[i:1]
  filter(R, Territorio==Ter) %>%
    Tasso[1:2]<-lm(Morti_per_abitante ~ PL_per_abitante,R)$coefficents[2]
    }

代码从插入的过滤器开始不起作用。

我该怎么做才能更正这行代码?

是否有其他方法可以为每个地区建立线性模型?

谢谢

这里有一个 dplyr + broom 的方法。我正在使用模拟数据框 R.

library(broom)
library(dplyr)

set.seed(123)

R <- data.frame(Territorio = rep(c("Lazio", "Puglia"), c(10, 5)),
                Anno = sample(2015:2020, size = 15, replace = TRUE),
                Morti_per_abitante = rnorm(15),
                PL_per_abitante = rnorm(15))


R |>
  group_by(Territorio) |>
  group_modify(~{
    tidy(lm(Morti_per_abitante ~ PL_per_abitante, data = .x))
  }) |>
  filter(term == "PL_per_abitante") |>
  rename(Tasso = estimate, Significativita = p.value) |>
  select(Territorio, Tasso, Significativita)

#> + # A tibble: 2 × 3
#> # Groups:   Territorio [2]
#>   Territorio  Tasso Significativita
#>   <chr>       <dbl>           <dbl>
#> 1 Lazio      -0.339           0.367
#> 2 Puglia      0.239           0.592