为每个领土提取一个线性回归模型 - 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
我有以下问题。
从以下名为“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